O que é Chaos Engineering?
Chaos engineering é a prática disciplinada de injetar falhas deliberadamente em um sistema para descobrir fraquezas antes que elas causem interrupções reais.
Sistemas distribuídos falham de maneiras surpreendentes, e você raramente entende sua resiliência até que ela seja testada. Chaos engineering a testa de propósito, em experimentos controlados, para que você encontre as lacunas nos seus próprios termos, em vez de durante um incidente real no pior momento possível.
A ideia central
Chaos engineering trata a resiliência como algo a ser verificado experimentalmente. Em vez de assumir que o sistema tolera um nó com falha ou uma dependência lenta, você provoca intencionalmente essa condição e observa se o sistema lida com ela. As surpresas que você encontra são fraquezas que você pode corrigir de forma proativa.
Executando um experimento
Um experimento de chaos começa com uma hipótese sobre o comportamento em estado estável - "se uma instância morrer, os usuários não veem erros". Você então injeta a falha, observa se a hipótese se mantém e aprende com qualquer desvio. É o método científico aplicado à resiliência de sistemas.
Injeções de falha comuns
- Encerrar instâncias ou containers aleatoriamente.
- Adicionar latência de rede ou descartar pacotes.
- Esgotar CPU, memória ou disco.
- Tornar uma dependência lenta ou indisponível.
Raio de impacto e segurança
Chaos engineering responsável limita o raio de impacto: comece pequeno, em um ambiente controlado ou com uma fração mínima do tráfego, e sempre tenha um botão de aborto. O objetivo é aprender, não causar uma interrupção real, então os experimentos são delimitados para falhar com segurança.
Por que quebrar as coisas de propósito
Exercitar falhas deliberadamente gera confiança genuína nos mecanismos de recuperação e mantém as habilidades de resposta afiadas. Isso valida que failovers, retries e runbooks realmente funcionam, em vez de descobrir durante um incidente real que a rede de segurança nunca foi conectada corretamente.
Principais conclusões
- Chaos engineering injeta falhas controladas para encontrar fraquezas antes que elas causem problemas.
- Os experimentos começam a partir de uma hipótese sobre o estado estável e a testam.
- Limite o raio de impacto e mantenha um botão de aborto - o objetivo é aprender, não causar interrupções.