Pular para o conteúdo

Conceitos

Hipótese de estado estável e experimentos de caos

Intuição

É como um simulado de incêndio num prédio que já está cheio de gente: em vez de confiar na planta e torcer para que as saídas de emergência funcionem, você provoca um problema de verdade, de forma controlada, e confere se o dia a dia continua normal para quem está lá dentro. Antes do teste você decide o que significa 'normal' (por exemplo, quantas pessoas entram e saem por minuto) e, depois, compara. Se nada mudou, você ganha confiança; se mudou, descobriu uma fraqueza antes que um incêndio real a revelasse.

Como funciona

O paper de Basiri e colegas (Netflix) parte da ideia de que a especificação funcional de um sistema distribuído em produção é incompleta, então o sistema é tratado como um todo e observado na sua fronteira, pelo comportamento típico de métricas ao longo do tempo, o regime estável (steady state). O experimento segue quatro passos: definir o regime estável como uma saída mensurável que indica comportamento normal; formular a hipótese de que ele se mantém tanto no grupo de controle quanto no experimental; introduzir variáveis que reflitam eventos reais (servidor que cai, disco que falha, conexão de rede cortada); e tentar refutar a hipótese procurando diferença entre os dois grupos. No Netflix, a métrica é o SPS (stream starts per second), que varia de forma lenta e previsível ao longo do dia; as hipóteses se apoiam em métricas visíveis na fronteira como o SPS, enquanto métricas finas (CPU, tempo de consulta ao banco) servem só para checar a saúde do sistema e podem encerrar o teste mais cedo. Daí saem quatro princípios: construir a hipótese em torno do regime estável, variar eventos do mundo real (não só o caminho feliz), executar em produção e automatizar para rodar continuamente, já que o sistema muda o tempo todo e resultados antigos perdem validade. Para limitar o risco, o evento pode ser simulado em vez de injetado de fato, ou aplicado só a um subconjunto de usuários; o engenheiro equilibra realismo do evento e risco de dano. No exemplo do serviço de bookmarks, uma pequena porcentagem de usuários é dividida em controle e experimental, o FIT faz falhar as requisições ao serviço de bookmarks do grupo experimental, e espera-se SPS aproximadamente igual nos dois grupos.

Na prática

No Netflix, o Chaos Monkey encerra aleatoriamente instâncias de VM de produção em horário comercial, de forma contínua em dias úteis, o que fez todos os engenheiros projetarem serviços assumindo essa perda; o FIT faz requisições entre serviços falharem para verificar degradação graciosa; e os exercícios Chaos Kong, uma vez por mês, simulam a falha de uma região inteira da Amazon EC2. Você escolheria essa abordagem quando o sistema é distribuído demais para ser reproduzido num teste ponta a ponta fora de produção e há fallbacks que precisam ser comprovados, começando por serviços úteis mas não críticos e por poucos usuários. Os próprios autores ressaltam que a prática ainda está na infância e que as ferramentas do Netflix são internas e acopladas à sua infraestrutura.

Use em um desenho

Pratique na escola de System Design os casos que dependem deste conceito.