BT

Disseminando conhecimento e inovação em desenvolvimento de software corporativo.

Contribuir

Tópicos

Escolha a região

Início Notícias Projetando Serviços Resilientes: Nora Jones comenta sobre a Engenharia de Caos da Netflix no QCon SF

Projetando Serviços Resilientes: Nora Jones comenta sobre a Engenharia de Caos da Netflix no QCon SF

No QCon SF Nora Jones discorreu sobre "Designing Service for Resilience Experiments: Lessons from Netflix". Entre os principais tópicos comentados estão: a experiência do cliente é uma prioridade; o design da capacidade de resiliência é uma responsabilidade compartilhada; as mudanças de configuração podem causar interrupções; e os engenheiros devem ter um monitoramento explícito no local para detectar antipatterns nas mudanças de configuração.

Jones, engenheira de caos sênior da Netflix, iniciou a palestra explorando como as equipes podem projetar serviços para testes de resiliência ou "caos". Os conceitos discutidos incluíram serviços de construção que suportam Testes de Injeção de Falhas, garantindo que a comunicação de serviço a serviço seja conduzida através de uma estrutura RPC, implementando caminhos de retorno de chamadas RPC e maneiras de descobrí-las, incluindo métricas empresariais importantes - e permitindo a adequação em tempos difíceis.

Existem metodologias de desenvolvimento de software que são bem aceitas para se aumentar a confiança na resiliência do sistema, como testes de unidade e integração, mas a crescente técnica de experimentação do caos também é altamente valiosa - particularmente quando se criam sistemas distribuídos complexos, como uma aplicação baseada em microservices.

Chaos Engineering: Netflix ChAP

De dois anos para cá, o framework Netflix Failure Injection Testing evoluiu para ChAP:Plataforma de Automação de Caos. Esta plataforma permite que os engenheiros de caos da Netflix automatizem a experimentação de resiliência dividindo o tráfego de entrada do serviço sob testes entre a API de serviço existente, a API de serviço de controle e a API de experiência de caos. A quantidade de tráfego enviado às APIs de controle e experiência é mantida deliberadamente pequena e contínua, pois isso permite a comparação direta de saída de monitoramento e métricas de negócios principais entre eles (como o número de clientes do Netflix em "fluxos por segundo"). Se uma grande quantidade de divergência for detectada entre o controle e a experiência, o experimento pode ser "curto" e parado, pois isso reduz o risco de impacto percebido pelo cliente.

Jones introduziu uma amostra na biblioteca de injeção de falhas de esqueleto escrita em F# e guiou o público através da implementação. Dois tipos de injeções de falhas foram apresentados para os engenheiros que procuram iniciar a experimentação do caos: falhar com uma exceção e a introdução da latência. Os engenheiros podem criar uma hipótese, projetar e executar uma experiência e monitorar as métricas necessárias para provar (ou não) a hipótese.

Um bom monitoramento é uma parte essencial da garantia da resiliência e não apenas pela observação do status do sistema, mas também pelo monitoramento das mudanças de configuração. Foi apresentada uma hipótese de que as mudanças de configuração podem ser mais perigosas do que as alterações de código. A configuração do sistema, como os desvios de circuito, os tempos limite e as tentativas, devem ser visíveis e monitoradas a partir de um único local.

A equipe do Netflix usa Hystrix para RPC de quebra de circuito em seu sistema, e as estratégias de retorno disponíveis para serviços não criticos incluem: conteúdo estático, dados em cache (potencialmente obsoletos) ou um serviço de retorno. Jones advertiu que os desenvolvedores devem estar atentos às estratégias e configurações de tempos locais e globais, e que, de imediato, a tentativa de uma chamada RPC com falha geralmente não é uma boa ideia. Compreender a interação entre os tempos limite e a configuração de repetição também é importante.

A plataforma ChAP possui um painel de componente chamado "Monocle" que mostra informações básicas sobre recados, tempo limite e tentativas novas, além de quando o sistema foi implementado pela primeira vez. A visão global dessas informações na plataforma Netflix permitiu que as configurações de resiliência inadequadas (ou conflitantes) fossem facilmente identificadas. Também foi definido um "score de criticidade", o que permitiu que a equipe de engenharia de caos calcular e priorizar correções para os serviços que possuiam um alto número de pedidos por segundo, novas tentativas e chamadas RPC sem retorno.

Don't lose sight of your customer

Jones concluiu a conversa compartilhando diversas histórias de sucesso, dos esforços da equipe de engenharia de caos e automação de outras equipes internas da Netflix, afirmando que os incidentes de produção foram evitados e que outros efeitos colaterais indesejáveis foram identificados e corrigidos antes de implementar o serviço para produção. Uma mensagem chave foi repetida várias vezes durante a palestra: não perca de vista os clientes da sua empresa. O teste de resiliência é uma parte da abordagem geral da Netflix para garantir uma experiência consistente e excelente ao cliente.

Os slides da palestra de Nora Jones "Designing Services for Resilience: Lessons from Netflix" (PDF, 3MB) podem ser encontrados no site do QCon e o video será disponibilizado no InfoQ.

Avalie esse artigo

Relevância
Estilo/Redação

Conteúdo educacional

BT