REL 12: ¿Cómo prueba la fiabilidad?
Después de haber diseñado su carga de trabajo para que sea resistente a las presiones de la producción, las pruebas son la única forma de garantizar que funcionará como se diseñó y proporcionará la resistencia que espera.
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
Prácticas recomendadas:
-
Utilice manuales de estrategias para investigar los errores: A través de la documentación del proceso de investigación de los manuales de estrategias, habilite respuestas consistentes y rápidas para las situaciones de errores que no se comprendan correctamente. Los manuales de estrategias contienen los pasos predefinidos que se realizan para identificar los factores que contribuyen a una situación de error. Los resultados de cualquier paso en el proceso se utilizan para determinar los próximos pasos a seguir hasta que se identifique o escale el problema.
-
Realice análisis posteriores a los incidentes: Revise los eventos que afectan a los clientes e identifique tanto los factores contribuyentes, como los elementos de acción preventiva. Utilice esta información para desarrollar estrategias de mitigación a fin de limitar o evitar la recurrencia. Desarrolle procedimientos para ofrecer respuestas efectivas y rápidas. Comunique las acciones correctivas y los factores contribuyentes según corresponda, adaptados a las audiencias de destino. Tenga un método para comunicar estas causas a los demás según sea necesario.
-
Pruebe los requisitos funcionales: Se incluyen pruebas de unidades y pruebas de integración que validan la funcionalidad requerida.
-
Pruebe los requisitos de escalado y de rendimiento: Esto incluye las pruebas de carga para validar que la carga de trabajo cumple con los requisitos de escalado y de rendimiento.
-
Pruebe la resistencia a través de la ingeniería del caos: Ejecute pruebas que inyecten errores de forma regular en los entornos de preproducción y producción. Elabore una hipótesis sobre cómo reaccionará su carga de trabajo frente al error. A continuación, compare su hipótesis con los resultados de la prueba y repita el proceso si los resultados no coinciden. Asegúrese de que las pruebas de producción no afecten a los usuarios.
-
Lleve a cabo días de prueba de forma regular: Utilice los días de prueba para ejercitar de forma regular los procedimientos con errores lo más cerca posible de la producción (incluso en los entornos de producción) con las personas que estarán involucradas en los escenarios de errores reales. Los días de prueba aplican medidas para garantizar que las pruebas de producción no tengan impacto en los usuarios.
Plan de mejora
Utilice manuales de estrategias para investigar los errores
- Implemente manuales de estrategias como código: Ejecute sus operaciones como código mediante scripts de los manuales de estrategias
a fin de garantizar consistencia y reducir los errores causados por los procesos manuales.
Los manuales de estrategias se pueden formar con múltiples scripts que representan
los diferentes pasos que pueden ser necesarios para identificar los factores que contribuyen
a un problema. Las actividades de los manuales de procedimientos se pueden activar
o realizar como parte de las actividades de los manuales de estrategias o pueden generar
la ejecución de un manual de estrategias en respuesta 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
Realice análisis posteriores a los incidentes
- Asegúrese de que los factores contribuyentes sean honestos y no incurran en faltas.
- Si no documenta sus problemas, no puede corregirlos.
- Asegúrese de que el análisis posterior a los incidentes esté libre de culpa para que pueda ser imparcial con las acciones correctivas propuestas y promueva una autoevaluación y colaboración honestas en sus equipos de aplicación.
What is log analytics?
Pruebe los requisitos funcionales
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
Pruebe los requisitos de escalado y de rendimiento
Distributed Load Testing on AWS: simulate thousands of connected users
Apache JMeter
- Implemente su aplicación en un entorno idéntico a su entorno de producción y ejecute
una prueba de carga.
- Use la infraestructura como conceptos de código para crear un entorno lo más similar posible a su entorno de producción.
Pruebe la resistencia a través de la ingeniería del 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 inyectar errores en su carga de trabajo, use un software de código abierto
The Chaos ToolKit
Shopify Toxiproxy
Netflix Chaos Monkey - Utilice software comercial disponible a través de AWS Marketplace
Gremlin - Cree su propio código de inyección de error
Well-Architected lab: Level 300: Testing for Resiliency of EC2 RDS and S3
Injecting Chaos to Amazon EC2 using AWS Systems Manager - Pruebe el error de todos los componentes y dependencias externas.
- Simule condiciones que pueden producir bajas de tensión mediante extensiones a proxies comunes para introducir latencia y mensajes perdidos. También puede crear sus propias implementaciones para crear condiciones de baja de tensión.
Lleve a cabo días de prueba de forma regular
- Ejecute sus pruebas de carga o de rendimiento y luego ejecute su inyección de error.
- Busque anomalías en sus manuales de procedimientos y oportunidades para ejecutar sus
manuales de estrategias.
- Si se desvía de sus manuales de procedimientos, refine dicho manual o corrija el comportamiento. Si ejecuta su manual de estrategias, identifique el manual de procedimientos que debería haberse usado o cree uno nuevo.