REL 12: Como testar a confiabilidade?
Depois de projetar sua carga de trabalho para resiliência à pressão da produção, o teste é a única maneira de garantir que ela opere conforme projetado e com a resiliência esperada.
Recursos
Well-Architected lab: Level 300: Testing for Resiliency of EC2 RDS and S3
Injecting Chaos to Amazon EC2 using AWS Systems Manager
Resilience Engineering: Learning to Embrace Failure
AWS re:Invent 2019: Improving resiliency with chaos engineering (DOP309-R1)
Continuous Delivery and Continuous Integration
Using Canaries (Amazon CloudWatch Synthetics)
Use CodePipeline with AWS CodeBuild to test code and run builds
Automate your operational playbooks with AWS Systems Manager
Principles of Chaos Engineering
Apache JMeter
Casey Rosenthal, Lorin Hochstein, Aaron Blohowiak, Nora Jones, Ali Basiri. “Chaos
Engineering” (August 2017)
AWS Marketplace: products that can be used for continuous integration
APN Partner: partners that can help with implementation of a continuous integration
pipeline
Melhores práticas:
-
Usar playbooks para investigar falhas: Faça a documentação do processo de investigação em playbooks para permitir respostas consistentes e rápidas em cenários de falha. Os playbooks são as etapas predefinidas executadas para identificar os fatores que contribuem para um cenário de falha. Os resultados de qualquer etapa do processo são usados para determinar as próximas etapas a serem seguidas até que o problema seja identificado ou encaminhado.
-
Executar análise pós-incidente: Analise os eventos que afetam o cliente e identifique os fatores contribuintes e os itens de ação preventiva. Use essas informações para desenvolver mitigações para limitar ou evitar recorrência. Desenvolva procedimentos para respostas rápidas e eficazes. Comunique os fatores contribuintes e as ações corretivas conforme apropriado, de acordo com o público-alvo. Tenha um método para comunicar essas causas a outras pessoas, conforme necessário.
-
Teste os requisitos funcionais: Esse procedimento inclui testes de unidade e de integração que validam a funcionalidade necessária.
-
Teste os requisitos de escalabilidade e performance: Esse procedimento inclui o teste de carga para validar se a carga de trabalho atende aos requisitos de escalabilidade e performance.
-
Teste a resiliência por meio da engenharia do caos: Execute testes que injetam falhas regularmente em ambientes de pré-produção e de produção. Especule como sua carga de trabalho reagirá à falha, depois compare sua hipótese com os resultados do teste e reafirme se elas não corresponderem. Certifique-se de que os testes de produção não afetem os usuários.
-
Conduza dias de jogo regularmente: Use os dias de jogo para praticar regularmente seus procedimentos de falha o mais próximo possível da produção (inclusive em ambientes de produção) com as pessoas que estarão envolvidas nos cenários de falha reais. Os dias de jogo aplicam medidas para garantir que os testes de produção não afetem os usuários.
Plano de melhoria
Usar playbooks para investigar falhas
- Implementar playbooks como código: Execute suas operações como código ao criar scripts de seus playbooks para garantir
a consistência e reduzir os erros causados por processos manuais. Os playbooks podem
ser compostos por vários scripts representando as diferentes etapas que podem ser
necessárias para identificar os fatores que contribuem para um problema. As atividades
do runbook podem ser acionadas ou executadas como parte das atividades do playbook,
ou podem solicitar a execução de um playbook em resposta a eventos identificados.
Automate your operational playbooks with AWS Systems Manager
AWS Systems Manager Run Command
AWS Systems Manager Automation
What is AWS Lambda?
What Is Amazon EventBridge?
Using Amazon CloudWatch Alarms
Executar análise pós-incidente
- Garantir que os fatores contribuintes sejam justos e isentos de acusações.
- Se você não documentar os problemas, não poderá corrigi-los.
- Garanta que a análise pós-incidente seja isenta de acusações para que você possa ser imparcial em relação às ações corretivas propostas e promover uma autoavaliação e uma colaboração justas às equipes de aplicativos.
What is log analytics?
Teste os requisitos funcionais
Use CodePipeline with AWS CodeBuild to test code and run builds
AWS CodePipeline Adds Support for Unit and Custom Integration Testing with AWS CodeBuild
Continuous Delivery and Continuous Integration
Using Canaries (Amazon CloudWatch Synthetics)
Software test automation
Teste os requisitos de escalabilidade e performance
Distributed Load Testing on AWS: simulate thousands of connected users
Apache JMeter
- Implante seu aplicativo em um ambiente idêntico ao seu ambiente de produção e execute
um teste de carga.
- Use os conceitos de infraestrutura como código para criar um ambiente que seja o mais semelhante possível ao seu ambiente de produção.
Teste a resiliência por meio da engenharia do caos
Principles of Chaos Engineering
Well-Architected lab: Level 300: Testing for Resiliency of EC2 RDS and S3
Injecting Chaos to Amazon EC2 using AWS Systems Manager
AWS re:Invent 2019: Improving resiliency with chaos engineering (DOP309-R1)
- Para injetar falhas em sua carga de trabalho, use o software de código aberto
The Chaos ToolKit
Shopify Toxiproxy
Netflix Chaos Monkey - Se preferir, use um software comercial disponível no AWS Marketplace
Gremlin - Ou ainda, crie seu próprio código de injeção de falha
Well-Architected lab: Level 300: Testing for Resiliency of EC2 RDS and S3
Injecting Chaos to Amazon EC2 using AWS Systems Manager - Teste a falha de todos os componentes e as dependências externas.
- Simule condições capazes de produzir reduções da carga por meio de extensões para proxies comuns para introduzir latência e mensagens descartadas. Você também pode criar suas próprias implementações para criar condições de redução da carga.
Conduza dias de jogo regularmente
- Execute os testes de carga ou de performance e, em seguida, execute a injeção de falha.
- Procure por anomalias nos runbooks e oportunidades de praticar os playbooks.
- Se você se desviar dos runbooks, refine-os ou corrija o comportamento. Se você praticar o playbook, identifique o runbook que deveria ter sido usado ou crie um novo.