Defina limites seguros para a autorrecuperação
ConcluídoAutomatize ações conhecidas de recuperação com autoridade, verificação e condições de parada explícitas. Separe recuperação em runtime de alteração de software.
Publicado por TaigaComo escrevemos
Confira seu entendimentoO controlador já reiniciou um worker duas vezes. A fila continua crescendo e o banco de dados está inacessível. O que a política deve fazer?Faça o exercício
O que você vai aprender
- Diferenciar autorrecuperação de uma correção permanente do software.
- Definir uma política limitada de recuperação e verificações independentes de sucesso.
- Reconhecer quando a automação deve parar e escalonar.
Recupere uma condição conhecida
A autorrecuperação detecta automaticamente uma falha definida e tenta executar uma ação autorizada de recuperação. Reiniciar um processo com falha ou substituir uma instância não saudável são exemplos. A ação deve corresponder à falha e ao modelo de estado do serviço.
O Kubernetes pode substituir instâncias de cargas de trabalho com falha e reconciliar o estado declarado. Isso não corrige lógica defeituosa da aplicação nem toda falha de armazenamento. Recuperação de infraestrutura e correção do software precisam de verificações diferentes. Autorrecuperação no Kubernetes.
Defina o objetivo antes do mecanismo. Restaurar uma exportação significa que o trabalho elegível é concluído corretamente. Um contêiner em execução é apenas uma precondição.
Separe três tipos de alteração
| Alteração | Exemplo | Decisão necessária |
|---|---|---|
| Recuperação em runtime | Substituir um worker sem estado que falhou | Uma política de recuperação previamente aprovada pode autorizar isso |
| Correção de software | Corrigir o vazamento de memória que faz o worker parar | Revisão, testes, controles de release e verificação em produção |
| Alteração de política | Aumentar a taxa permitida de reinicializações ou o escopo de acesso | Aprovação explícita do responsável pela política |
Um agente pode propor uma correção após a recuperação. Essa proposta é uma nova alteração de software. Não deve herdar autoridade ilimitada do controlador de recuperação.
O controlador também não deve editar seus próprios critérios de sucesso quando uma verificação falhar. Caso contrário, o sistema pode relatar melhoria sem melhorar o serviço.
Escreva a política de recuperação antes de ativá-la
A política a seguir é fictícia. Seus números ilustram escolhas de projeto; não são configurações padrão recomendadas.
| Campo da política | Regra fictícia do worker de exportação |
|---|---|
| Condição de acionamento | O sinal de atividade do worker está ausente há 90 segundos e há trabalho na fila |
| Precondições | Outro worker está saudável; as verificações de dependências passam; não há suspeita de comprometimento nem de falha de integridade |
| Ação permitida | Substituir um worker usando o artefato atualmente aprovado |
| Proteção do estado | Os jobs usam armazenamento durável e uma chave de idempotência verificada |
| Limite | No máximo duas substituições em 15 minutos; nunca mais de uma por vez |
| Intervalo de espera | Esperar cinco minutos após a substituição antes de outra tentativa |
| Sucesso | Um job sintético é concluído corretamente e a fila afetada começa a diminuir |
| Parar e escalonar | Qualquer precondição falha, o limite é atingido ou o sucesso não pode ser verificado |
Use uma identidade com o menor privilégio necessário. Registre a versão da política, a evidência do acionamento, a ação, o recurso e o resultado. Ofereça um meio independente de desativar o controlador. Defina a pessoa responsável que recebe o escalonamento.
Teste caminhos de falha e a recuperação bem-sucedida
Uma nova tentativa pode repetir um efeito colateral. Um worker pode armazenar um arquivo e parar antes de confirmar o job. Verifique a idempotência antes de permitir outra execução. Consulte o exemplo de falha cloud native.
Novas tentativas também podem ampliar a sobrecarga de uma dependência. Use tentativas limitadas, tempos limite e backoff adequado. Evite novas tentativas sincronizadas em toda a frota. A AWS explica por que backoff e jitter ajudam a reduzir essa amplificação. Orientações sobre novas tentativas.
Teste a política fictícia com três casos. Um único worker parado deve se recuperar. Uma indisponibilidade do banco deve impedir substituições repetidas. Uma falha de integridade incerta deve interromper a automação e solicitar uma decisão de resposta.
Verifique também a ausência de telemetria. A falta de um sinal de atividade pode significar um worker com falha ou uma falha no caminho de coleta. O controlador precisa de evidências suficientes para sua ação, não de confiança em uma explicação de IA.
Meça se a política ajuda
Registre recuperações verificadas, tentativas malsucedidas, escalonamentos, trabalho duplicado e tempo com impacto nos usuários. Compare-os com o método operacional anterior em condições semelhantes.
Mantenha o defeito subjacente como trabalho de engenharia. Reiniciar repetidamente um processo com vazamento pode reduzir o impacto imediato enquanto o vazamento continua. Prossiga com melhoria contínua para relacionar a observação a uma correção duradoura.
Faça o exercício
Projete uma política de recuperação para o worker fictício de exportação desta lição. Especifique a condição de acionamento, exclusões, ação permitida, limite de tentativas, intervalo de espera, verificação de sucesso e responsável pelo escalonamento. Teste-a diante de uma indisponibilidade do banco e de uma falha desconhecida de integridade de dados.
Baixar planilha de exercício (Markdown)Desmarcar esta opção exclui todo o progresso salvo neste navegador.
O progresso fica neste navegador. Sem conta e sem rastreamento.
Fontes e leituras adicionais
- Kubernetes: Self-Healing ↗
- AWS Builders’ Library: Timeouts, retries, and backoff with jitter ↗
- Google SRE: Automation at Google ↗