A tecnologia está em toda parte. Dependendo do quão alto é o risco de seu setor, a falha de um produto ou sistema de tecnologia pode cair em qualquer lugar entre totalmente insignificante e o fim da vida como você o conhece.

Computadores centrais de hospitais? Meio importante. A resiliência do aplicativo Candy Crush no seu celular? Provavelmente um pouco mais abaixo na lista geral de prioridades.

Em um sistema distribuído de redes, o fracasso é inevitável. A prevenção de catástrofes começa com um design de segurança sólido e estanque. Além disso, o que mais pode ser feito?

O que é Netflix Chaos Engineering?

20 de setembro de 2015.

Tudo quieto no front ocidental, quando, de repente, vários servidores importantes da Amazon Web Services ficam fora do ar sem dizer uma palavra.

Muitas grandes empresas não conseguiram atender seus clientes por várias horas. A Netflix, no entanto, voltou a funcionar em questão de minutos. Como? A cultura interna da empresa Netflix evoluiu para incluir muitas práticas "indutoras de falhas" implementadas em tempo real para preparar sistemas e engenheiros para quando ocorrer um desastre.

A liderança da empresa conduziu propositalmente paralisações de servidor simuladas em partes contidas do sistema para estudar e se preparar para eventos como esses. Isso os ajudou a identificar falhas no sistema e criar redundâncias que permitiram que o serviço continuasse ininterrupto, mesmo no caso de um grande mal funcionamento como o mencionado anteriormente.

Esses exercícios deliberados de "engenharia do caos" deram a seus engenheiros uma vantagem competitiva suficiente para se verem através do fiasco, em parte graças à infraestrutura preventiva que eles construíram com esse tipo de evento apocalíptico em mente.

Ninguém mais estava pronto quando a grande onda atingiu. O sistema Netflix era forte o suficiente para se defender sozinho. Conclusão? Esses gênios caóticos podem estar descobrindo alguma coisa aqui.

Aniquilar intencionalmente aqueles que te amam

"A Engenharia do Caos é a disciplina de fazer experimentos em um sistema a fim de criar confiança na capacidade do sistema de resistir a condições turbulentas na produção."

Princípios do Manifesto do Caos

Este é o coração da engenharia do caos - em essência, uma "simulação de incêndio" imposta ao sistema durante o horário de trabalho, quando há olhos e mãos disponíveis para enfrentar o desafio apresentado. A capacidade de um determinado sistema de tolerar falhas é posta à prova à medida que qualquer vulnerabilidade é exposta.

Em seu contexto original de 2011, a engenharia do caos preocupava o departamento de TI da Netflix. Sua liderança queria testar o quão resilientes os esforços da equipe eram quando um ou mais de seus computadores eram intencionalmente desativados. Esses contratempos permitiram que a equipe de TI identificasse os principais pontos fracos antes que se tornassem problemas de todo o sistema e pudessem ser explorados externamente.

Falha real? Pode ser muito caro, e isso vai além das implicações monetárias. Mesmo os períodos de inatividade, sem nenhum lapso real na segurança, provavelmente resultarão em muitas oportunidades perdidas de geração de receita. Por que esperar por uma emergência para pegar você?

Os macacos por trás da loucura

Algumas empresas adotarão um modelo de "equipe vermelha" que coloca equipes de desenvolvedores contra seus irmãos em todas as linhas departamentais. O exemplo clássico que a Netflix instituiu, no entanto, faz uso de um "Exército Simian". Esses bots fazem o trabalho sujo para eles de forma justa e totalmente aleatória.

Insano? Para o leigo, talvez. Nas palavras do autor de "Chaos Monkeys", Antonio Garcia Martinez:

“Imagine um macaco entrando em um 'data center', esses 'farms' de servidores que hospedam todas as funções críticas de nossas atividades online. O macaco rasga cabos aleatoriamente e destrói dispositivos. O desafio é projetar o sistema de informação pelo qual são responsáveis ​​para que funcione apesar desses macacos, que ninguém sabe quando chegam e o que vão destruir ”.

Uma analogia colorida. No entanto, nem todos os símios são cruéis: o Doutor Macaco monitora o desempenho do sistema, por exemplo. Quando Chaos Kong passa por uma visita, no entanto, todas as apostas estão canceladas; esse personagem derrubará uma zona de disponibilidade AWS inteira.

Relacionado: Como as vulnerabilidades de segurança são avaliadas?

Engenharia do Caos e o Método Científico

A engenharia do caos serve como uma fonte valiosa de percepção sistêmica para aqueles que conduzem os experimentos. Não são apenas os desenvolvedores que estão sendo testados aqui; é o sistema que existe de forma autônoma, também.

Antes de despejar o barril de macacos na mesa, a engenharia do caos requer um pouco de trabalho de base.

  1. Primeiro, você precisa identificar o que considera ser um estado "estável", saudável e funcional para o seu sistema. Este será o “controle” contra o qual você mede quaisquer resultados tangíveis.
  2. Comece a pensar em como esse estado será desequilibrado pela intrusão de uma falha orquestrada. Planeje sua investigação de malware para afetar apenas uma área contida e controlável de seu sistema.
  3. Apresente o "intruso" e permita que o sistema responda.
  4. Observe e interprete quaisquer diferenças entre o sistema como ele existe agora e como se comportava antes, durante a homeostase. Aumente o seu "raio de explosão" de impacto até detectar uma vulnerabilidade ou atingir a escala total, o que ocorrer primeiro.

A ideia é que quanto mais difícil for interromper um sistema funcional, mais confiança você pode ter em sua resiliência a mudanças e bombardeios. Esta abordagem mostra como diferentes aspectos do sistema compensarão as falhas uns dos outros no caso de uma interrupção.

"Como nenhum componente pode garantir 100% de tempo de atividade (e mesmo o hardware mais caro eventualmente falha), temos que projetar uma arquitetura de nuvem onde componentes individuais podem falhar sem afetar a disponibilidade de todo sistema."

O Netflix Blog

Às vezes, brincar com o sistema dessa maneira nem chega perto de impactar a experiência do cliente. Outras vezes, falhas graves de segurança serão reveladas. Agora, especialmente na Netflix, a contingência destinada a mascarar a falha do sistema no nível do usuário é incorporada à base do sistema.

Relacionado: O que é uma exploração de dia zero?

A Engenharia do Caos vale a pena?

Se você quer entender um sistema complexo - perturbe-o

- Farhan Thawar (@fnthawar) 26 de maio de 2021

Os críticos dirão que nenhum jogo de back-end vale a pena impactar a experiência de um cliente, mesmo que apenas brevemente e por incidente. Aqueles a favor da engenharia do caos, no entanto, contestarão o fato de que essas "interrupções planejadas" devem ser muito menores do que a que a AWS experimentou em 2015. Se um pequeno problema planejado coloca você em posição de evitar que um problema muito maior se apresente, planejar o incidente inicial pode ser a melhor maneira de se preparar. Menos usuários serão afetados no total. A matemática funciona.

Do lado humano da questão, a mentalidade é que, agora, esses engenheiros que tiveram um servidor travado na frente deles e lidar com isso com competência estará mais alerta no futuro e também mais intelectualmente equipado para lidar com tudo o que vier caminho. O sistema mais forte resultante, em muitos casos, fala por si.

Vale do Silício: onde os sonhos vão morrer

Eles dizem que, se você quiser se tornar grande, você deve estar disposto a matar seus queridos, ou, neste caso, estar disposto a deixar que outros os matem por você. Quando a segurança está na vanguarda desde o início do desenvolvimento, é muito mais provável que sua equipe termine com algo impenetrável e seguro para os clientes usarem livremente.

Jogar a experiência no local de trabalho torna a perspectiva de sucesso neste domínio empolgante; quando o resultado final é de qualidade, todos sobem de nível. Meu Netflix funciona bem, e só temos os loucos por trás do caos para agradecer por ele.

Agora que você tem um domínio firme sobre engenharia do caos, por que não expandir seu conhecimento com outra metodologia de desenvolvimento de software? Agile é um excelente sistema que você pode incorporar para unificar uma força de trabalho e produzir um código limpo e eficiente.

E-mail
O que é a metodologia de programação ágil?

Esteja você se candidatando a empregos de programação ou desejando uma maneira mais eficiente de trabalhar, você precisará conhecer o Agile.

Leia a seguir

Tópicos relacionados
  • Programação
  • Programação
Sobre o autor
Emma Garofalo (25 artigos publicados)

Emma Garofalo é uma escritora que atualmente mora em Pittsburgh, Pensilvânia. Quando não está labutando em sua mesa em busca de um amanhã melhor, ela geralmente pode ser encontrada atrás da câmera ou na cozinha.

Mais de Emma Garofalo

Assine a nossa newsletter

Junte-se ao nosso boletim informativo para dicas técnicas, análises, e-books grátis e ofertas exclusivas!

Mais um passo…!

Confirme seu endereço de e-mail no e-mail que acabamos de enviar.

.