fbpx
O que é Chaos Engineering
Voiced by Amazon Polly

Todos os sistemas estão sujeitos a falhas. Solucionar essas falhas antes que elas causem danos maiores para o seu negócio é o cenário ideal. Para isso, você precisa entender como o seu sistema se comporta e reage a determinados estímulos. É com esse propósito que a Engenharia do Caos (ou Chaos Engineering, em inglês) se popularizou como método entre as empresas mais inovadoras do mundo.

Apesar da promessa de “quebrar sistemas”, a Engenharia do Caos é um campo de estudos que exige controle e observação. Ela requer a elaboração de uma hipótese, experimentação e análise dos resultados.

Seu nome faz referência à Teoria do Caos, segundo a qual pequenas alterações nas condições iniciais de sistemas dinâmicos podem causar resultados imprevisíveis a longo prazo.

Tratando-se de sistemas computacionais altamente complexos e de larga escala, essa imprevisibilidade diante dos eventos do mundo real é um desafio. Ela abrange não só o comportamento dos sistemas, mas também as suas consequências para os negócios.

Assim, a Engenharia do Caos tem como propósito testar a resiliência dos sistemas ao conduzir experimentos que injetam falhas, simulando condições reais. Os resultados desses experimentos podem conduzir à implementação de soluções. A lógica por trás desse método é semelhante a de uma vacina: injetar agentes, que em quantidades maiores poderiam causar mal, para criar imunidade.

Benefícios

Remover problemas de design e identificar pontos únicos de falhas

Experimentos de Engenharia do Caos levam a ações de melhoria no sistema, sendo uma abordagem proativa. Dessa forma, os experimentos levam não só à identificação de falhas, mas também à sua remoção.

Praticar planos de contingência e resposta a incidentes

Como o seu sistema deve responder a determinados eventos? Como você tem certeza que o seu sistema se comportará da forma esperada? Experimentos de Engenharia do Caos podem simular incidentes e testar os seus planos de contingência.

Entender os efeitos de falhas no mundo real

Não se sabe exatamente como um sistema irá se comportar em situações específicas do mundo real. Ao simular cenários, a Engenharia do Caos pode ajudar a entender o comportamento do sistema e a evitar que os seus efeitos sejam maiores.

Melhorar a observabilidade do sistema

Como os experimentos exigem a implementação de mecanismos de monitoramento e alertas, eles melhoram a observabilidade do seu sistema.

Testar mecanismos de alerta e monitoramento

Se os seus programas de alerta e monitoramento não são acionados com os experimentos de Engenharia do Caos, a probabilidade de que eles falhem em situações reais é alta. Os experimentos são também uma forma de testá-los.

Compreender a propagação de falhas entre os componentes do sistema

Em sistemas complexos e de larga escala, não há como saber com propriedade como uma falha pode influenciar o comportamento de outros componentes. A Engenharia do Caos proporciona uma melhor compreensão do seu sistema.

Por onde começar

Para implementar a Engenharia do Caos, é necessário que o sistema tenha um mínimo de resiliência. Isso porque o objetivo da abordagem não é interromper o seu funcionamento, tampouco comprovar uma hipótese que provavelmente vai prejudicar a experiência do usuário final. Além disso, contar com um excelente programa de monitoramento e alerta é essencial.

É importante observar também que começar a implementar a Engenharia do Caos com a pergunta “qual o problema com o sistema?” não é a abordagem mais indicada. Ao invés, procure perguntar-se “qual parte do sistema é inadequada e não evitou que esse problema acontecesse?”.

Dito isto, existem alguns passos que podem guiar a sua jornada.

1- Determine um Steady State

Como o seu sistema se comporta normalmente? Antes de começar a rodar experimentos de Engenharia do Caos, defina métricas que mensuram não só os dados de atributos do sistema, mas também a experiência do usuário. Para ser considerado steady state, o comportamento observado deve ter padrões previsíveis. Com a injeção de falhas, o comportamento deve variar significativamente.

A definição de um steady state ajuda a determinar o retorno ao comportamento normal de um sistema após os experimentos, além do impacto deles.

A Netflix, por exemplo, criou uma métrica simples para medir o comportamento normal do seu sistema: o SPS ou Starts Per Seconds. A companhia percebeu que existe um padrão na quantidade de starts (vezes que o usuário iniciou um vídeo na plataforma) por segundo e que, caso ocorra algum evento que prejudique o desempenho do sistema, o número de starts sofre alterações. Essa métrica também está diretamente relacionada ao que é mais crucial para a Netflix: a permanência de seus usuários na plataforma.

2- Formule uma hipótese

O objetivo é testar a previsibilidade e resiliência do seu sistema. Então, crie uma hipótese com a premissa de que o steady state vai permanecer durante e após a realização dos seus experimentos.

A sua hipótese deve ser pautada na realidade. Não busque criar hipóteses que causem disrupções ou que o seu sistema não vá aguentar.

3- Tente provar que a hipótese está errada

Planeje experimentos que simulem situações reais. Você não precisa necessariamente rodar esses experimentos em produção. Na verdade, só faça isso quando já tiver uma abordagem madura e funcional de Engenharia do Caos na sua empresa. Muitas vezes o entusiasmo de injetar caos em produção é um risco em si mesmo.

Por isso, comece com ambientes de teste e, a partir deles, explore outras partes do seu sistema.

Começar pequeno é a melhor abordagem quando se trata de Engenharia do Caos. Dessa forma, crie uma hipótese e execute experimentos em partes do sistema com um impacto menor.

A medida do impacto potencial das falhas no sistema é chamada de blast radius. Aumente o blast radius à medida que você vai ganhando confiança no seu sistema e na capacidade do seu time em solucionar as falhas.

4- Analise os resultados e aprenda com os seus experimentos

Os seus experimentos vão gerar muitas informações. Mas só é possível verificar e aprender com elas quando o comportamento do sistema for mensurado. Além disso, os experimentos de Engenharia do Caos são uma ótima oportunidade para testar os seus programas de monitoramento e alerta.
A Amazon usa uma forma de análise chamada COE (Correction-of-Errors ou, em português, documento de Correção de Erros). Após cada experimento, os seus responsáveis descrevem o que aconteceu, qual o impacto do experimento para os clientes, por que o erro aconteceu, o que aprendeu e como irá prevenir que o erro aconteça novamente.

Essa última pergunta é essencial porque cada experimento deve resultar em uma lista de ações que solucionem as falhas apresentadas pelo sistema ao lidar com as simulações.

Onde aplicar Engenharia do Caos

Apesar de ser uma abordagem que conversa muito bem com arquiteturas serverless, de microsserviços, integração contínua e outros métodos e tecnologias da cultura DevOps, a Engenharia do Caos pode ser aplicada em qualquer ambiente, inclusive em monolitos on-premises. Ela abrange cinco categorias de injeção de falhas: recursos; redes e dependências; aplicação, processos e serviços; infraestrutura; e pessoas.

Mas antes de começar a implementar Engenharia do Caos, garanta a observabilidade do seu sistema. Além disso, procure introduzir a abordagem na sua empresa com hackathons e game days. Essas atividades ajudam a mudar a atitude do seu time em relação a falhas, que geralmente só são endereçadas de forma reativa.

A Engenharia do Caos é uma forma de garantir a previsibilidade do seu sistema. Para isso, o seu time deve agir de maneira proativa e ter uma cultura de aceitação do erro como parte do processo de aprendizado.

Entre em Contato