DevOps do Agile: Descubra o Chaos Monkey


28/08/2015


Como utilizar uma falha para assegurar a resiliência do sistema

Werner Vogels, da AWS, segue um princípio simples: "Tudo falha, o tempo todo". Se você se prepara continuamente para a falha em todos os seus recursos gerenciados — seja ele o seu hardware ou software — é mais provável que tenha êxito. Este paradoxo é a ideia principal das várias ferramentas que desativam ou finalizam os recursos de produção de forma aleatória para testar e assegurar que os mecanismos automáticos de recuperação façam parte da sua infraestrutura.

A ferramenta mais notável é o Chaos Monkey (consulte Recursos para esta e outras ferramentas), desenvolvido pela equipe técnica da Netflix e originado de forma aberta no início deste ano. Neste artigo, apresentei os princípios e as etapas para a incorporação do Chaos Monkey à sua infraestrutura a fim de assegurar que ele possa lidar com as falhas inevitáveis que ocorrerão.

Ferramentas como o Chaos Monkey são o resultado de uma evolução na direção de ambientes efêmeros causada pela comoditização da infraestrutura, virtualização e computação em nuvem. Uma infraestrutura — com suas máquinas físicas, comutações de rede, firewall, balanceadores de carga, servidores de software e outros recursos — costumava ser algo que uma equipe de engenheiros configurava manualmente uma só vez. Em seguida, eles monitoravam seu uso, continuamente executando ajustes manuais para modificar a configuração, melhorar o desempenho e executar outras atividades.

Isso não é mais considerado uma boa prática e é simplesmente impossível fazê-lo para qualquer infraestrutura de escala não trivial. Ferramentas como o Chaos Monkey aplicam monitoramento, diagnósticos, randomização e interrupção à infraestrutura para assegurar que os engenheiros apliquem automação para limitar o impacto enfrentado pelos usuários quando grandes problemas ocorrem.

Buscar e destruir

Uma lista de etapas de alto nível que compõe o processo de criação de um ambiente para o teste contínuo de uma infraestrutura inclui:

  • A ativação de instâncias: Inicialize algumas instâncias de cálculo.
  • A criação de uma infraestrutura autônoma: Configure uma infraestrutura que ative novas instâncias (com base no mesmo modelo) quando ela identificar instâncias em não funcionamento
  • A aplicação de testes automáticos para assegurar a recuperação automática: Execute os testes durante algumas horas quando os engenheiros estiverem prontos para reagir e corrigir.
  • O aprendizado e a prevenção: Quando as falhas ocorrerem, reaja e evite que elas ocorram novamente.

De várias formas, é a implementação técnica de uma organização realmente comprometida com a melhoria contínua ou kaizen (consulte Recursos).

Em resumo, essa nova geração de ferramentas de resiliência e infraestrutura de acompanhamento possui os seguintes recursos:

  • Monitoramento: Os processos daemon são continuamente executados para diagnosticar erros.
  • Diagnóstico: As ferramentas de diagnóstico são executadas como parte do monitoramento do sistema.
  • Interrupção: A infraestrutura é intencionalmente interrompida ao encerrar as instâncias e outras atividades de interrupção.
  • Randomização: Para evitar resultados e comportamento esperados, a interrupção é aleatoriamente aplicada à infraestrutura.
  • Infraestrutura de autocura: Embora não faça parte da ferramenta de resiliência, o comportamento resultante esperado é que as equipes continuem a aplicar e melhorar a infraestrutura autônoma capaz de se recuperar de interrupções de serviço sem os usuários sequer notarem.
O Chaos Monkey

A Netflix utiliza bastante uma infraestrutura em nuvem para transmitir filmes aos usuários, juntamente com outra funcionalidade. Em julho de 2012, foi relatado que os usuários da Netflix transmitiram mais de 1 bilhão de horas em junho de 2012. Em outras palavras, a Netflix não é um usuário trivial da nuvem; ela utiliza-a em grande escala.

Um Guia de Iniciação Rápida do GitHub criado pela equipe de tecnologia da Netflix descreve as etapas a serem seguidas para colocar o Chaos Monkey em funcionamento. A lista a seguir oferece mais algumas informações sobre as ferramentas utilizadas pelo Chaos Monkey. Certifique-se de executar os comandos descritos no guia para remover qualquer recurso não utilizado, caso contrário, haverá cobrança contínua pelo uso.

  • Ajuste de Escala Automático: O Ajuste de Escala Automático é um recurso específico dos Serviços da Web da Amazon que possibilita o dimensionamento da capacidade de cálculo para cima e para baixo com base na demanda — por meio de regras definidas por você. Embora ele seja um recurso específico do AWS, é possível criar esse tipo de ambiente escalável com sua infraestrutura em nuvem— pública ou privada— . O Ajuste de Escala Automático possui dois componentes importantes: uma configuração de ativação e um
  • Grupo de Ajuste de Escala Automático. Uma configuração de ativação define como uma instância é ativada em um Grupo de Ajuste de Escala Automática. Um Grupo de Ajuste de Escala Automática é uma coleção de instâncias às quais aplicar uma configuração de ativação particular.
  • SimpleDB: O SimpleDB é um banco de dados da NoSQL que pode ser utilizado para persistir dados. É preciso definir um domínio do SimpleDB. Ele é utilizado pelo Chaos Monkey para armazenar o estado.
  • Gradle: O Gradle é uma ferramenta de desenvolvimento. Ela é utilizada para desenvolver o Chaos Monkey e iniciar o contêiner do aplicativo Jetty.
  • Arquivo de propriedades: É preciso modificar um arquivo simianarmy.properties com credenciais e outras informações configuráveis.
  • Jetty: O servidor na memória do Jetty executa o Chaos Monkey para interromper sua infraestrutura de forma aleatória.
Um Simian Army

O Chaos Monkey é a primeira entrada do Simian Army da equipe técnica da Netflix. Na Tabela 1, há uma lista de outras ferramentas propostas pela Netflix para constituir o Simian Army

image

Artigo original: http://www.ibm.com/developerworks/br/library/a-devops4/index.html

Leonardo Matarazzo

Profissional da área de TI há mais de 18 anos, com experiência em grandes Projetos no Brasil e exterior. Membro de diversas comunidades Open Source e evangelista em Cloud e DevOps.

Compartilhe
Back to top