Explore as principais ferramentas de engenharia do caos conhecidas por seus recursos de teste de resiliência, injeção de falhas e avaliação de estabilidade do sistema para identificar e abordar proativamente as fraquezas em sistemas distribuídos.
Engenharia do Caos é uma disciplina que promove a eficiência e a resiliência do sistema induzindo intencionalmente falhas sistêmicas para identificar e mitigar potenciais fraquezas. À medida que os sistemas se tornam mais complexos, garantir que eles possam suportar falhas inesperadas e condições incomuns é uma parte crítica do desenvolvimento de software moderno e da administração de sistemas.
As ferramentas de Engenharia do Caos permitem que administradores de sistemas e equipes de desenvolvimento experimentem de forma segura e sistemática, replicando potenciais desafios e problemas no ambiente de produção. Elas permitem que as equipes entendam como seu sistema se comporta sob estresse, gerenciem respostas a incidentes e garantam a resiliência do sistema.
Ferramentas de Engenharia do Caos são projetadas orquestrando testes que deliberadamente introduzem falhas em sistemas, observando como o sistema responde e então usando essas informações para melhorar o sistema. Isso pode incluir travamentos, latência e falhas de rede. Análises e relatórios pós-incidente também são aspectos-chave dessas ferramentas, permitindo que as equipes aprendam e melhorem com os experimentos.
À medida que a indústria evolui, muitas ferramentas e provedores de software surgiram no mercado, cada um com ofertas distintas e conjuntos de recursos variados. Este guia explorará as principais ferramentas de Chaos Engineering disponíveis no mercado com base em nossas avaliações técnicas, pesquisa da indústria e feedback do cliente.
1 – AWS Fault Injection Service
A Amazon Web Services (AWS) fornece plataformas de computação em nuvem e APIs para uma gama diversificada de clientes, oferecendo preços variáveis, pay-per-use. Entre suas muitas soluções está o AWS Fault Injection Service (FIS), integrado ao AWS Resilience Hub. O FIS foi projetado para otimizar a resiliência e o desempenho do aplicativo por meio de experimentos de injeção de falhas.
O Fault Injection Service capacita equipes de TI a identificar gargalos de desempenho ou outras fraquezas ignoradas por testes de software convencionais. O serviço permite que os usuários estabeleçam condições específicas para cessar um experimento ou reverter para o estado anterior ao experimento. Com a FIS Scenario Library, configurar e executar experimentos controlados leva minutos. O FIS oferece condições de falha rastreáveis do mundo real para insights enriquecidos sobre o desempenho de diferentes recursos. Seus recursos se estendem à execução de uma “simulação de dia de jogo”, onde padrões de falha anteriores ou fraquezas conhecidas podem ser simulados para monitorar o desempenho do sistema. O FIS pode ser perfeitamente integrado ao pipeline de entrega, permitindo testes contínuos dos impactos das ações de falha.
Além disso, o AWS Fault Injection Service pode executar o estresse da CPU em uma instância, avaliando como os aplicativos gerenciam o estresse da CPU para garantir que a utilização da CPU não exceda os limites especificados.
2 – Chaos Monkey
O Chaos Monkey da Netflix é uma ferramenta de software de código aberto projetada para avaliar a força e a robustez de seus sistemas operacionais. Esta ferramenta opera criando falhas deliberadamente em um ambiente de produção para testar a resiliência. Ao submeter frequentemente os engenheiros a interrupções do sistema, eles são encorajados a criar serviços mais duráveis.
O Chaos Monkey pode interromper intermitentemente as operações de instâncias de máquinas virtuais e contêineres dentro do seu ambiente de produção. Ele é totalmente integrado ao Spinnaker, a plataforma de entrega contínua da Netflix, e é obrigatório gerenciar seus aplicativos por meio do Spinnaker para utilizar o Chaos Monkey para encerramento de instância. Ele é compatível com qualquer backend suportado pelo Spinnaker (AWS, Google Compute Engine, Azure, Kubernetes, Cloud Foundry) e comprovadamente funciona com AWS, GCE e Kubernetes especificamente. O Chaos Monkey é uma das ferramentas inaugurais de engenharia do caos e foi a primeira a ser de código aberto, dando início ao movimento.
Os recursos desta ferramenta incluem localizar gargalos do sistema para minimizar perturbações em ambientes de produção, testar a disponibilidade do aplicativo e a resiliência em um nível de infraestrutura, agendar testes durante períodos de tempo especificados e facilitar o monitoramento conveniente. Como uma ferramenta de código aberto, o Chaos Monkey é gratuito e fornece uma função essencial ao conduzir ataques imprevisíveis e contínuos em seu sistema.
3 – Gremlin Reliability Score
Gremlin é uma plataforma de gerenciamento de confiabilidade projetada para auxiliar equipes de engenharia de alta velocidade a estabelecer e automatizar a confiabilidade em suas operações sem prejudicar a entrega de software. Seu produto, o Reliability Score, fornece um padrão claro para confiabilidade. O Gremlin também apresenta uma gama automatizada de ferramentas de gerenciamento de confiabilidade projetadas para fácil integração e aprimoramento da confiabilidade em todo o ciclo de vida do software sem causar atrasos.
O Gremlin se destaca como uma solução de confiabilidade exclusiva criada para organizações de tecnologia modernas de nível empresarial, visando atender às demandas de disponibilidade do usuário. Ele oferece experimentos personalizados de Engenharia do Caos, testes de confiabilidade pré-fabricados e GameDays, todos combinados em uma plataforma que prioriza a segurança e proteção de nível empresarial. A plataforma auxilia na identificação e priorização dos riscos mais significativos à disponibilidade, facilitando a comunicação entre as equipes, impulsionando a ação e integrando-se perfeitamente com suas ferramentas de CI/CD e observabilidade por meio de programas de teste automatizados e repetíveis e relatórios de risco acionáveis.
A Gremlin oferece melhoria contínua de confiabilidade, resiliência e disponibilidade com pontuações de confiabilidade padronizadas. Seus painéis abrangentes e recursos de relatórios permitem o rastreamento e o aprimoramento de sua confiabilidade ao longo do tempo, dando provas tangíveis de seus resultados. Ele foi projetado para fornecer um novo nível de garantia para aqueles que dependem de seus serviços de software.
4 – Litmus
Litmus é uma plataforma de engenharia de caos de código aberto que facilita a identificação de vulnerabilidades de infraestruturas potenciais e possíveis interrupções ao administrar testes de caos de forma regulamentada. Esta plataforma é fácil de usar, reflete práticas modernas de engenharia de caos e é avançada por meio de esforços colaborativos da comunidade. É uma plataforma para conduzir engenharia de caos em infraestrutura e aplicativos nativos da nuvem.
Esta plataforma capacita desenvolvedores e SREs a orquestrar e examinar o caos em seus ambientes. O Litmus oferece o ChaosHub, que acomoda a maioria dos experimentos de caos essenciais para um início rápido na Engenharia do Caos. Esses experimentos são completamente testados, altamente ajustáveis e declarativos. O Litmus também inclui um design para hipóteses de estado estacionário a serem estabelecidas e verificadas usando sondas Litmus, auxiliando os usuários a definir cenários de caos abrangentes. A plataforma fornece Observabilidade do Caos, exportando métricas e eventos do Prometheus que quantificam o impacto do caos em aplicativos ou infraestrutura em tempo real.
O Litmus também oferece uma solução Multi-Tenant para o Kubernetes, empregando namespaces como ambientes totalmente gerenciados para desenvolvedores individuais. No geral, o Litmus se integra a outras ferramentas para fornecer uma plataforma para gerenciar o caos de forma declarativa, permitindo que desenvolvedores do Kubernetes e SREs descubram fraquezas em seus aplicativos e infraestrutura.
5 – Proofdock Chaos Platform
A Proofdock é uma empresa de engenharia de software que fornece uma Plataforma de Engenharia do Caos para Azure e Azure DevOps. Seu objetivo é promover práticas de engenharia do caos, para melhorar o desempenho e a estabilidade dos sistemas de software. Os principais recursos da Plataforma de Engenharia do Caos da Proofdock giram em torno de infraestrutura de teste e chamada de estresse, permitindo que os desenvolvedores de software exponham fraquezas e as tratem adequadamente.
A plataforma fornece uma Interface Gráfica de Usuário (GUI) amigável ao usuário que permite a criação perfeita de cenários de ataque. Esses ataques podem ter como alvo certos recursos e aplicativos, simulando condições do mundo real, como alto estresse de CPU, queima de IO e introdução de latência de rede. Além dos ataques de recursos do Azure, a plataforma da Proofdock facilita os ataques em nível de aplicativo. Isso inclui induzir erros ou atrasos no tratamento de solicitações e habilitar condições para minimizar potencialmente o raio de dano de um ataque. Ela incentiva a engenharia do caos no nível do aplicativo por meio da integração do Chaos Middleware.
Ao utilizar os recursos inerentes do Azure, os usuários ganham acesso de controle aos recursos do Azure e podem executar seus ataques por meio do Azure Pipelines. Além disso, a plataforma da Proofdock não armazena segredos fora do seu ambiente nem requer a instalação de software adicional, minimizando assim a intrusão e aumentando a segurança no seu ambiente de nuvem.
6 – Simoorg
Simoorg é um framework de indução de falhas projetado para ser poderoso e amigável ao usuário, adequado para uma ampla gama de aplicações. Ele é desenvolvido pelo LinkedIn. O framework se destaca devido à sua ampla adaptabilidade e principais recursos.
Esses recursos incluem falhas personalizadas, permitindo que os usuários desenvolvam seus próprios cenários e scripts de reversão específicos para seu cluster exclusivo, como falhas de E/S, picos de tráfego, reinicialização normal e corrupção de dados. Ele também oferece scripts básicos de falha, como desligamento não normal e reinicialização normal. O Simoorg oferece suporte a agendamento determinístico e não determinístico, permitindo que as falhas sejam cronometradas em uma ordem específica ou aleatoriamente dentro de um determinado período de tempo. Os usuários podem definir restrições, como o número de hosts afetados por vez, o intervalo mínimo entre falhas e a duração máxima de uma falha. Uma opção de verificação de integridade está disponível para avaliar o cluster antes de cada falha. Além disso, o Simoorg inclui registro exaustivo para rastreamento abrangente.
Como é escrito em Python, o Simoorg é operável em vários sistemas operacionais. A arquitetura plugável do framework permite personalização notável e suporta requisitos específicos de serviço. O Simoorg fornece classes padrão junto com o pacote para esses componentes configuráveis.
7 – Linkedin
A Steadybit é uma empresa que oferece uma solução focada em Engenharia do Caos, apresentando uma ferramenta robusta para empresas melhorarem a confiabilidade de seus cenários de sistemas. O produto da empresa pode ser instalado como uma solução SaaS ou on-prem, que pode ser integrada ao seu fluxo de trabalho de desenvolvimento e teste com facilidade.
O Steadybit apresenta um Experiment Editor, auxiliando na criação e controle de experimentos para sua jornada de Chaos Engineering, complementado com recursos como seleção avançada de alvos, extensões para novos ataques ou verificações e a capacidade de importar/exportar experimentos usando JSON ou YAML. Seu recurso de visualização de paisagem do sistema permite que você entenda e documente suas dependências e relacionamentos de software, descobrindo automaticamente todos os alvos, identificando assim um ponto de partida ideal para sua implementação de Chaos Engineering. O software também permite que você identifique armadilhas comuns de arquitetura, bem como limite e controle o caos introduzido em seu sistema.
A plataforma permite que você divida seu sistema em ambientes separados e atribua permissões específicas a usuários e equipes. Para maior segurança, você pode integrar o sistema com seu provedor SAML ou por meio de uma instalação local com seu provedor OIDC. Ele também se integra ao seu pipeline de CI por meio de sua API, ação GitHub ou CLI, tornando a verificação de resiliência uma parte rotineira de seus trabalhos de construção ou implantação.