DevOps

Implementando Chaos Engineering na AWS

Conteúdo

Chaos Engineering é uma abordagem que busca criar um plano para o inesperado. Essa prática, ainda pouco utilizada, tem como objetivo avaliar a capacidade de um workload de suportar condições adversas de maneira controlada, simulando cenários da vida real.

Desmistificando a Ideia de “Quebrar a Produção”

Muitos associam a Engenharia do Caos a interrupções descontroladas em produção. No entanto, essa percepção é equivocada.

A Engenharia do Caos não é “quebrar a produção”, mas sim uma abordagem disciplinada para simular falhas em ambientes seguros. Os experimentos são planejados cuidadosamente e os resultados analisados para identificar vulnerabilidades e implementar melhorias. Essa prática ajuda equipes de DevOps e SREs a:

  • Reagir: Adotar medidas corretivas eficazes em caso de falhas.
  • Mitigar: Reduzir o impacto de eventos inesperados.
  • Antecipar: Prevenir problemas antes que ocorram.

Compreender as falhas, sejam elas de código ou infraestrutura, é crucial para evitar catástrofes em produção. Como bem define Laurent Domb, Chaos Engineering é “um mecanismo para revelar os ‘conhecidos-desconhecidos’ (coisas que estamos cientes, mas não entendemos completamente) em nossos ambientes ou ‘desconhecidos-desconhecidos’ (coisas das quais não estamos cientes, nem entendemos completamente)” (fonte: Chaos Engineering in the cloud | AWS Architecture Blog). 

Vantagens do Chaos Engineering

A Engenharia do Caos oferece uma série de vantagens para as equipes e organizações que a implementam, contribuindo para a construção de sistemas mais resilientes e confiáveis. Veja alguns dos principais benefícios:

  • Compreensão profunda do impacto de falhas: simular falhas em um ambiente controlado permite entender como cada componente do sistema se comporta em situações adversas. Isso possibilita identificar gargalos, dependências ocultas e pontos fracos na arquitetura. 
  • Melhoria da observabilidade: ao analisar as reações do sistema durante os experimentos de Chaos Engineering, você identifica quais métricas são mais relevantes para monitorar a saúde da sua aplicação e obtém insights valiosos para aprimorar o sistema de monitoramento como um todo. 
  • Criação de planos de contingência eficazes: com base nos resultados dos experimentos, você pode desenvolver planos de contingência mais robustos e eficientes, preparando a equipe para lidar com diferentes cenários de falha. 
  • Aumento da confiança na resiliência do sistema: a confiança na capacidade do sistema de suportar falhas aumenta, reduzindo o medo de interrupções inesperadas e proporcionando maior tranquilidade para a equipe e para os usuários. 
  • Redução de custos: ao identificar e corrigir vulnerabilidades antecipadamente, você previne falhas em produção que podem gerar perdas financeiras e danos à reputação da empresa. 
  • Cultura de aprendizado e colaboração: a prática da Engenharia do Caos promove uma cultura de aprendizado contínuo e colaboração entre as equipes, incentivando a comunicação e o trabalho em conjunto para solucionar problemas. 
  • Inovação e melhoria contínua: ao desafiar constantemente o sistema, a Engenharia do Caos impulsiona a inovação e a busca por soluções mais resilientes, estimulando a melhoria contínua da arquitetura e dos processos. 

Chaos Engineering na AWS

Ao aplicar Chaos Engineering em ambientes de nuvem, é essencial entender o modelo de responsabilidade compartilhada da AWS:

  • A AWS é responsável pela resiliência da infraestrutura da nuvem.
  • Você é responsável pela resiliência dos recursos e serviços utilizados dentro da nuvem.

Uma ferramenta central para essa prática é o AWS Fault Injection Simulator (AWS FIS), projetado para testar como seus workloads reagem a eventos adversos.

AWS Fault Injection Simulator (FIS)

Tela inicial do AWS Resislience Hub onde você pode encontrar o AWS Fault Injection Simulator para aplicação de Chaos Engineering
Tela inicial do AWS Resilience Hub. O FIS é uma das ferramentas que faz parte do AWS Resilience Hub, que por sua vez tem o propósito de centralizar ações relacionadas a resiliência de aplicações na AWS.

O AWS FIS é uma ferramenta baseada nos princípios da Engenharia do Caos. Ele cria experimentos em recursos reais para entender e melhorar a resiliência de suas cargas de trabalho.

Vale ressaltar que o AWS FIS cria eventos reais e aplica eles aos seus recursos reais. Portanto, a recomendação é que seja feito um planejamento de execução, e que se utilize um ambiente de pré-produção. 

Componentes Principais:

Para usar o FIS você cria experimentos utilizando os modelos de experimentos, onde você definirá as ações, o alvo as condições de parada.  

  • Ação: Define o que o AWS FIS fará durante o experimento (ex.: degradar desempenho da CPU).
  • Alvo: Determina o recurso que será afetado (ex.: instâncias EC2).
  • Condições de Parada: Gatilhos para interromper o experimento, geralmente monitorados pelo CloudWatch.

Exemplos de Ações no AWS FIS

O AWS FIS oferece uma variedade de ações para simular diferentes tipos de falhas. Aqui estão alguns exemplos:

  • Instâncias EC2: Simular interrupção, perda de conectividade ou degradação do desempenho.
  • Serviços AWS: Testar falhas em Amazon S3, DynamoDB ou Kinesis.
  • Erros em Aplicações: Injetar latência, simular erros de API ou corromper dados em trânsito.

Métricas de Sucesso

Definir métricas é essencial para avaliar os resultados dos experimentos. Algumas métricas importantes incluem:

  • Latência: Tempo de resposta das requisições.
  • Taxa de Erro: Percentual de requisições com falha.
  • Disponibilidade: Tempo em que o sistema permaneceu operacional.
  • Throughput: Transações processadas por unidade de tempo.

No esquema abaixo, você consegue visualizar uma demonstração da ação do AWS FIS. 

Diagrama de como o Fault Injection Simulator atua em conjunto de outros serviços AWS
Esquema de como o AWS Fault Injection Simulator se integra com demais serviços AWS para a execução de experimentos. Fonte: Chaos Engineering in the cloud | AWS Architecture Blog

Implementando Chaos Engineering de Forma Gradual

A implementação do Chaos Engineering pode ser gradual. Comece com experimentos simples e controlados em ambientes de teste. À medida que sua equipe ganha experiência e confiança, aumente a complexidade e o escopo dos experimentos, avançando para ambientes de pré-produção e, eventualmente, produção. 

  1. Comece Simples: realize experimentos pequenos em ambientes de teste.
  2. Aumente a Complexidade: expanda para ambientes de pré-produção conforme ganha experiência.
  3. Monitore e Ajuste: use os resultados para aprimorar sua infraestrutura.

Conclusão

A Engenharia do Caos é uma ferramenta poderosa para construir sistemas resilientes na AWS. Com o AWS FIS, você pode simular falhas de forma controlada, identificar vulnerabilidades e fortalecer sua infraestrutura. Ao adotar essa prática, você garante que seus sistemas estejam preparados para enfrentar o inesperado e oferecer a melhor experiência para seus usuários. 

Lembre-se: 

  • Comece com experimentos simples e controlados. 
  • Defina métricas claras para medir o sucesso. 
  • Utilize o AWS FIS para simular falhas e coletar dados. 
  • Analise os resultados e implemente melhorias. 
  • Promova uma cultura de aprendizado e colaboração. 

Ao seguir essas dicas, você estará no caminho certo para dominar a arte do Chaos Engineering e construir sistemas mais resilientes e confiáveis na AWS. 

E você, já utiliza Chaos Engineering na AWS? Compartilhe suas experiências e dúvidas nos comentários! 

Compartilhe este conteúdo:

Respostas de 3

  1. Ótimo texto e bem explicativo sobre o que é e para que serve a Chaos Engineering (ou engenharia do caos hehe) Obrigado pela explicação!

  2. Texto muito bom, você escreve extremamente bem. Eu nem conhecia esse tipo de abordagem, muito interessante! Eu tenho um pouco de medo de usar a AWS kkkk mas aparentemente é um assunto que você domina.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Antonio Augusto | DevOps Engineer | AWS Cloud Especialist | DBA | Linux

Apaixonado por tecnologia e dedicado a construir soluções que simplificam o desenvolvimento e impulsionam o projetos.

Vamos Trabalhar juntos
Vamos Trabalhar juntos

Vamos manter contato