Compreender a engenharia do caos e a resiliência

Antes de começar a usar o Azure Chaos Studio, é útil entender os principais conceitos de engenharia de confiabilidade do site que estão sendo aplicados.

O que é resiliência?

Nunca foi tão fácil criar aplicações distribuídas em grande escala. A infraestrutura é hospedada na nuvem e o suporte à linguagem de programação é diversificado. Há também muitos componentes e serviços de código aberto e hospedados para construir.

Infelizmente, não há garantia de confiabilidade para esses componentes subjacentes e dependências, ou para sistemas construídos sobre eles. A infraestrutura pode ficar offline e interrupções ou interrupções de serviço podem ocorrer a qualquer momento. Pequenas interrupções em uma área podem ser ampliadas e ter efeitos colaterais de longa data em outra.

Os 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 protegidos contra interrupções.

Aplicativos e serviços que lidam com estresses e problemas graciosamente são resilientes. A fiabilidade dos componentes individuais é boa, 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, semelhante à produção, com as condições e a carga enfrentadas na produção.

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

  • Engenharia do caos: A prática de submeter aplicações e serviços a tensões e falhas do mundo real. O objetivo é construir e validar a resiliência a condições não confiáveis e dependências ausentes.
  • Injeção de falha: O ato de introduzir 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 que um aplicativo ou serviço deve ser capaz de manipular ou recuperar.

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

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