REL 8: ¿Cómo implementa los cambios?
Los cambios controlados son necesarios para implementar nuevas funcionalidades y para asegurarse de que el entorno operativo, así como también las cargas de trabajo, ejecutan un software conocido, que se puede reemplazar de una manera predecible o que contiene los parches adecuados. Si no se controlan estos cambios, es más difícil predecir los efectos de estos cambios o abordar los problemas que surjan como consecuencia de ellos.
Recursos
AWS Summit 2019: CI/CD on AWS
What Is AWS CodePipeline?
What Is CodeDeploy?
Overview of a Blue/Green Deployment
Deploying Serverless Applications Gradually
The Amazon Builders' Library: Ensuring rollback safety during deployments
The Amazon Builders' Library: Going faster with continuous delivery
Well-Architected lab: Level 300: Testing for Resiliency of EC2 RDS and S3
CanaryRelease
AWS Marketplace: products that can be used to automate your deployments
APN Partner: partners that can help you create automated deployment solutions
Prácticas recomendadas:
-
Use manuales de procedimientos para actividades estándar como la implementación: Los manuales de procedimientos son los pasos predefinidos que se utilizan para lograr resultados específicos. Utilice manuales de procedimientos para llevar a cabo actividades estándar, ya sea de forma manual o automática. Algunos ejemplos incluyen la implementación de una carga de trabajo, la implementación de parches en dicha carga o las modificaciones de DNS.
-
Integre las pruebas funcionales como parte de su implementación: Las pruebas funcionales se ejecutan como parte de la implementación automatizada. Si no se cumplen los criterios para el éxito, la canalización se detiene o se restaura.
-
Integre las pruebas de resistencia como parte de su implementación: Las pruebas de resistencia (las cuales forman parte de la ingeniería del caos) se ejecutan como parte de la canalización de implementación automatizada en un entorno de preproducción.
-
Efectúe implementaciones con infraestructuras inmutables: Se trata de un modelo que exige que no se realicen actualizaciones, no se implementen parches de seguridad ni se efectúen cambios de configuración en el lugar en las cargas de trabajo de producción. Cuando se necesita un cambio, la arquitectura se crea en una nueva infraestructura y se implementa en la producción.
-
Implemente cambios con automatización: Las implementaciones y la aplicación de parches se automatizan para eliminar el impacto negativo.
Plan de mejora
Use manuales de procedimientos para actividades estándar como la implementación
AWS Well-Architected Framework: Concepts: Runbook
- Use AWS CloudFormation (o un proveedor externo de confianza) para definir su infraestructura.
What is AWS CloudFormation? - Cree plantillas que sean individuales y separadas con buenos principios de diseño
de software.
- Determine los permisos, las plantillas y las partes responsables para la implementación
Controlling access with AWS Identity and Access Management - Utilice el control de código fuente, como AWS CodeCommit o una herramienta de terceros
de confianza, para el control de versiones.
What is AWS CodeCommit?
- Determine los permisos, las plantillas y las partes responsables para la implementación
Integre las pruebas funcionales como parte de su implementación
- Invoque AWS CodeBuild durante la acción de prueba de sus canalizaciones de lanzamiento
de software modeladas en AWS CodePipeline. Esta capacidad le permite ejecutar fácilmente
una variedad de pruebas contra su código, como pruebas unitarias, análisis de código
estático y pruebas de integración.
AWS CodePipeline Adds Support for Unit and Custom Integration Testing with AWS CodeBuild - Utilice las soluciones de AWS Marketplace para ejecutar pruebas automatizadas como
parte de su canalización de entrega de software.
Software test automation
Integre las pruebas de resistencia como parte de su implementación
- Las pruebas de resistencia inyectan errores o degradación de recursos para evaluar
que la carga de trabajo responda con su resistencia diseñada
Well-Architected lab: Level 300: Testing for Resiliency of EC2 RDS and S3 - Estas pruebas se pueden ejecutar regularmente en entornos de preproducción en canalizaciones de implementación automatizadas.
- Las pruebas también deberían ejecutarse en la etapa de producción, pero como parte de los días de prueba.
- Con los principios de la ingeniería del caos, proponga hipótesis sobre cómo se desempeñará
su carga de trabajo frente a diversos impedimentos y, luego, pruebe sus hipótesis
con las pruebas de resistencia.
Principles of Chaos Engineering
Efectúe implementaciones con infraestructuras inmutables
Overview of a Blue/Green Deployment
Deploying Serverless Applications Gradually
CanaryRelease
Implemente cambios con automatización
The Amazon Builders' Library: Ensuring rollback safety during deployments
The Amazon Builders' Library: Going faster with continuous delivery
- Use AWS CodePipeline (o un producto de terceros de confianza) para definir y ejecutar
sus canalizaciones.
- Configure la canalización para que comience cuando se confirme un cambio en su repositorio
de código.
What is AWS CodePipeline? - Utilice Amazon Simple Notification Service (SNS) y Amazon Simple Email Service (SES)
para enviar notificaciones sobre problemas en la canalización o integrarse con una
herramienta de chat grupal, como Amazon Chime.
What is Amazon Simple Notification Service?
What is Amazon SES?
What is Amazon Chime?
Automate chat messages with webhooks.
- Configure la canalización para que comience cuando se confirme un cambio en su repositorio
de código.