O Simian Army

Você, meu amigo da tecnologia, já ouviu falar do Simian Army? Não? Então se liga nisso…

O Simian Army (Exército Símio, em tradução livre) é um conjunto de ferramentas criados pela Netflix para que seus dias fossem mais caóticos. Exatamente, para que eles fossem mais caóticos, pois dessa forma um deploy em produção não parece tão mau assim. E, como a Netflix utiliza uma arquitetura de microserviços, isso faz todo sentido. Seguindo a filosofia de que toda falha é uma oportunidade para aprendizado e, consequentemente, uma oportunidade de aprender a se proteger para que essa falha não ocorra mais, seja rapidamente recuperada ou tenha um impacto limitado.

Já há muito tempo a Netflix migrou toda sua estrutura de datacenters para a AWS. Falar de cloud é falar de confiabilidade, escalabilidade e resiliência, principalmente este último. O sistema deve saber se recuperar de falhas, ou pelo menos não permitir que uma falha isolada evolua para num efeito dominó, e essa capacidade é o que podemos chamar de graceful degradation, que seria limitar o impacto de uma falha, em outras palavras.

É um trabalho e tanto controlar todas as variáveis para manter um sistema online e também um trabalho e tanto provocar situações para verificar sua resiliência e, sendo assim, por quê não usar uma ferramenta que automatize isso? Foi a primeira coisa que a Netflix pensou, mas o problema é que quando essa preocupação surgiu ainda não existia muita coisa — para não dizer nada — nesse sentido. Então por quê não criar? E assim surgiu o Chaos Monkey, o primeiro dos integrantes do Simian Army. Esse primeiro integrante tem o objetivo de, aleatoriamente, desabilitar instâncias em produção para que se possa certificar que esse tipo de falha não impacte o usuário. O nome é uma referência bem interessante: Imagine um macaco selvagem com uma arma solto em um datacenter. Pense no potencial destrutivo.

Daí para frente foi basicamente uma evolução do Simian Army. Seguem outros:

  • Latency Monkey propositalmente aumenta a latência em respostas dos serviços REST possibilitando testar a recuperação à indisponibilidade dos serviços.
  • Conformity Monkey limpa tudo aquilo que não está dentro das melhores práticas, como por exemplo uma instância que não tenha o auto-scaling configurado.
  • Doctor Monkey constantemente faz health checks nas instâncias para detectar problemas de memória, throughput elevado, CPU alto etc.
  • Janitor Monkey simplesmente procura por recursos não utilizados e os desliga.
  • Security Monkey é uma extensão do Conformity Monkey. Enquanto este se preocupa com o auto-scaling, por exemplo, o Security Monkey se preocupa com problemas de segurança, como instâncias sem configuração de security group e, ao encontrar, desliga essas instâncias que poderiam ser a origem de problemas. Inclusive checa os certificados SSL e DRM com o objetivo de confirmar se estão válidos e se não estão próximos de expirar.
  • 10–18 Monkey checa configuração e problemas em runtime de instâncias que estejam servindo usuários em diferentes regiões, com diferentes idiomas e charsets.
  • Chaos Gorilla é uma evolução do Chaos Monkey que, pois dentro de uma região, desabilita zonas para verificar se o sistema continua funcionando sem impacto para o usuário.
  • Chaos Kong foi o último símio liberado e é uma evolução do Chaos Gorilla. Ele destrói uma região inteira da AWS para se certificar de que haverá um redirecionamento do fluxo para outra evitando assim que o usuário seja impactado.

A Netflix tem feito algumas coisas bem interessantes e o mais legal é que tem disponibilizado para a comunidade sem pedir nada em troca, mas obviamente quem puder contribuir será sempre bem vindo. Aliás vale uma conferida no Netflix OSS (@NetflixOSS).

O projeto está disponível no GitHub para quem quiser ver em mais detalhes.

Agora é “unleash monkeys” e se preparar pra diversão!

Há braços!

One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.