Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Incorporação de engenharia do caos em aplicativ...

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.

Marcelo Palladino

July 22, 2019
Tweet

More Decks by Marcelo Palladino

Other Decks in Technology

Transcript

  1. © 2019, Amazon Web Services, Inc. or its affiliates. All

    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
  2. © 2019, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Agenda • Por que engenharia do Caos? • Pré-requisitos e Princípios • Proposta de implementação • Alternativas
  3. © 2019, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Marcelo Palladino Arquiteto/Engenheiro de Software Sênior, Hi Platform Engenharia do caos em aplicativos serverless modernos
  4. Ouvir primeiro para conversar depois. Automatize atendimentos e facilite sua

    vida. Fácil de conversar, simples de atender. omni social bot Plataforma SaaS para atendimento ao consumidor
  5. © 2019, Amazon Web Services, Inc. or its affiliates. All

    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.
  6. © 2019, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Teste de unidade Componente A Entrada Saída
  7. © 2019, Amazon Web Services, Inc. or its affiliates. All

    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.
  8. © 2019, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Teste de integração SERVIÇO X SERVIÇO Y
  9. © 2019, Amazon Web Services, Inc. or its affiliates. All

    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.
  10. © 2019, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Novos problemas, novas perguntas, novas respostas... SERVIÇO X SERVIÇO Y Erro/Latência
  11. © 2019, Amazon Web Services, Inc. or its affiliates. All

    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.
  12. © 2019, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Como sua aplicação se parece durante seu “estado normal”?
  13. © 2019, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Definindo o estado normal • Logs • Sistemas de monitoramento • Projetando para transparência • ...
  14. © 2019, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Definindo o estado normal: Tempo de resposta
  15. © 2019, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Definindo o estado normal: Taxa de erro
  16. © 2019, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Definindo o estado normal: Logs de aplicação
  17. © 2019, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Construa uma hipótese com base no comportamento durante o estado normal
  18. © 2019, Amazon Web Services, Inc. or its affiliates. All

    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.”
  19. © 2019, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Varie eventos do mundo real
  20. © 2019, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Werner Vogels, CTO Amazon.com “Tudo falha, o tempo todo.”
  21. © 2019, Amazon Web Services, Inc. or its affiliates. All

    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); • ...
  22. © 2019, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Execute Experimentos em produção
  23. © 2019, Amazon Web Services, Inc. or its affiliates. All

    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;
  24. © 2019, Amazon Web Services, Inc. or its affiliates. All

    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.
  25. © 2019, Amazon Web Services, Inc. or its affiliates. All

    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...
  26. © 2019, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. • Latency monkey • Chaos kong • Chaos gorilla • Chaos monkey • ...
  27. © 2019, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Com Serverless não há servidores para matar!
  28. © 2019, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Serverless https://www.jeremydaly.com/stop-calling-everything-serverless/
  29. © 2019, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Monolito Usuário Ação Ação 1.1 Ação 1.2 Ação 1.3 Resultado
  30. © 2019, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Usuário Ação Ação 1.1 Ação 1,2 Ação 1.3 Resultado
  31. © 2018, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Definindo o estado normal com Serverless • CloudWatch, AWS X-ray • IOPipe (https://www.iopipe.com/)
  32. © 2018, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Variando eventos do mundo real com Serverless Usuário Ação Resultado Latência/Erro
  33. © 2018, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Raio de ação do experimento com Serverless Usuário Ação Resultado Latência/Erro
  34. © 2018, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Raio de ação do experimento com Serverless Usuário Ação Resultado Latência/Erro
  35. © 2018, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Alternativas: Application Level Fault Injection https://www.gremlin.com/
  36. © 2019, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Entendendo sistemas complexos!
  37. © 2018, Amazon Web Services, Inc. or its affiliates. All

    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
  38. • Encontros mensais regulares • Eventos de “Mão na massa”

    • Desconferências • Palestras internacionais • Maratonas https://www.awsugsp.com/
  39. © 2019, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Obrigado :) Marcelo Palladino Engenheiro de Software Sênior, Hi Platform @mfpalladino