Incorporação de engenharia do caos em aplicativos serverless modernos
Slides da apresentação feita no Developer Lounge do AWS Summit São Paulo 2019, na qual falei sobre os princípios da engenharia do caos e sua aplicação em aplicativos serverless modernos.
rights reserved. "Engenharia do Caos é a disciplina de realizar experimentos em sistemas distribuídos para construir confiança em sua capacidade de resistir a condições turbulentas em produção." principlesofchaos.org
rights reserved. MONOLITO Normalmente relacionado a uma aplicação ou serviço que mesmo que seja modularizado em termos de código, é implementado como um só software.
rights reserved. SERVIÇO Sistema que implementa um conjunto de funcionalidades e se comunica com o mundo exterior através de uma interface bem definida.
rights reserved. MICRO SERVIÇO Serviço que implementa um conjunto de funcionalidades fortemente relacionadas. Um resultado colateral é que o serviço fica menor, daí o nome.
rights reserved. Engenharia de Caos • Utiliza experimentos controlados para injetar falhas no sistema; • Nos ajuda a aprender como o sistema se comporta durante falhas não esperadas; • Nos ajuda a construir confiança sobre a capacidade do sistema de resistir a condições turbulentas em produção.
rights reserved. Construindo hipóteses • “No percentil 95% os tempos de respostas estão entre 10ms e 30ms, enquanto a taxa de erro fica abaixo de 0,001%.” • “O HiBot atende 3000 consumidores por minuto e retém 90% dos atendimentos.”
rights reserved. Variando eventos do mundo real • Queda de um nó do banco de dados; • Queda de uma máquina virtual; • Sistema de cache indisponível; • Lentidão de rede; • Serviço retornando erro 500; • Serviço sofrendo com throttling; • Serviço excedendo limites de uso (rate limiting); • ...
rights reserved. Executando experimentos • Experimente o que for totalmente desconhecido longe da produção; • Levar um experimento para produção deve ser cuidadosamente planejado; • Dê ao ambiente de produção o cuidado que ele merece; • Tente refutar as hipóteses procurando diferenças considerando o estado normal;
rights reserved. Tenha claro o objetivo O objetivo não é quebrar coisas em produção! O objetivo é aprender sobre como seu sistema resiste a condições turbulentas para que seja possível melhorá-lo e construir confiança.
rights reserved. Adote uma postura responsável Quebrar coisas em produção sem controle, correndo o risco de expor a marca da sua empresa não pode ser chamado de experimento de Caos. Isso tem outro nome...
rights reserved. Resumo • Tenha certeza que seu sistema é observável • Monte hipóteses • Varie eventos do mundo real • Execute experimentos com responsabilidade e aprenda sobre o sistema com controle • Tenha controle do raio de ação dos experimentos • O objetivo nunca deve ser quebrar coisas apenas por quebrar • Os princípios são aplicáveis à qualquer plataforma • Esteja atento às alternativas