Utilizando a Engenharia do Caos para gerar Soluções Resilientes

Todas as empresas estão percebendo os benefícios da transformação digital. A adoção de soluções em nuvem, por exemplo, oferece alta escalabilidade e infinito potencial de crescimento rápido, algo que qualquer executivo deseja para seu negócio. Entretanto, essa vantagem pode se tornar uma desvantagem se houver falhas durantes os processos e os danos começarem a acontecer, também, em escala. Mas a boa notícia é que é possível nos debruçarmos sobre as possibilidades de haver caos para, aliados a conceitos da engenharia, pensarmos em ideias e validações para a prevenção de eventualidades negativas na execução e desenvolvimento de soluções.

Mas como?

Atualmente, durante o processo de arquitetura de soluções, principalmente daquelas que são em nuvem, é extremamente usual a inclusão de recursos e técnicas que visam garantir a resiliência das aplicações contra possíveis falhas no desenho final. Por definição, resiliência é a capacidade de um sistema enfrentar falhas e, mesmo assim, continuar funcionando. Neste caso, a principal meta é retornar um aplicativo para um estado totalmente funcional após uma falha.

Imagine que exista uma forma de submeter um aplicativo ou uma solução às falhas que podem ocorrer no mundo real e ao mesmo tempo validar as condições de resiliência. Essa prática é conhecida como Engenharia do Caos e seu propósito é testar a resiliência dos sistemas ao conduzir experimentos que injetam falhas simulando condições reais.

O conceito deste método é similar ao de uma vacina: injetar partes do vírus inofensivas que irão fornecer imunidade ao sistema, sem causar nenhum mal.

Entre os principais benefícios desse método está a identificação de pontos únicos de falhas na arquitetura, com experimentos de abordagem proativa que resultam na identificação de erros, mas também dos insumos para sua solução.

A análise dos efeitos de falhas no mundo real é outro grande benefício. Por meio de simulações controladas, podemos entender o comportamento de uma solução em situações específicas e, com isso, prever possíveis crises.

Mesmo que estejamos falando de microsserviços, por exemplo, existe uma grande complexidade de dependência dos sistemas para que o resultado seja alcançado. Na maioria das vezes, conseguimos isolar um sistema para garantir sua resiliência. Entretanto, compreender a propagação de falhas entre os componentes exige um grande conhecimento de todos os comportamentos e os experimentos da Engenharia do Caos proporcionarão uma melhor compreensão dos cenários.

Esta abordagem também é uma maneira de garantir a previsibilidade das soluções, gerando, inclusive, de uma forma proativa, a implementação da cultura de aceitação do erro como parte do processo de aprendizado.

Recentemente, a Microsoft anunciou a versão pública do Azure Chaos Studio, uma plataforma de experimentação de Engenharia de Caos totalmente gerenciada para acelerar a descoberta de situações singulares de falhas.

Nos desenhos de arquitetura (em teoria, pelo menos) conseguimos criar ambientes extremamente resilientes. Porém, a verdade é que só conseguiremos verificar essa eficiência numa possível falha. Com a ferramenta Azure Chaos Studio podemos criar várias simulações de cenários com alto tráfego de clientes, máquinas com 100% de processamento, falta de memória, serviços que são interrompidos ou afetados por problemas, entre outras tantas. Esses experimentos irão fornecer resultados e análises que poderão auxiliar em estratégias e ações para mitigar ou validar a confiabilidade das soluções facilmente.

Através da utilização da plataforma Azure Chaos Studio é possível personalizar experimentos de forma simples e fácil, assim como gerenciamos pastas e arquivos. Ainda, a interface intuitiva auxilia na organização e fornece uma biblioteca (em contínua expansão) de cenários de falhas.

Em cada passo do experimento, você pode utilizar dois tipos de abordagem de injeção de falhas, que podem ser a instalação de agente dentro de máquina virtual ou chamadas diretas de serviços, como por exemplo as APIs. Outra facilidade é que cada experimento é armazenado no formato JSON, o que facilita muito a administração, compreensão e atualização sistêmica.

Todo experimento poderá ser acoplado numa esteira de CI/CD para validação de testes de integração ou estresse e a adição de falhas durante esse processo pode auxiliar na localização de problemas que usualmente não seriam encontrados pelos testes.

Outra vantagem no momento é que até abril/2022 a oferta de execução dos experimentos dentro do Azure Chaos será gratuita e, após essa data, será cobrado com base na duração das suas ações de experimento.

Podemos entender que é fundamental para a qualidade das nossas soluções que as possíveis falhas ou comportamentos inesperados possam ser identificados e resolvidos antes mesmo que se manifestem. O investimento para garantir a resiliência de uma arquitetura será a entrega de valor com eficiência e eficácia para os clientes.

Quanto mais escalável e complexa a solução, maior será a responsabilidade em mantê-la estável independentemente das condições externas que possam afetá-la. A Engenharia do Caos auxiliará na garantia da previsibilidade, de uma forma proativa, melhorando a confiabilidade das soluções.

 

Referências

[Azure Chaos Studio]

https://docs.microsoft.com/en-us/azure/logic-apps/logic-apps-overview