As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Aumentar a resiliência e melhorar a experiência do cliente usando a engenharia do caos no AWS
Laurent Domb, tecnólogo chefe de finanças federais da Amazon Web Services
Abril de 2025 (histórico do documento)
A engenharia do caos é a disciplina de fazer experiências em um aplicativo para criar confiança na capacidade da sua organização e do aplicativo de suportar condições turbulentas na produção. É uma abordagem proativa à resiliência, com o objetivo de verificar se seu aplicativo e sua organização são capazes de absorver, se adaptar e, eventualmente, se recuperar das deficiências do serviço, introduzindo falhas controladas entre pessoas, processos e tecnologias. A intenção também é identificar e eliminar pontos fracos antes que eles possam causar interrupções ou outras interrupções na produção.
Na Amazon, entendemos que a falha é inevitável em sistemas distribuídos, a ponto de funcionar apesar da presença de falhas ser um modo normal de operação. Como as interações entre os serviços estão fadadas a falhar, você precisa entender como seus serviços reagem durante vários modos de falha e criar serviços que sejam resilientes às principais vulnerabilidades, como falhas de dependência, tempestades de novas tentativas, zonas de disponibilidade prejudicadas e esgotamento dos recursos do host.
Vamos dar o exemplo de uma nova tempestade. Uma falha localizada em um cliente pode afetar vários serviços de forma significativa. Isso é comumente chamado de efeito borboleta. Uma tempestade de novas tentativas é uma manifestação do efeito borboleta, em que uma dependência com falha faz com que clientes e clientes desses clientes tentem novamente a operação que falhou, levando a um crescimento exponencial no tráfego. Os serviços ficam sobrecarregados porque precisam responder ao tráfego regular, além de repetir o tráfego, enquanto lidam com uma degradação no desempenho.
A engenharia do caos surgiu como uma resposta à crescente complexidade dos sistemas distribuídos. É uma abordagem multidisciplinar que combina princípios da teoria do caos, pensamento sistêmico e engenharia para projetar e gerenciar sistemas complexos que são resilientes a eventos e comportamentos inesperados. Em sua essência, a engenharia do caos se preocupa em entender e gerenciar o comportamento de sistemas complexos sob condições de incerteza e imprevisibilidade. Ele reconhece que as abordagens tradicionais de engenharia, que dependem da previsão e controle de resultados, geralmente são insuficientes para lidar com a natureza complexa e dinâmica dos sistemas distribuídos. À medida que esses sistemas crescem, eles geralmente excedem o escopo de compreensão de qualquer indivíduo.
A engenharia do caos fornece conceitos, técnicas e ferramentas para injetar falhas intencionalmente nos sistemas e descobrir pontos fracos antes que eles se manifestem na produção. Essa abordagem proativa permite que as organizações criem a confiança de que seus sistemas funcionarão sob condições estressantes. Embora a engenharia do caos ainda seja uma prática em evolução, ela representa uma mudança fundamental para projetar, gerenciar e operar sistemas de computação modernos para serem resilientes diante da crescente complexidade e interconexão.
As seções a seguir deste guia discutem os benefícios da engenharia do caos, explicam como conduzir experimentos de engenharia do caos e descrevem as abordagens que você pode adotar para implementar a engenharia do caos em grande escala em sua organização. Também estão incluídos exemplos de documentos de planejamento e resultados de experimentos que você pode usar como modelos para seus experimentos de engenharia do caos.
A próxima seção explora como as características da engenharia do caos diferem dos testes de resiliência tradicionais, como testes unitários, de fumaça ou de integração.