A engenharia do caos consiste na indução intencional e controlada de falhas no ambiente de produção ou pré-produção para entender seu impacto e planejar uma melhor postura de defesa e estratégia de manutenção para incidentes.
A cada dia abre-se uma nova oportunidade para a ocorrência de falhas de uma aplicação ou infraestrutura crítica de uma organização, o que pode ameaçar sua capacidade de prestar serviços aos clientes. As causas das falhas são problemas variados, como violações de segurança, configurações incorretas ou interrupções no serviço. A probabilidade de erros ou interrupções aumenta com a hospedagem de mais aplicações e dados na nuvem, o que pode levar a mais problemas de segurança.
Uma forma de lidar com as interrupções é a engenharia do caos. Não se trata de um processo aleatório em que os engenheiros encerram instâncias ou serviços ou fazem com que os sistemas falhem sem propósito algum. Esse processo identifica possíveis problemas futuros, permitindo que as equipes de engenharia solucionem proativamente e evitem tais problemas posteriormente no ambiente de produção.
A engenharia do caos é importante, pois eventuais erros ou interrupções podem desacelerar o impulso de uma organização, que gastará tempo tentando descobrir rapidamente uma solução para minimizar o tempo de inatividade. A Netflix sentiu isso na pele quando migrou do local para a nuvem1 (link externo ao site ibm.com); em 2008, a empresa sofreu uma queda que levou a uma interrupção de três dias na prestação do serviço. Isso ocorreu antes de sua conversão em operadora de streaming de vídeo, o que teria tornado a interrupção exponencialmente mais cara. Consequentemente, a Netflix decidiu que faria todo o possível para minimizar as interrupções e começou a introduzir a engenharia de caos em seus fluxos de trabalho. Com isso, eles conseguem identificar os problemas antes que ocorram e minimizar os danos em caso de uma falha inevitável.
A Netflix criou o Chaos Monkey2(link externo ao site ibm.com), uma ferramenta de código aberto que cria incidentes aleatórios em serviços de TI e infraestrutura. Seu objetivo é identificar fragilidades que possam ser corrigidas ou abordadas com procedimentos de recuperação automática durante a migração de um data center privado para o Amazon Web Services (AWS) em resposta à falta de confiabilidade da nuvem. Muitas organizações agora usam o Chaos Monkey para executar seus testes de engenharia de caos.
A engenharia de caos é uma defesa importante contra falhas de infraestrutura, interrupções ou componentes ausentes no ambiente de produção de uma organização. Ela ajuda engenheiros de confiabilidade local (SREs) e outros membros da equipe de DevOps a proporcionar entrega contínua de serviços, evitando interrupções significativas, compreendendo melhor as vulnerabilidades e sabendo como minimizar o impacto em caso de interrupção.
Até mesmo um pequeno problema no código pode ter um efeito catastrófico no ambiente geral de produção, considerando-se as diferentes dependências dos programas. Por exemplo, um erro no sistema de software de transações de uma empresa de serviços financeiros pode levar à perda de milhões de dólares3 (link externo ao site ibm.com). Talvez as organizações não possam evitar todos os incidentes de TI, mas podem minimizar os danos usando o gerenciamento do caos para entender os cenários prováveis e as melhores soluções possíveis.
O IBM Instana Observability oferece a todos em toda a empresa acesso amigável aos dados desejados com o contexto necessário para fornecer prevenção e correção de problemas rapidamente.
Assine a newsletter da IBM
As organizações com alta resiliência, maturidade digital e alta observabilidade por meio de dashboards e outras ferramentas devem adotar a engenharia de caos, pois podem tomar medidas imediatas em relação aos problemas que ocorrem por meio de testes. As organizações que não contam com essa observabilidade4 (link externo ao site ibm.com) podem levar muito tempo para resolver os testes que eles criam por meio da engenharia do caos.
A engenharia do caos também é essencial para organizações que usam a nuvem, sobretudo nuvem pública e aplicativos nativos da nuvem. A nuvem pública traz possíveis problemas de interrupção que exigem coordenação com o provedor de nuvem, o que cria uma abordagem diferente em relação ao enfrentamento de problemas locais.
As empresas que usam a nuvem ainda costumam abordar incidentes de TI sem considerar como a nuvem e o software como serviço (SaaS) afetam esses incidentes de forma diferente, de acordo com a Constellation Research5 (link externo ao site ibm.com).
Além disso, o crescimento do uso de microsserviços, que aumenta a quantidade de hosts ou contêineres em execução em um sistema, cria desafios únicos (link externo ao site ibm.com) que podem ser descobertos e resolvidos por meio de testes do caos. Ele transfere as complexidades do design do código para as operações do sistema, o que não elimina as complexidades, mas permite maior automação.
A engenharia do caos também ajuda as organizações a aumentar a velocidade de seus pipelines de integração contínua e entrega contínua (CI/CD). A incorporação da engenharia de caos à CI/CD, tal como foi feito pela Netflix6 (link externo ao site ibm.com), permite que as organizações automatizem testes contínuos e controlem seu possível impacto.
Por fim, como as organizações se conectam cada vez mais a parceiros por meio de APIs, um eventual problema em seus sistemas pode ter um impacto indireto em outras organizações.
A implementação da engenharia do caos ajuda as organizações a entender os pontos fracos de sua arquitetura e corrigi-los, criando a possibilidade de prever falhas futuras. Uma engenharia do caos bem-sucedida ajuda as organizações a minimizar falhas técnicas de modo que não haja qualquer impacto significativo sobre o cliente. Permite também a criação de arquiteturas mais fortes e resilientes de sistemas complexos. Quando uma organização decide adotar a engenharia do caos, a próxima etapa é determinar se ela será executada no ambiente de produção ou pré-produção.
As equipes de DevOps contam com várias opções para realizar testes de engenharia do caos e testar diversos processos do sistema.
A criação do processo ideal de engenharia do caos exige vários princípios para garantir que uma organização tenha um sistema distribuído em escala.
Organizações que utilizam engenharia do caos devem decidir se é melhor usar testes de caos em seus ambientes de produção ou pré-produção. Há várias razões pelas quais a engenharia do caos é mais benéfica em ambientes de produção. Ambientes de produção fornecem o cenário mais preciso para entender como um incidente afeta a experiência do cliente. Outra razão é que o ambiente de pré-produção pode não ter exatamente as mesmas configurações do ambiente de produção, o que cria certa variabilidade nos testes.
Por exemplo, um incidente em um ambiente de pré-produção talvez não crie uma resposta realista, pois não tem os mesmos níveis de tráfego que o ambiente de produção. Também pode não ter as mesmas configurações de segurança que aquele ambiente.
Algumas organizações temem causar problemas intencionalmente em seu local de produção, por isso realizam os testes no local de pré-produção ou desenvolvimento. Isso garante que eventuais problemas não afetem a experiência do cliente no modo de produção . Para mitigar esse problema, algumas organizações começam em ambientes de pré-produção para entender o processo antes de migrar para o ambiente de produção.
As organizações escolherão o ambiente a ser usado com base em sua tolerância ao risco. Em última análise, a engenharia do caos visa testar problemas reais em grande escala. É por isso que os ambientes de produção fornecem a imagem mais precisa do que está acontecendo e do que precisa ser corrigido.
A engenharia do caos traz vários benefícios importantes às organizações.
Os clientes têm grandes expectativas sobre a disponibilidade dos serviços que contratam das empresas. Qualquer tempo de inatividade ou impossibilidade de acessar aquilo que eles pagaram pode ter sérios efeitos na satisfação do cliente, levando à perda de receitas e danos à reputação. Com a realização de testes nos sistemas e identificação das soluções, há menos risco de que um sistema fique fora do ar por um tempo significativo.
As interrupções podem ser decorrentes de código incorreto, problemas nos servidores ou ameaças externas. Estas últimas podem ocorrer mesmo quando há excelentes práticas de segurança. A engenharia do caos ajuda a identificar problemas que podem ser explorados, para que as organizações possam introduzir patches e correções de bugs (link externo ao site ibm.com) e manter seus serviços seguros.
A engenharia do caos permite que as organizações criem um blueprint mais fundamentado sobre como lidar com problemas que ocorrerão no futuro. Organizações que adotam a engenharia de caos têm estratégias específicas para muitos incidentes, permitindo reparo mais rápido e menos tempo de inatividade. A engenharia do caos pode diminuir o tempo de inatividade7 (link externo ao site ibm.com) em até 20%.
Os testes de engenharia do caos identificam como um sistema aloca recursos. A introdução dos testes demonstra como o sistema lida com cargas, mostrando onde os gargalos estão ou provavelmente ocorrerão.
A engenharia do caos ajuda as equipes a criar maior resiliência e flexibilidade do sistema em seus softwares. Assim, as organizações podem abordar a codificação de novos softwares e soluções de forma mais inteligente, pois sabem como o sistema atual lida com os problemas.
Tenha o contexto necessário para resolver incidentes mais rápido com a solução de observabilidade da IBM.
Otimize o uso e o custo do software
Saiba como a Inteligência Artificial para Operações de TI (AIOps) utiliza dados e aprendizado de máquina para aprimorar e automatizar a gestão de serviços de TI.
Preveja e evite problemas de desempenho antes que eles afetem seus negócios com o gerenciamento de desempenho de aplicações
As operações de TI e o AIOps supervisionam e automatizam o gerenciamento, a entrega e o suporte dos serviços de TI em toda a organização
O gerenciamento de serviços de TI é como uma organização garante que seus serviços de TI funcionem da maneira necessária para os usuários e os negócios
Automatize tarefas de operações de TI, acelere a entrega de software e minimize os riscos de TI com engenharia de confiabilidade local
A automação inteligente combina IA e tecnologias de automação, permitindo a automação de tarefas de nível inferior na sua empresa
1 Engenharia do caos: resiliência do sistema na prática(link externo ao site ibm.com) Casey Rosenthal, Nora Jones, 2020
2 What is Chaos Monkey? Chaos engineering explained, (link externo ao site ibm.com) InfoWorld, 13 de maio de 2020
3 Knight Capital Says Trading Glitch Cost It $440 Million, (link externo ao site ibm.com) New York Times, 2012
4 There Is No Resilience without Chaos, The New Stack, (link externo ao site ibm.com) 13 de abril de 2023
5 Incident Management in the Cloud Era, (link externo ao site ibm.com) Constellation Research, 2023
6 ChAP: Chaos Automation Platform, (link externo ao site ibm.com) Blog da Netflix, 26 de julho de 2017
7 The I&O Leader’s Guide to Chaos Engineering, (link externo ao site ibm.com) Gartner, 28 de outubro de 2021