

# OPS06-BP03 Uso de estrategias de implementación seguras
<a name="ops_mit_deploy_risks_deploy_mgmt_sys"></a>

 Las implementaciones de producción seguras controlan el flujo de cambios beneficiosos con el objetivo de minimizar cualquier impacto percibido por los clientes como consecuencia de dichos cambios. Los controles de seguridad proporcionan mecanismos de inspección para validar los resultados deseados y limitar el alcance del impacto de cualquier defecto introducido por los cambios o por errores en la implementación. Las implementaciones seguras incluyen estrategias como: indicadores de características, caja individual, continuas (versiones de canarios), inmutables, división del tráfico e implementaciones azul-verde. 

 **Resultado deseado:** su organización utiliza un sistema de entrega continua e integración continua (CI/CD) que proporciona capacidades para automatizar implementaciones seguras. Los equipos deben utilizar estrategias adecuadas para implementaciones seguras. 

 **Patrones comunes de uso no recomendados:** 
+  Implementa un cambio sin éxito en toda la producción de una sola vez. Como resultado, todos los clientes resultan afectados simultáneamente. 
+  Un defecto introducido en una implementación simultánea en todos los sistemas requiere una versión de emergencia. Corregirlo para todos los clientes lleva varios días. 
+  La administración del lanzamiento de producción requiere la planificación y la participación de varios equipos. Esto limita su capacidad de actualizar con frecuencia las características para sus clientes. 
+  Lleva a cabo una implementación mutable al modificar los sistemas existentes. Tras descubrir que el cambio no ha tenido éxito, se ve obligado a modificar de nuevo los sistemas para restaurar la versión antigua, lo que prolonga el tiempo de recuperación. 

 **Beneficios de establecer esta práctica recomendada:** las implementaciones automatizadas equilibran la velocidad de las implementaciones con la entrega de cambios beneficiosos de manera coherente a los clientes. Limitar el impacto evita caros errores de implementación y maximiza la capacidad de los equipos de responder de manera eficiente a los errores. 

 **Nivel de riesgo expuesto si no se establece esta práctica recomendada:** medio 

## Guía para la implementación
<a name="implementation-guidance"></a>

 Los errores continuos en la entrega pueden provocar una reducción de la disponibilidad del servicio y una mala experiencia para los clientes. Para maximizar la tasa de implementaciones satisfactorias, implemente controles de seguridad en el proceso de lanzamiento de principio a fin de minimizar los errores de implementación, con el objetivo de lograr implementaciones sin ningún error. 

 **Ejemplo de cliente** 

 AnyCompany Retail tiene la misión de lograr implementaciones con un tiempo de inactividad mínimo o nulo, lo que significa que los usuarios no perciban ningún impacto durante las implementaciones. Para lograrlo, la empresa ha establecido patrones de implementación (consulte el siguiente diagrama de flujo de trabajo), como implementaciones azul-verde y continuas. Todos los equipos adoptan uno o más de estos patrones en su canalización de CI/CD. 


| Flujo de trabajo de CodeDeploy para Amazon EC2 | Flujo de trabajo de CodeDeploy para Amazon ECS | Flujo de trabajo de CodeDeploy para Lambda | 
| --- | --- | --- | 
|  ![\[Flujo de proceso de implementación para Amazon EC2\]](http://docs.aws.amazon.com/es_es/wellarchitected/latest/operational-excellence-pillar/images/deployment-process-ec2.png)  |  ![\[Flujo de proceso de implementación para Amazon ECS\]](http://docs.aws.amazon.com/es_es/wellarchitected/latest/operational-excellence-pillar/images/deployment-process-ecs.png)  |  ![\[Flujo de proceso de implementación para Lambda\]](http://docs.aws.amazon.com/es_es/wellarchitected/latest/operational-excellence-pillar/images/deployment-process-lambda.png)  | 

### Pasos para la implementación
<a name="implementation-steps"></a>

1.  Use un flujo de trabajo de aprobación para iniciar la secuencia de pasos de implementación de producción, de la promoción a la producción. 

1.  Use un sistema de implementación automatizado como [AWS CodeDeploy](https://docs.aws.amazon.com/codedeploy/latest/userguide/welcome.html). Las opciones de [implementaciones locales](https://docs.aws.amazon.com/codedeploy/latest/userguide/deployment-steps.html) de AWS CodeDeploy para EC2/en las instalaciones e implementaciones azul-verde para EC2/en las instalaciones, AWS Lambda y Amazon ECS (consulte el diagrama de flujo de trabajo anterior). 

   1.  Cuando proceda, [integre AWS CodeDeploy con otros servicios de AWS](https://docs.aws.amazon.com/codedeploy/latest/userguide/integrations-aws.html) o [integre AWS CodeDeploy con los productos y servicios de los socios](https://docs.aws.amazon.com/codedeploy/latest/userguide/integrations-partners.html). 

1.  Utilice implementaciones azul/verde para bases de datos como [Amazon Aurora](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/blue-green-deployments.html) y [Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/blue-green-deployments.html). 

1.  [Supervise las implementaciones](https://docs.aws.amazon.com/codedeploy/latest/userguide/monitoring.html) mediante Amazon CloudWatch, AWS CloudTrail y las notificaciones de eventos de Amazon Simple Notification Service (Amazon SNS). 

1.  Haga pruebas automatizadas posteriores a la implementación, incluidas pruebas funcionales, de seguridad, de regresión, de integración y cualquier prueba de carga. 

1.  [Solucione los problemas](https://docs.aws.amazon.com/codedeploy/latest/userguide/troubleshooting.html) de implementación. 

 **Nivel de esfuerzo para el plan de implementación:** medio 

## Recursos
<a name="resources"></a>

 **Prácticas recomendadas relacionadas:** 
+  [OPS05-BP02 Prueba y validación de los cambios](ops_dev_integ_test_val_chg.md) 
+  [OPS05-BP09 Cambios frecuentes, pequeños y reversibles](ops_dev_integ_freq_sm_rev_chg.md) 
+  [OPS05-BP10 Automatización completa de la integración y la implementación](ops_dev_integ_auto_integ_deploy.md) 

 **Documentos relacionados:** 
+ [AWS Builders' Library: Automatización de implementaciones seguras y sin intervención \$1 Implementaciones de producción ](https://aws.amazon.com/builders-library/automating-safe-hands-off-deployments/?did=ba_card&trk=ba_card#Production_deployments)
+ [AWS Builders Library: My CI/CD pipeline is my release captain \$1 Safe, automatic production releases](https://aws.amazon.com//builders-library/cicd-pipeline/#Safe.2C_automatic_production_releases)
+ [Documento técnico de AWS: Práctica de integración y entrega continuas en AWS \$1 Métodos de implementación](https://docs.aws.amazon.com/whitepapers/latest/practicing-continuous-integration-continuous-delivery/deployment-methods.html)
+ [AWS CodeDeploy Guía del usuario de](https://docs.aws.amazon.com/codedeploy/latest/userguide/welcome.html)
+ [Working with deployment configurations in AWS CodeDeploy](https://docs.aws.amazon.com/codedeploy/latest/userguide/deployment-configurations.html)
+ [Configuración de una implementación de un lanzamiento canario de API Gateway ](https://docs.aws.amazon.com/apigateway/latest/developerguide/canary-release.html)
+ [Amazon ECS Deployment Types](https://docs.aws.amazon.com/)
+ [Fully Managed Blue/Green Deployments in Amazon Aurora and Amazon RDS](https://aws.amazon.com/blogs/aws/new-fully-managed-blue-green-deployments-in-amazon-aurora-and-amazon-rds/)
+ [Blue/Green deployments with AWS Elastic Beanstalk](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features.CNAMESwap.html)

 **Videos relacionados:** 
+ [re:Invent 2020 \$1 Hands-off: Automating continuous delivery pipelines at Amazon](https://www.youtube.com/watch?v=ngnMj1zbMPY)
+ [re:Invent 2019 \$1 Amazon's Approach to high-availability deployment](https://www.youtube.com/watch?v=bCgD2bX1LI4)

 **Ejemplos relacionados:** 
+ [Try a Sample Blue/Green Deployment in AWS CodeDeploy](https://docs.aws.amazon.com/codedeploy/latest/userguide/applications-create-blue-green.html)
+ [ Taller \$1 Building CI/CD pipelines for Lambda canary deployments using AWS CDK](https://catalog.workshops.aws/cdk-cicd-for-lambda-canary-deployment/en-US) 
+ [ Taller \$1 Building your first DevOps Blue/Green pipeline with Amazon ECS ](https://catalog.us-east-1.prod.workshops.aws/workshops/4b59b9fb-48b6-461c-9377-907b2e33c9df/en-US)
+ [ Taller \$1 Building your first DevOps Blue/Green pipeline with Amazon EKS ](https://catalog.us-east-1.prod.workshops.aws/workshops/4eab6682-09b2-43e5-93d4-1f58fd6cff6e/en-US)
+ [ Taller \$1 EKS GitOps with ArgoCD ](https://catalog.workshops.aws/eksgitops-argocd-githubactions)
+ [ Taller \$1 CI/CD on AWS Workshop ](https://catalog.workshops.aws/cicdonaws/en-US)
+ [ Implementing cross-account CI/CD with AWS SAM for container-based Lambda functions ](https://aws.amazon.com/blogs/compute/implementing-cross-account-cicd-with-aws-sam-for-container-based-lambda/)