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 à medida que mais aplicações e dados são hospedados na nuvem, o que pode levar a mais problemas de segurança.
Uma forma de lidar com 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 nenhum propósito. Esse processo identifica possíveis problemas futuros, permitindo que as equipes de engenharia resolvam os problemas de forma proativa e os evitem no ambiente real mais adiante.
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 downtime. A Netflix aprendeu esse conceito em primeira mão quando migrou do local para a nuvem1 - ela sofreu uma falha que levou a uma interrupção de três dias na prestação de serviços em 2008.
Essa falha é anterior à sua transformação em uma operação de streaming de vídeo, o que teria tornado essa 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 do caos em seus fluxos de trabalho. Esse processo permite que ela identifique os problemas antes que eles ocorram e minimize os danos se e quando ocorrer uma falha inevitável.
A Netflix criou o Chaos Monkey2, uma ferramenta de código aberto que cria incidentes aleatórios em serviços e infraestrutura de TI com o objetivo de identificar pontos fracos que podem ser corrigidos ou resolvidos por meio de procedimentos de recuperação automática. Ela implementou o Chaos Monkey quando migrou de um data center privado para a 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 do caos.
A engenharia do 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 do site (SREs) e outros membros da equipe de DevOps a fornecer entrega contínua de serviços, evitando interrupções significativas em seus serviços. A engenharia do caos os ajuda a entender melhor suas vulnerabilidades e informa como minimizar o impacto caso ocorra uma 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 resultar na perda de milhões de dólares3 .
As organizações podem não conseguir 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.
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 adotar medidas imediatas em relação aos problemas que ocorrem por meio de experimentos. As organizações que não contam com essa observabilidade4 podem levar tempo demais para resolver os experimentos que elas criam por meio da engenharia do caos.
A engenharia do caos também é essencial para organizações que usam a nuvem, principalmente a 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 no local.
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.
Além disso, o crescimento do uso de microsserviços, que aumenta o número de hosts ou contêineres em execução em um sistema, cria desafios exclusivosque podem ser descobertos e resolvidos por meio de experimentos de caos. Ele transfere as complexidades do projeto 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 pode ajudar as organizações a melhorar a velocidade de seus pipelines de integração contínua e entrega contínua (CI/CD). Incorporar a engenharia do caos à CI/CD, como a Netflix fez6, permite que as organizações automatizem experimentos contínuos e, ao mesmo tempo, controlem seu impacto potencial.
Por fim, o fato de as organizações se conectarem cada vez mais com parceiros por meio de APIs significa que um 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, no final das contas. a capacidade 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.
Criar um processo ideal de engenharia do caos exige vários princípios para garantir que uma organização possa ter um sistema distribuído em escala.
Organizações que utilizam engenharia do caos devem decidir se é melhor usar testes do 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. Outro motivo é que o ambiente de pré-produção pode não ter as mesmas configurações do ambiente real, introduzindo, portanto, alguma variabilidade nos experimentos.
Por exemplo, um incidente em um ambiente de pré-produção pode não gerar uma resposta realista, pois não tem os mesmos níveis de tráfego que o ambiente de produção. Ele também pode não ter as mesmas configurações de segurança que esse 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 escolhem qual ambiente usar 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 downtime ou impossibilidade de acessar aquilo pelo que eles pagaram pode ter um efeito sério na satisfação do cliente, levando à perda de receita e danos à reputação. Realizar testes em sistemas e identificar soluções significa que 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 para 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 downtime. A engenharia do caos pode diminuir o tempo de inatividade7 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.
Leia sobre o que os CEOs pensam sobre a sustentabilidade em suas próprias palavras e como eles estão incorporando-a em seus negócios.
Sete tendências de negócios que esperamos que transformem o mundo nos próximos três anos, e sete apostas que vale relevantes para aproveitar.
Entenda o processo de integração de dados climáticos nas decisões financeiras da Climate Service com a tecnologia IBM.
Veja como o uso da metodologia do IBM® Garage ajudou a Kraft Heinz Company a aumentar a velocidade do produto.
Reinvente a forma como o trabalho é realizado cruzando a transformação de negócios e a tecnologia para liberar a agilidade empresarial.
Reimagine e modernize o RH com IA no centro para obter melhores resultados empresariais e liberar todo o potencial dos funcionários.
Libere o desempenho financeiro e agregue mais valor comercial com serviços completos que integram análise de dados, IA e automação em todos os processos principais.
1 Chaos Engineering: System Resiliency in Practice (link externo a ibm.com), Casey Rosenthal, Nora Jones, 2020.
2 What is Chaos Monkey? Chaos engineering explained (link externo a ibm.com), InfoWorld, 13 de maio de 2020.
3 Knight Capital Says Trading Glitch Cost It USD 440 Million (link externo a ibm.com), New York Times, 2012.
4 There Is No Resilience without Chaos (link externo a ibm.com), The New Stack, 13 de abril de 2023.
5 Incident Management in the Cloud Era (link externo a ibm.com), Constellation Research, 2023.
6 ChAP: Chaos Automation Platform (link externo a ibm.com), Blog da Netflix, 26 de julho de 2017.
7 The I&O Leader’s Guide to Chaos Engineering (link externo a ibm.com), Gartner, 28 de outubro de 2021.
IBM web domains
ibm.com, ibm.org, ibm-zcouncil.com, insights-on-business.com, jazz.net, mobilebusinessinsights.com, promontory.com, proveit.com, ptech.org, s81c.com, securityintelligence.com, skillsbuild.org, softlayer.com, storagecommunity.org, think-exchange.com, thoughtsoncloud.com, alphaevents.webcasts.com, ibm-cloud.github.io, ibmbigdatahub.com, bluemix.net, mybluemix.net, ibm.net, ibmcloud.com, galasa.dev, blueworkslive.com, swiss-quantum.ch, blueworkslive.com, cloudant.com, ibm.ie, ibm.fr, ibm.com.br, ibm.co, ibm.ca, community.watsonanalytics.com, datapower.com, skills.yourlearning.ibm.com, bluewolf.com, carbondesignsystem.com, openliberty.io