Entender a engenharia e a resiliência do caos

Antes de começar a usar o Azure Chaos Studio, convém entender os principais conceitos de engenharia de confiabilidade de sites que estão sendo aplicados.

O que é resiliência?

Nunca foi tão fácil criar aplicativos distribuídos em larga escala. A infraestrutura é hospedada na nuvem e o suporte à linguagem de programação é diverso. Também há muitos componentes e serviços hospedados e de software livre para criar.

Infelizmente, não há nenhuma garantia de confiabilidade para esses componentes e dependências subjacentes ou para os sistemas baseados neles. A infraestrutura pode ficar offline e interrupções no serviço podem ocorrer a qualquer momento. Pequenas interrupções em uma área podem se amplificar e ter efeitos colaterais duradouros em outra.

Aplicativos e serviços devem planejar e acomodar problemas como:

  • Interrupções de serviço.
  • Interrupções em dependências conhecidas e desconhecidas.
  • Carga inesperada repentina.
  • Latências em todo o sistema.

Os aplicativos e serviços devem ser projetados para lidar com falhas e ser fortalecidos contra interrupções.

Os aplicativos e serviços que lidam com estresses e problemas com tranquilidade são chamados de resilientes. A confiabilidade de cada componente individual é algo desejável, mas a resiliência é uma propriedade de todo o sistema. A resiliência do sistema de ponta a ponta deve ser validada em um ambiente integrado e similar ao ambiente de produção, com as condições e a carga que serão enfrentadas na produção.

O que são a engenharia de caos e a injeção de falhas?

  • Engenharia do caos: a prática de submeter aplicativos e serviços a estresses e falhas do mundo real. O objetivo é criar e validar a resiliência para condições não confiáveis e dependências ausentes.
  • Injeção de falha: O ato de inserir um erro em um sistema. Você pode usar falhas diferentes, como latência de rede ou perda de acesso ao armazenamento, para direcionar componentes do sistema. Você pode criar cenários dos quais um aplicativo ou serviço deve ser capaz de lidar ou se recuperar.

Um experimento de caos é a aplicação de falhas individualmente, em paralelo ou sequencialmente em relação a um ou mais recursos ou dependências de assinatura. A meta é monitorar o comportamento e a integridade do sistema para que você possa agir sobre quaisquer problemas que surjam.

Um experimento pode representar um cenário do mundo real, como uma falha de energia do datacenter ou a latência de rede para um servidor DNS. Ele também pode ser usado para simular condições de borda que podem ocorrer. Exemplos são compras da Black Friday ou quando os ingressos para shows estão à venda para uma banda popular.