Desenvolvimento e Operações (DevOps) do Agile: Descubra o Chaos Monkey

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

Em que situação seria uma boa ideia tentar, de forma aleatória e intencional, finalizar partes do seu sistema de software — incluindo o hardware no qual ele é executado? E quanto a: quanto mais cedo e mais frequente, melhor? Nesta parte da série DevOps do Agile o especialista em DevOps, Paul Duvall, descreve abordagens para a criação de um Chaos Monkey (como tem sido denominado pela Netflix) a fim de assegurar que sua infraestrutura de produção possa se recuperar de falhas inevitáveis do sistema.

Paul Duvall, CTO, Stelligent

Paul DuvallPaul Duvall é CTO da Stelligent. Palestrante de destaque em várias conferências líderes de softwares, ele trabalhou em praticamente todas as funções em projetos de software: desenvolvedor, gerente de projeto, arquiteto e testador. É o principal autor de Continuous Integration: Improving Software Quality and Reducing Risk (Addison-Wesley, 2007) e ganhador do Jolt Award de 2008. Também é autor de Startup@Cloud e DevOps in the Cloud LiveLessons (Pearson Education, junho de 2012). Além disso, contribuiu para vários outros livros. Paul criou a série Automation for the people , de 20 artigos, no developerWorks. É apaixonado por oferecer softwares de alta qualidade aos usuários de forma cada vez mais rápida e quase sempre por meio de entrega contínua e da nuvem. Leia seu blog em Stelligent.com.



16/Nov/2012

Sobre esta série

Os desenvolvedores podem aprender muito com as operações e elas, por sua vez, podem aprender muito com os desenvolvedores. Esta série de artigos é dedicada a explorar os usos práticos da aplicação de uma mentalidade de operações no desenvolvimento e vice-versa — e da consideração de produtos de software como entidades holísticas que podem ser entregues com mais agilidade e frequência.

Conforme mencionado no artigo introdutório desta série, o CTO da Amazon.com, Werner Vogels, segue um princípio simples: "Tudo falha, o tempo todo". Geralmente, afirmo que, quando se trata de softwares, nunca se deve pressupor nada. 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 (discutidos na parte anterior desta série) 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 (consulte o portal da IBM sobre computação autônoma em Recursos).
  • 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.

Por que testar a infraestrutura na produção?

Alguns argumentam que a interrupção intencional de uma infraestrutura deve ser realizada somente em ambientes de não produção nunca na produção. O Chaos Monkey deliberadamente destrói os recursos em ambientes de produção em um momento do dia em que grande parte dos engenheiros pode corrigir quaisquer erros que ocorrerem. Além disso, nada se compara a encontrar e corrigir problemas em ambientes reais.

A base para uma infraestrutura continuamente testada e de autocura é a convicção de que:

  • Uma infraestrutura falhará.
  • É preciso testar essas falhas na produção, quando os engenheiros estiverem disponíveis.
  • Quando a falha ocorrer novamente, sua infraestrutura deve se recuperar automaticamente dela, sem que os usuários sequer a notem.

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 (consulte o "Guia de Iniciação Rápida do Chaos Monkey" em Recursos) 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 (consulte Recursos):

Tabela 1. Um simian army
NomeDescrição
Chaos GorillaSimula indisponibilidade de toda uma zona de disponibilidade
Conformity MonkeyEncerra instâncias que não aderem às melhores práticas
Doctor MonkeyExecuta verificações de funcionamento (como CPU)
Janitor MonkeyProcura por recursos não utilizados e os exclui
Latency MonkeyCria atrasos artificiais na comunicação entre o cliente e o servidor
Security MonkeyEncontra vulnerabilidades de segurança, como grupos de segurança não configurados de forma adequada

Estas são apenas algumas ideias. As possibilidades para outras formas de aplicar uma combinação de monitoramento, diagnósticos, testes e destruição intencional em ambientes de produção baseados na nuvem são infinitas.


Liberte a fúria

Envolva-se

Uma comunidade de transformação do Agile oferece novidades, discussões e treinamento para ajudar você e a sua organização a desenvolverem uma base de princípios de desenvolvimento do agile.

Neste artigo, mostramos como é possível realmente começar a criar uma infraestrutura autônoma capaz de se autocurar com a ajuda de ferramentas, como o Chaos Monkey, e de um ambiente de nuvem.

No próximo artigo, falaremos sobre a infraestrutura orientada a testes. Nela, mostraremos como aplicar técnicas de desenvolvimento orientadas a testes — comumente utilizadas por desenvolvedores para o código do aplicativo — para a sua infraestrutura, utilizando ferramentas como o Cucumber.

Recursos

Aprender

Obter produtos e tecnologias

  • Simian Army: O software livre da Netflix. O Chaos Monkey é uma entrada do que será um conjunto de ferramentas de software livre.
  • Bees with machine guns: Um utilitário para o armamento (criação) de vários bees (microinstâncias de EC2) para atacar (teste de carga) alvos (aplicativos da web).
  • IBM Tivoli Provisioning Manager: O Tivoli Provisioning Manager possibilita uma infraestrutura dinâmica automatizando o gerenciamento de servidores físicos, servidores virtuais, softwares, armazenamento e redes.
  • IBM Tivoli System Automation for Multiplatforms: O Tivoli System Automation for Multiplatforms oferece alta disponibilidade e automação para aplicativos corporativos e serviços de TI.
  • Avalie os produtos IBM da maneira que for melhor para você: faça download da versão de teste de um produto, avalie um produto online, use-o em um ambiente de nuvem ou passe algumas horas na Sandbox da SOA aprendendo a implementar Arquitetura Orientada a Serviços de modo eficiente.

Discutir

  • Participe da comunidade do developerWorks. Entre em contato com outros usuários do developerWorks, enquanto explora os blogs, fóruns, grupos e wikis orientados ao desenvolvedor.
  • A comunidade de transformação do Agile oferece novidades, discussões e treinamento para ajudar você e a sua organização a desenvolverem uma base de princípios de desenvolvimento do agile.

Comentários

developerWorks: Conecte-se

Los campos obligatorios están marcados con un asterisco (*).


Precisa de um ID IBM?
Esqueceu seu ID IBM?


Esqueceu sua senha?
Alterar sua senha

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

 


A primeira vez que você entrar no developerWorks, um perfil é criado para você. Informações no seu perfil (seu nome, país / região, e nome da empresa) é apresentado ao público e vai acompanhar qualquer conteúdo que você postar, a menos que você opte por esconder o nome da empresa. Você pode atualizar sua conta IBM a qualquer momento.

Todas as informações enviadas são seguras.

Elija su nombre para mostrar



Ao se conectar ao developerWorks pela primeira vez, é criado um perfil para você e é necessário selecionar um nome de exibição. O nome de exibição acompanhará o conteúdo que você postar no developerWorks.

Escolha um nome de exibição de 3 - 31 caracteres. Seu nome de exibição deve ser exclusivo na comunidade do developerWorks e não deve ser o seu endereço de email por motivo de privacidade.

Los campos obligatorios están marcados con un asterisco (*).

(Escolha um nome de exibição de 3 - 31 caracteres.)

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

 


Todas as informações enviadas são seguras.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=80
Zone=Tecnologia Java, Software livre
ArticleID=845415
ArticleTitle=Desenvolvimento e Operações (DevOps) do Agile: Descubra o Chaos Monkey
publish-date=11162012