Arquivo 1: Como o chaos engineering garante a resiliência dos seus serviços – Elder Moraes
Opinião introdutória
Até onde eu entendo, o chaos engineering foi criado pelo Netflix, porque a equipe de SRE não tem o que fazer, e acredita que instabilidade em produção é o caminho para revelar os problemas existentes. E para tanto, é necessário que o desenvolvimento seja baseado em algo diferente do modelo tradicional para o guiado a testes ou comportamento. Além disso, precisa existir outros tipos de testes (unitário, smoke, sec, integração, E2E, entre outros) antes de querer aplicar um chaos.
Introdução
É a disciplina de realizar experimentos em um sistema com o intuito de construir confiança com relação à sua capacidade de suportar condições adversas em produção.
Resiliência é a capacidade de um sistema de se adaptar a mudanças, falhas e anomalias. Graceful degradation.
Lei de Moore: a merda que tem que acontecer, vai acontecer.
Criar falhas de propósito para encontrar falhas e fraquezas
Comece pequeno!
Onde injetar o caos
Na aplicação, no cache, no banco de dados, na nuvem, na infra, na rede…
Fases
- Estágio estacionário
- Construir hipóteses
- Desenhar experimentos
- Resultados e aprendizado
- Correções
Estado estacionário
Métrica de negócio: a métrica que fala exatamente como está sendo a experiência do cliente.
Observe o comportamento da métrica do negócio durante a análise dos resultados e aprendizado.
A métrica é um medida quantitativa para avaliar, controlar e/ou selecionar.
Métrica VS Health check
O health check fala que o serviço está disponível, mas a métrica fala como ele está disponível. O health check não diz por quanto tempo a mais o serviço vai está disponível.
Hipóteses
Faça a pergunta: “E se…?”
Desenhar o experimento
Comece pequeno
O mais próximo possível da produção
Minimize o raio de ação
Tenha um meio de parar emergencialmente
Pode ser fazer algo parecido com o canary deployment: separa dois grupos da produção: um para controle e outro para o experimento. Com os loadbalancer é ainda mais fácil fazer isso.
Resultados e aprendizado
Tempo de detecção? Tempo de notificação? graceful degradation? Tempo para restabelecimento?
Correção
Melhoria contínua
Ferramentas
- Istio
- Chaos Toolkit
- Chaos Monkey
- Chaos Kong
- Kube Monkey