

# OPERACIÓN 5. ¿Cómo reduce los defectos, facilita la reparación y mejora el flujo en la producción?
<a name="ops-05"></a>

 Adopte enfoques que mejoren el flujo de cambios en la producción, que activen la refactorización, la respuesta rápida sobre la calidad y la corrección de errores. Estos aceleran los cambios beneficiosos que se introducen en la producción, limitan los problemas desplegados y logran una rápida identificación y solución de los problemas introducidos a través de las actividades de despliegue. 

**Topics**
+ [OPS05-BP01 Usar el control de versiones](ops_dev_integ_version_control.md)
+ [OPS05-BP02 Probar y validar los cambios](ops_dev_integ_test_val_chg.md)
+ [OPS05-BP03 Utilizar sistemas de administración de la configuración](ops_dev_integ_conf_mgmt_sys.md)
+ [OPS05-BP04 Utilizar sistemas de administración de compilación y despliegue](ops_dev_integ_build_mgmt_sys.md)
+ [OPS05-BP05 Administrar parches](ops_dev_integ_patch_mgmt.md)
+ [OPS05-BP06 Compartir estándares de diseño](ops_dev_integ_share_design_stds.md)
+ [OPS05-BP07 Adoptar prácticas para mejorar la calidad del código](ops_dev_integ_code_quality.md)
+ [OPS05-BP08 Usar varios entornos](ops_dev_integ_multi_env.md)
+ [OPS05-BP09 Realizar cambios frecuentes, pequeños y reversibles](ops_dev_integ_freq_sm_rev_chg.md)
+ [OPS05-BP10 Automatizar completamente la integración y el despliegue](ops_dev_integ_auto_integ_deploy.md)

# OPS05-BP01 Usar el control de versiones
<a name="ops_dev_integ_version_control"></a>

 Use el control de versiones para activar el seguimiento de cambios y versiones. 

 Muchos servicios de AWS ofrecen capacidades de control de versiones. Utilice un sistema de control de revisiones o de orígenes como [AWS CodeCommit](https://aws.amazon.com/codecommit/) para administrar el código y otros artefactos, como las plantillas de [AWS CloudFormation](https://aws.amazon.com/cloudformation/) controladas por versiones de la infraestructura. 

 **Resultado deseado:** sus equipos colaboran en el código. Cuando se fusiona, el código es coherente y no se pierde ningún cambio. Los errores se revierten fácilmente mediante el correcto control de versiones. 

 **Patrones comunes de uso no recomendados:** 
+  Ha estado desarrollando y almacenando el código en su estación de trabajo. Ha sufrido un error de almacenamiento irrecuperable en la estación de trabajo y el código se ha perdido. 
+  Después de sobrescribir el código existente con sus cambios, reinicia la aplicación y ya no está operativa. No puede revertir el cambio. 
+  Tiene un bloqueo de escritura en un archivo de informe que tiene que editar otra persona. Se pone en contacto con usted para pedirle que deje de trabajar en él para que puedan completar sus tareas. 
+  Su equipo de investigación ha estado trabajando en un análisis detallado que modela su trabajo futuro. Alguien ha guardado accidentalmente su lista de la compra sobre el informe final. No puede revertir el cambio y tiene que volver a crear el informe. 

 **Beneficios de establecer esta práctica recomendada:** Mediante el uso de las capacidades de control de versiones puede revertir fácilmente los estados buenos conocidos y las versiones anteriores, y limitar el riesgo de que se pierdan los activos. 

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

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

 Mantenga los activos en repositorios con control de versiones. Esto permite hacer un seguimiento de los cambios, implementar versiones nuevas, detectar cambios en las versiones existentes y volver a versiones anteriores (por ejemplo, revertir a un estado conocido correcto en caso de error). Integre en sus procedimientos las capacidades de control de versiones de sus sistemas de administración de la configuración. 

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

 **Prácticas recomendadas relacionadas:** 
+  [OPS05-BP04 Utilizar sistemas de administración de compilación y despliegue](ops_dev_integ_build_mgmt_sys.md) 

 **Documentos relacionados:** 
+  [What is AWS CodeCommit?](https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html) 

 **Vídeos relacionados:** 
+  [Introduction to AWS CodeCommit](https://youtu.be/46PRLMW8otg) 

# OPS05-BP02 Probar y validar los cambios
<a name="ops_dev_integ_test_val_chg"></a>

 Cada cambio desplegado se debe probar para evitar errores en producción. Esta práctica recomendada se centra en probar los cambios desde el control de versiones hasta la creación de artefactos. Además de los cambios en el código de la aplicación, las pruebas deben incluir la infraestructura, la configuración, los controles de seguridad y los procedimientos operativos. Las pruebas adoptan muchas formas, desde las pruebas unitarias hasta el análisis de componentes de software (SCA). Mover las pruebas más a la izquierda en el proceso de integración y entrega del software se traduce en una mayor certeza de la calidad de los artefactos. 

 Su organización debe desarrollar estándares de prueba para todos los artefactos de software. Las pruebas automatizadas reducen el trabajo y evitan los errores de las pruebas manuales. En algunos casos puede ser necesario realizar pruebas manuales. Los desarrolladores deben tener acceso a los resultados de las pruebas automatizadas para crear bucles de comentarios que mejoren la calidad del software. 

 **Resultado deseado:** los cambios en el software se prueban antes de su entrega. Los desarrolladores tienen acceso a los resultados de las pruebas y las validaciones. Su organización tiene un estándar de pruebas que se aplica a todos los cambios de software. 

 **Patrones comunes de uso no recomendados:** 
+ Despliega un nuevo cambio de software sin realizar ninguna prueba. No funciona en producción, lo que provoca una interrupción del servicio.
+ Los nuevos grupos de seguridad se despliegan con CloudFormation sin haberse probado en un entorno de preproducción. Los grupos de seguridad hacen que la aplicación sea inaccesible para los clientes.
+ Se modifica un método, pero no hay pruebas unitarias. El software no funciona cuando se despliega en producción.

 **Beneficios de establecer esta práctica recomendada:** Se reduce la tasa de errores en los despliegues de software. Se mejora la calidad del software. Los desarrolladores son más conscientes de la viabilidad de su código. Las políticas de seguridad se pueden desplegar con confianza para respaldar el cumplimiento de la organización. Los cambios en la infraestructura, como las actualizaciones automáticas de las políticas de escalamiento, se prueban con antelación para satisfacer las necesidades de tráfico. 

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

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

 Las pruebas se realizan en todos los cambios, desde el código de la aplicación hasta la infraestructura, como parte de su práctica de integración continua. Los resultados de las pruebas se publican para que los desarrolladores tengan comentarios rápidos. Su organización tiene un estándar de pruebas que deben superar todos los cambios. 

 **Ejemplo de cliente** 

 Como parte de su canalización de integración continua, AnyCompany Retail realiza varios tipos de pruebas en todos los artefactos de software. Practica el desarrollo basado en pruebas, por lo que todo el software tiene pruebas unitarias. Una vez creado el artefacto, ejecuta pruebas integrales. Una vez completada esta primera ronda de pruebas, ejecuta un examen estático de la seguridad de la aplicación, que busca vulnerabilidades conocidas. Los desarrolladores reciben mensajes a medida que se supera cada puerta de prueba. Una vez completadas todas las pruebas, el artefacto de software se almacena en un repositorio de artefactos. 

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

1.  Colabore con las partes interesadas de su organización en el desarrollo de un estándar de pruebas para los artefactos de software. ¿Qué pruebas estándar deben superar todos los artefactos? ¿Hay requisitos de cumplimiento o gobernanza que deban incluirse en la cobertura de las pruebas? ¿Necesita realizar pruebas de calidad del código? Cuando finalicen las pruebas, ¿quién tiene que saberlo? 

   1.  La [arquitectura de referencia de canalizaciones de despliegue de AWS](https://pipelines.devops.aws.dev/) incluye una lista autorizada de tipos de pruebas que pueden realizarse en artefactos de software como parte de una canalización de integración. 

1.  Instrumente su aplicación con las pruebas necesarias en función de su estándar de pruebas de software. Cada conjunto de pruebas debería completarse en menos de diez minutos. Las pruebas deben ejecutarse como parte de una canalización de integración. 

   1.  [Amazon CodeGuru Reviewer](https://docs.aws.amazon.com/codeguru/latest/reviewer-ug/welcome.html) puede probar el código de su aplicación para detectar defectos. 

   1.  Puede usar el [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html) para realizar pruebas en artefactos de software. 

   1.  [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html) puede orquestar sus pruebas de software en una canalización. 

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

 **Prácticas recomendadas relacionadas:** 
+  [OPS05-BP01 Usar el control de versiones](ops_dev_integ_version_control.md) 
+  [OPS05-BP06 Compartir estándares de diseño](ops_dev_integ_share_design_stds.md) 
+  [OPS05-BP10 Automatizar completamente la integración y el despliegue](ops_dev_integ_auto_integ_deploy.md) 

 **Documentos relacionados:** 
+ [ Adopt a test-driven development approach (Adoptar un enfoque de desarrollo basado en pruebas) ](https://docs.aws.amazon.com/prescriptive-guidance/latest/best-practices-cdk-typescript-iac/development-best-practices.html)
+ [ Automated CloudFormation Testing Pipeline with TaskCat and CodePipeline ](https://aws.amazon.com/blogs/devops/automated-cloudformation-testing-pipeline-with-taskcat-and-codepipeline/)
+ [ Building end-to-end AWS DevSecOps CI/CD pipeline with open source SCA, SAST, and DAST tools ](https://aws.amazon.com/blogs/devops/building-end-to-end-aws-devsecops-ci-cd-pipeline-with-open-source-sca-sast-and-dast-tools/)
+ [ Getting started with testing serverless applications (Introducción a las pruebas de aplicaciones sin servidor) ](https://aws.amazon.com/blogs/compute/getting-started-with-testing-serverless-applications/)
+ [ My CI/CD pipeline is my release captain (Mi canalización CI/CD es mi capitán de lanzamiento) ](https://aws.amazon.com/builders-library/cicd-pipeline/)
+ [ Documento técnico Practicing Continuous Integration and Continuous Delivery on AWS](https://docs.aws.amazon.com/whitepapers/latest/practicing-continuous-integration-continuous-delivery/welcome.html)

 **Vídeos relacionados:** 
+ [AWS re:Invent 2020: Testable infrastructure: Integration testing on AWS](https://www.youtube.com/watch?v=KJC380Juo2w)
+ [AWS Summit ANZ 2021 - Driving a test-first strategy with CDK and test driven development ](https://www.youtube.com/watch?v=1R7G_wcyd3s)
+ [ Testing Your Infrastructure as Code with AWS CDK ](https://www.youtube.com/watch?v=fWtuwGSoSOU)

 **Recursos relacionados:** 
+ [AWS Deployment Pipeline Reference Architecture - Application ](https://pipelines.devops.aws.dev/application-pipeline/index.html)
+ [AWS Kubernetes DevSecOps Pipeline ](https://github.com/aws-samples/devsecops-cicd-containers)
+ [ Policy as Code Workshop – Test Driven Development (Taller de política como código: desarrollo basado en pruebas) ](https://catalog.us-east-1.prod.workshops.aws/workshops/9da471a0-266a-4d36-8596-e5934aeedd1f/en-US/pac-tools/cfn-guard/tdd)
+ [ Run unit tests for a Node.js application from GitHub by using AWS CodeBuild](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/run-unit-tests-for-a-node-js-application-from-github-by-using-aws-codebuild.html)
+ [ Use Serverspec for test-driven development of infrastructure code (Usar Serverspec para el desarrollo basado en pruebas del código de la infraestructura) ](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/use-serverspec-for-test-driven-development-of-infrastructure-code.html)

 **Servicios relacionados:** 
+  [Amazon CodeGuru Reviewer](https://docs.aws.amazon.com/codeguru/latest/reviewer-ug/welcome.html) 
+  [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html) 
+  [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html) 

# OPS05-BP03 Utilizar sistemas de administración de la configuración
<a name="ops_dev_integ_conf_mgmt_sys"></a>

 Utilice sistemas de administración de la configuración para efectuar modificaciones en la configuración y realizar un seguimiento de ellas. Estos sistemas reducen tanto los errores causados por los procesos manuales como el nivel de esfuerzo requerido para implementar los cambios. 

 La administración de la configuración estática establece valores al inicializar un recurso que se espera que permanezcan constantes durante toda la vida del recurso. Algunos ejemplos son el establecimiento de la configuración de un servidor web o de aplicaciones en una instancia o la definición de la configuración de un servicio de AWS en la [Consola de administración de AWS](https://docs.aws.amazon.com/awsconsolehelpdocs/index.html) a través de la [AWS CLI](https://aws.amazon.com/cli/). 

 La administración de la configuración dinámica establece valores en la inicialización que pueden cambiar o se espera que cambien durante la vida de un recurso. Por ejemplo, podría establecer un conmutador de características para activar la funcionalidad en su código a través de un cambio de configuración o cambiar el nivel de detalle del registro durante un incidente para recoger más datos y, después, volver a cambiar tras el incidente, con lo que se eliminan los registros ahora innecesarios y su gasto asociado. 

 En AWS, puede usar [AWS Config](https://docs.aws.amazon.com/config/latest/developerguide/WhatIsConfig.html) para supervisar continuamente las configuraciones de sus recursos de AWS [en las cuentas y las regiones](https://docs.aws.amazon.com/config/latest/developerguide/aggregate-data.html). Le ayuda a hacer un seguimiento de su historial de configuración, comprender cómo un cambio de configuración afectaría a otros recursos y auditarlos con respecto a las configuraciones esperadas o deseadas mediante [Reglas de AWS Config](https://docs.aws.amazon.com/config/latest/developerguide/evaluate-config.html) y [paquetes de conformidad de AWS Config](https://docs.aws.amazon.com/config/latest/developerguide/conformance-packs.html). 

 Si tiene configuraciones dinámicas en sus aplicaciones que se ejecutan en instancias de Amazon EC2, AWS Lambda, contenedores, aplicaciones móviles o dispositivos de IoT, puede utilizar [AWS AppConfig](https://docs.aws.amazon.com/appconfig/latest/userguide/what-is-appconfig.html) para configurarlas, validarlas, desplegarlas y supervisarlas en todos sus entornos. 

 En AWS, puede crear canalizaciones de integración continua/despliegue continuo (CI/CD) con servicios como [Herramientas para desarrolladores de AWS](https://aws.amazon.com/products/developer-tools/) (por ejemplo, [AWS CodeCommit](https://aws.amazon.com/codecommit/), [AWS CodeBuild](https://aws.amazon.com/codebuild/), [AWS CodePipeline](https://aws.amazon.com/codepipeline/), [AWS CodeDeploy](https://aws.amazon.com/codedeploy/)y [AWS CodeStar](https://aws.amazon.com/codestar/)). 

 **Resultado deseado:** configura, valida y despliega como parte de su proceso de integración continua y entrega continua (CI/CD). Supervisa para validar que las configuraciones sean correctas. Esto minimiza cualquier impacto en los usuarios finales y los clientes. 

 **Patrones comunes de uso no recomendados:** 
+  Actualiza manualmente la configuración del servidor web en toda su flota y varios servidores dejan de responder debido a errores de actualización. 
+  Actualiza manualmente su flota de servidores de aplicaciones en el transcurso de muchas horas. La incoherencia en la configuración durante el cambio provoca comportamientos inesperados. 
+  Alguien ha actualizado sus grupos de seguridad y ya no se puede acceder a los servidores web. Sin saber lo que ha cambiado, se pierde mucho tiempo investigando el problema, lo que prolonga el tiempo de recuperación. 
+  Una configuración de preproducción se introduce en producción a través de CI/CD sin validación. Expone a los usuarios y clientes a datos y servicios incorrectos. 

 **Beneficios de establecer esta práctica recomendada:** La adopción de sistemas de administración de la configuración reduce el nivel de esfuerzo para realizar cambios y hacer un seguimiento de los mismos, así como la frecuencia de los errores provocados por los procedimientos manuales. Los sistemas de administración de la configuración ofrecen garantías con respecto a la gobernanza, el cumplimiento y los requisitos reglamentarios. 

 **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 sistemas de administración de la configuración se utilizan para seguir e implementar cambios en las configuraciones de las aplicaciones y el entorno. Los sistemas de administración de la configuración también se utilizan para reducir los errores causados por los procesos manuales, hacer que los cambios de configuración sean repetibles y auditables y reducir el nivel de esfuerzo. 

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

1.  Identifique a los propietarios de la configuración. 

   1.  Haga que los propietarios de las configuraciones estén al tanto de cualquier necesidad de cumplimiento, gobernanza o normativa. 

1.  Identifique los elementos de configuración y los resultados. 

   1.  Los elementos de configuración son todas las configuraciones de las aplicaciones y los entornos afectadas por un despliegue dentro de su canalización de CI/CD. 

   1.  Los resultados incluyen los criterios de éxito, la validación y lo que se debe supervisar. 

1.  Seleccione herramientas para la administración de la configuración en función de los requisitos empresariales y el proceso de entrega. 

1.  Considere la posibilidad de utilizar despliegues ponderados, como los despliegues de valores controlados, para realizar cambios de configuración significativos a fin de minimizar el impacto de las configuraciones incorrectas. 

1.  Integre la administración de la configuración en su canalización de CI/CD. 

1.  Valide todos los cambios introducidos. 

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

 **Prácticas recomendadas relacionadas:** 
+  [OPS06-BP01 Planificar para hacer frente a los cambios infructuosos](ops_mit_deploy_risks_plan_for_unsucessful_changes.md) 
+  [OPS06-BP02 Despliegues de prueba](ops_mit_deploy_risks_test_val_chg.md) 
+  [OPS06-BP03 Emplear estrategias de despliegue seguros](ops_mit_deploy_risks_deploy_mgmt_sys.md) 
+  [OPS06-BP04 Automatizar las pruebas y la reversión](ops_mit_deploy_risks_auto_testing_and_rollback.md) 

 **Documentos relacionados:** 
+ [AWS Control Tower](https://docs.aws.amazon.com/controltower/latest/userguide/what-is-control-tower.html)
+ [ Acelerador de zonas de aterrizaje de AWS](https://aws.amazon.com/solutions/implementations/landing-zone-accelerator-on-aws/)
+ [AWS Config](https://aws.amazon.com/config/)
+ [ What is AWS Config? ](https://docs.aws.amazon.com/config/latest/developerguide/WhatIsConfig.html)
+  [AWS AppConfig](https://docs.aws.amazon.com/appconfig/latest/userguide/what-is-appconfig.html) 
+ [ What is AWS CloudFormation? ](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)
+  [Herramientas para desarrolladores de AWS](https://aws.amazon.com/products/developer-tools/) 

 **Vídeos relacionados:** 
+ [AWS re:Invent 2022 - Proactive governance and compliance for AWS workloads ](https://youtu.be/PpUnH9Y52X0?si=82wff87KHXcc6nbT)
+ [AWS re:Invent 2020: Achieve compliance as code using AWS Config](https://youtu.be/m8vTwvbzOfw?si=my4DP0FLq1zwKjho)
+ [ Manage and Deploy Application Configurations with AWS AppConfig](https://youtu.be/ztIxMY3IIu0?si=ovYGsxWOBysyQrg0)

# OPS05-BP04 Utilizar sistemas de administración de compilación y despliegue
<a name="ops_dev_integ_build_mgmt_sys"></a>

 Utilice sistemas de administración del desarrollo y la implementación. Estos sistemas reducen tanto los errores causados por los procesos manuales como el nivel de esfuerzo requerido para implementar los cambios. 

 En AWS, puede crear canalizaciones de integración continua/despliegue continuo (CI/CD) utilizando servicios como las [Herramientas para desarrolladores de AWS](https://aws.amazon.com/products/developer-tools/) (por ejemplo, AWS CodeCommit, [AWS CodeBuild](https://aws.amazon.com/codebuild/), [AWS CodePipeline](https://aws.amazon.com/codepipeline/), [AWS CodeDeploy](https://aws.amazon.com/codedeploy/)y [AWS CodeStar](https://aws.amazon.com/codestar/)). 

 **Resultado deseado:** sus sistemas de administración de compilación y despliegue respaldan el sistema de integración continua y entrega continua (CI/CD) de su organización, que proporciona capacidades para automatizar implementaciones seguras con las configuraciones correctas. 

 **Patrones comunes de uso no recomendados:** 
+  Después de compilar su código en el sistema de desarrollo, copia el ejecutable en los sistemas de producción y no se inicia. Los archivos de registro locales indican que ha fallado debido a la falta de dependencias. 
+  Crea con éxito su aplicación con nuevas características en su entorno de desarrollo y proporciona el código a control de calidad. No pasa el control de calidad porque le faltan activos estáticos. 
+  El viernes, después de mucho esfuerzo, crea con éxito su aplicación manualmente en su entorno de desarrollo incluyendo las funcionalidades recién codificadas. El lunes, no puede repetir los pasos que le permitieron crear con éxito su aplicación. 
+  Realiza las pruebas que ha creado para su nueva versión. A continuación, dedica la siguiente semana a configurar un entorno de pruebas y a realizar todas las pruebas de integración existentes, seguidas de las pruebas de rendimiento. El nuevo código tiene un impacto inaceptable en el rendimiento y debe desarrollarse y probarse de nuevo. 

 **Beneficios de establecer esta práctica recomendada:** Al proporcionar mecanismos para gestionar las actividades de desarrollo e implementación, se reduce el nivel de esfuerzo para realizar tareas repetitivas, se libera a los miembros del equipo para que se centren en sus tareas creativas de alto valor y se limita la introducción de errores de procedimientos manuales. 

 **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 sistemas de administración de compilación y despliegue se utilizan para seguir e implementar cambios, reducir los errores causados por los procesos manuales y reducir el nivel de esfuerzo requerido para un despliegue seguro. Automatice completamente el proceso de integración e implementación, desde el registro del código hasta la construcción, prueba, despliegue y validación. Esto reduce el tiempo de entrega, disminuye los costes, fomenta una mayor frecuencia de cambios, reduce el nivel de esfuerzo y aumenta la colaboración. 

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

![\[Diagrama que muestra el uso de una canalización de CI/CD con AWS CodePipeline y los servicios relacionados\]](http://docs.aws.amazon.com/es_es/wellarchitected/2023-10-03/framework/images/deployment-pipeline-tooling.png)


 

1.  Utilice AWS CodeCommit para controlar versiones, almacenar y administrar activos (como documentos, código fuente y archivos binarios). 

1.  Utilice CodeBuild para compilar el código fuente, ejecutar pruebas unitarias y producir artefactos listos para su despliegue. 

1.  Utilice CodeDeploy como un servicio de despliegue que automatiza los despliegues de aplicaciones para instancias de [Amazon EC2](https://aws.amazon.com/ec2/) , instancias locales, [funciones de AWS Lambda sin servidor](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html)o [Amazon ECS](https://aws.amazon.com/ecs/). 

1.  Supervise sus despliegues. 

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

 **Prácticas recomendadas relacionadas:** 
+  [OPS06-BP04 Automatizar las pruebas y la reversión](ops_mit_deploy_risks_auto_testing_and_rollback.md) 

 **Documentos relacionados:** 
+  [Herramientas para desarrolladores de AWS](https://aws.amazon.com/products/developer-tools/) 
+ [ What is AWS CodeCommit? ](https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html)
+  [What is AWS CodeBuild?](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html) 
+ [AWS CodeBuild](https://aws.amazon.com/codebuild/)
+  [What is AWS CodeDeploy?](https://docs.aws.amazon.com/codedeploy/latest/userguide/welcome.html) 

 **Vídeos relacionados:** 
+ [AWS re:Invent 2022 - AWS Well-Architected best practices for DevOps on AWS](https://youtu.be/hfXokRAyorA)

# OPS05-BP05 Administrar parches
<a name="ops_dev_integ_patch_mgmt"></a>

 Administre parches para ampliar las características, resolver problemas y mantener la conformidad con la gobernanza. Automatice la administración de parches para reducir los errores causados por los procesos manuales, la escala y el nivel de esfuerzo requerido para aplicarlos. 

 La administración de parches y vulnerabilidades forma parte de sus actividades de administración de beneficios y riesgos. Es preferible tener infraestructuras inmutables y desplegar las cargas de trabajo en estados en buenas condiciones conocidos y verificados. Cuando esto no es viable, la opción que queda es el parcheado in situ. 

 [Amazon EC2 Image Builder](https://aws.amazon.com/image-builder/) proporciona canalizaciones para actualizar las imágenes de las máquinas. Como parte de la administración de parches, considere las [imágenes de máquina de Amazon](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AMIs.html       ) (AMI) con una [canalización de AMI](https://docs.aws.amazon.com/imagebuilder/latest/userguide/start-build-image-pipeline.html) o las imágenes de contenedores con una [canalización de imágenes de Docker](https://docs.aws.amazon.com/imagebuilder/latest/userguide/start-build-container-pipeline.html), mientras que AWS Lambda proporciona patrones para [versiones ejecutables personalizadas y bibliotecas adicionales](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-custom.html) para eliminar las vulnerabilidades. 

 Debe administrar las actualizaciones de las [imágenes de máquina de Amazon](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AMIs.html) para imágenes de Linux o Windows Server con [Amazon EC2 Image Builder](https://aws.amazon.com/image-builder/). Puede usar el [Amazon Elastic Container Registry (Amazon ECR)](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html) con su canalización actual para administrar imágenes de Amazon ECS y administrar imágenes de Amazon EKS. Lambda incluye [características de administración de versiones](https://docs.aws.amazon.com/lambda/latest/dg/configuration-versions.html). 

 La aplicación de parches no debe realizarse en los sistemas de producción sin antes realizar pruebas en un entorno seguro. Los parches solo deben aplicarse si sirven para mejorar los resultados operativos o empresariales. En AWS, puede usar [AWS Systems Manager Patch Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-patch.html) para automatizar el proceso de aplicación de parches en los sistemas administrados y programar la actividad con [ventanas de mantenimiento de Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-maintenance.html). 

 **Resultado deseado:** las imágenes del contenedor y AMI están parcheadas, actualizadas y listas para su lanzamiento. Puede realizar un seguimiento del estado de todas las imágenes desplegadas y determinar el cumplimiento de los parches. Puede informar sobre el estado actual y disponer de un proceso que satisfaga sus necesidades de cumplimiento. 

 **Patrones comunes de uso no recomendados:** 
+  Se le encomienda la aplicación de todos los nuevos parches de seguridad en un plazo de dos horas, lo que da lugar a numerosas interrupciones debido a la incompatibilidad de las aplicaciones con los parches. 
+  Una biblioteca sin parches tiene consecuencias no deseadas, ya que partes desconocidas utilizan las vulnerabilidades de la misma para acceder a su carga de trabajo. 
+  Aplica parches a los entornos de los desarrolladores sin avisarles. Recibe múltiples quejas de los desarrolladores porque su entorno ha dejado de funcionar tal como se esperaba. 
+  No se ha parcheado el software comercial disponible en el mercado en una instancia persistente. Cuando tiene un problema con el software y se pone en contacto con el proveedor, le notifican que la versión no es compatible y que tiene que aplicar un parche en un nivel específico para recibir asistencia. 
+  Ha utilizado un parche para el software de cifrado publicado recientemente que tiene importantes mejoras de rendimiento. Su sistema sin parches tiene problemas de rendimiento que continúan como resultado de no aplicar los parches. 
+  Se le notifica una vulnerabilidad de día cero que requiere una solución de emergencia y tiene que parchar todos sus entornos manualmente. 

 **Beneficios de establecer esta práctica recomendada:** Al establecer un proceso de administración de parches, que incluya sus criterios de aplicación de parches y la metodología de distribución en sus entornos, puede escalar e informar sobre los niveles de parches. Esto proporciona garantías en torno a la aplicación de parches de seguridad y garantiza una visibilidad clara del estado de las correcciones conocidas que se están aplicando. Esto fomenta la adopción de las características y capacidades deseadas, la rápida eliminación de problemas y el cumplimiento sostenido de la gobernanza. Implante sistemas de administración de parches y automatización para reducir el nivel de esfuerzo en el despliegue de parches y limitar los errores causados por los procesos manuales. 

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

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

 Aplique parches a los sistemas para solucionar problemas, para obtener las características o capacidades deseadas y para mantener la conformidad con la política de gobernanza y los requisitos de soporte de los proveedores. En sistemas inmutables, implemente con el conjunto de parches adecuados para lograr el resultado deseado. Automatice el mecanismo de administración de parches para reducir el tiempo que tarda en aplicarlos, evitar los errores causados por los procesos manuales y reducir el nivel de esfuerzo requerido para aplicar los parches. 

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

 Para Amazon EC2 Image Builder: 

1.  Con Amazon EC2 Image Builder, especifique los detalles de la canalización: 

   1.  Cree una canalización de imágenes y asígnele un nombre. 

   1.  Defina el horario y la zona horaria de la canalización. 

   1.  Configure las dependencias. 

1.  Elija una receta: 

   1.  Seleccione una receta existente o cree una nueva. 

   1.  Seleccione el tipo de imagen. 

   1.  Asigne un nombre y versión a la receta. 

   1.  Seleccione la imagen base. 

   1.  Añada componentes de compilación y añádalos al registro de destino. 

1.  Opcional: defina la configuración de la infraestructura. 

1.  Opcional: defina los ajustes de configuración. 

1.  Revise la configuración. 

1.  Mantenga la higiene de las recetas con regularidad. 

 Para Systems Manager Patch Manager: 

1.  Cree un punto de referencia de parches. 

1.  Seleccione un método de operaciones de creación de rutas. 

1.  Habilite el análisis y la generación de informes de cumplimiento. 

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

 **Prácticas recomendadas relacionadas:** 
+  [OPS06-BP04 Automatizar las pruebas y la reversión](ops_mit_deploy_risks_auto_testing_and_rollback.md) 

 **Documentos relacionados:** 
+ [ What is Amazon EC2 Image Builder ](https://docs.aws.amazon.com/imagebuilder/latest/userguide/what-is-image-builder.html)
+ [ Create an image pipeline using the Amazon EC2 Image Builder ](https://docs.aws.amazon.com/imagebuilder/latest/userguide/start-build-image-pipeline.html)
+ [ Create a container image pipeline ](https://docs.aws.amazon.com/imagebuilder/latest/userguide/start-build-container-pipeline.html)
+  [AWS Systems Manager Patch Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-patch.html) 
+ [ Working with Patch Manager ](https://docs.aws.amazon.com/systems-manager/latest/userguide/patch-manager-console.html)
+ [ Working with patch compliance reports ](https://docs.aws.amazon.com/systems-manager/latest/userguide/patch-manager-compliance-reports.html)
+ [ Herramientas para desarrolladores de AWS](https://aws.amazon.com/products/developer-tools)

 **Vídeos relacionados:** 
+  [CI/CD for Serverless Applications on AWS](https://www.youtube.com/watch?v=tEpx5VaW4WE) 
+  [Diseñar con las operaciones en mente](https://youtu.be/uh19jfW7hw4) 

   **Ejemplos relacionados:** 
+ [ Well-Architected Labs - Inventory and Patch Management (Laboratorios de Well-Architected: administración de inventario y parches) ](https://wellarchitectedlabs.com/operational-excellence/100_labs/100_inventory_patch_management)
+ [AWS Systems Manager Patch Manager tutorials ](https://docs.aws.amazon.com/systems-manager/latest/userguide/patch-manager-tutorials.html)

# OPS05-BP06 Compartir estándares de diseño
<a name="ops_dev_integ_share_design_stds"></a>

 Comparta las prácticas recomendadas entre los equipos para aumentar la conciencia y maximizar los beneficios del trabajo de desarrollo. Documéntelas y manténgalas actualizadas a medida que evoluciona su arquitectura. Si se aplican los estándares compartidos en su organización, es fundamental que existan mecanismos para solicitar adiciones, cambios y excepciones a los estándares. Sin esta opción, los estándares se convierten en un obstáculo para la innovación. 

 **Resultado deseado:** Los estándares de diseño se comparten entre los equipos de sus organizaciones. Se documentan y actualizan a medida que evolucionan las prácticas recomendadas. 

 **Patrones comunes de uso no recomendados:** 
+ Dos equipos de desarrollo distintos han creado, cada uno, un servicio de autenticación de usuarios. Sus usuarios tienen que mantener un conjunto de credenciales diferente para cada parte del sistema a la que quieran acceder. 
+ Cada equipo administra su propia infraestructura. Un nuevo requisito de conformidad obliga a cambiar la infraestructura y cada equipo lo aplica de forma distinta.

 **Beneficios de establecer esta práctica recomendada:** El uso de estándares compartidos favorece la adopción de las prácticas recomendadas y maximiza las ventajas de los esfuerzos de desarrollo. La documentación y actualización de los estándares de diseño mantiene a su organización al día de las prácticas recomendadas y de los requisitos de seguridad y cumplimiento. 

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

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

 Comparta entre los equipos las prácticas recomendadas, los estándares de diseño, las listas de verificación, los procedimientos operativos, las orientaciones y los requisitos de gobernanza. Disponga de procedimientos para solicitar cambios, adiciones y excepciones a los estándares de diseño para apoyar la mejora y la innovación. Asegúrese de que los equipos estén al tanto del contenido publicado. Disponga de un mecanismo para mantener al día los estándares de diseño a medida que surgen nuevas prácticas recomendadas. 

 **Ejemplo de cliente** 

 AnyCompany Retail cuenta con un equipo de arquitectura interfuncional que crea patrones de arquitectura de software. Este equipo construye la arquitectura con la conformidad y la gobernanza integradas. Los equipos que adoptan estos estándares compartidos se benefician de la conformidad y la gobernanza integradas. Pueden construir rápidamente sobre el estándar de diseño. El equipo de arquitectura se reúne trimestralmente para evaluar los patrones de arquitectura y actualizarlos en caso necesario. 

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

1.  Identifique un equipo interfuncional que se encargue de desarrollar y actualizar los estándares de diseño. Este equipo debe trabajar con las partes interesadas de toda la organización a fin de desarrollar estándares de diseño, procedimientos operativos, listas de verificación, guías y requisitos de gobernanza. Documente los estándares de diseño y compártalos dentro de su organización. 

   1.  [AWS Service Catalog](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/introduction.html) puede utilizarse para crear carteras que representen los estándares de diseño utilizando la infraestructura como código. Puede compartir carteras entre cuentas. 

1.  Disponga de un mecanismo para mantener al día los estándares de diseño a medida que se identifiquen nuevas prácticas recomendadas. 

1.  Si los estándares de diseño se aplican de forma centralizada, cuente con un proceso para solicitar cambios, actualizaciones y exenciones. 

 **Nivel de esfuerzo para el plan de implementación:** Medio. El desarrollo de un proceso para crear y compartir estándares de diseño precisa de coordinación y cooperación con las partes interesadas de toda la organización. 

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

 **Prácticas recomendadas relacionadas:** 
+  [OPS01-BP03 Evaluar los requisitos de gobernanza](ops_priorities_governance_reqs.md) - Los requisitos de gobernanza influyen en los estándares de diseño. 
+  [OPS01-BP04 Evaluar los requisitos de cumplimiento](ops_priorities_compliance_reqs.md) - La conformidad es un elemento vital de la creación de estándares de diseño. 
+  [OPS07-BP02 Garantizar una revisión sistemática de la preparación operativa](ops_ready_to_support_const_orr.md) - Las listas de verificación de preparación operativa son un mecanismo para implementar los estándares de diseño a la hora de diseñar la carga de trabajo. 
+  [OPS11-BP01 Tener un proceso de mejora continua](ops_evolve_ops_process_cont_imp.md) - La actualización de los estándares de diseño forma parte de la mejora continua. 
+  [OPS11-BP04 Realizar la administración de conocimientos](ops_evolve_ops_knowledge_management.md) - Como parte de su práctica de administración del conocimiento, documente y comparta los estándares de diseño. 

 **Documentos relacionados:** 
+ [ Automate AWS Backups with AWS Service Catalog](https://aws.amazon.com/blogs/mt/automate-aws-backups-with-aws-service-catalog/)
+ [AWS Service Catalog Account Factory-Enhanced ](https://aws.amazon.com/blogs/mt/aws-service-catalog-account-factory-enhanced/)
+ [ How Expedia Group built Database as a Service (DBaaS) offering using AWS Service Catalog](https://aws.amazon.com/blogs/mt/how-expedia-group-built-database-as-a-service-dbaas-offering-using-aws-service-catalog/)
+ [ Maintain visibility over the use of cloud architecture patterns (Mantener la visibilidad sobre el uso de patrones de arquitectura de la nube) ](https://aws.amazon.com/blogs/architecture/maintain-visibility-over-the-use-of-cloud-architecture-patterns/)
+ [ Simplify sharing your AWS Service Catalog portfolios in an AWS Organizations setup ](https://aws.amazon.com/blogs/mt/simplify-sharing-your-aws-service-catalog-portfolios-in-an-aws-organizations-setup/)

 **Vídeos relacionados:** 
+ [AWS Service Catalog – Getting Started ](https://www.youtube.com/watch?v=A9kKy6WhqVA)
+ [AWS re:Invent 2020: Manage your AWS Service Catalog portfolios like an expert ](https://www.youtube.com/watch?v=lVfXkWHAtR8)

 **Ejemplos relacionados:** 
+ [AWS Service Catalog Reference Architecture ](https://github.com/aws-samples/aws-service-catalog-reference-architectures)
+ [AWS Service Catalog Workshop ](https://catalog.us-east-1.prod.workshops.aws/workshops/d40750d7-a330-49be-9945-cde864610de9/en-US)

 **Servicios relacionados:** 
+  [AWS Service Catalog](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/introduction.html) 

# OPS05-BP07 Adoptar prácticas para mejorar la calidad del código
<a name="ops_dev_integ_code_quality"></a>

Adopte prácticas para mejorar la calidad del código y minimizar los defectos. Algunos ejemplos son el desarrollo basado en pruebas, las revisiones de código, la adopción de estándares y la programación en pareja. Incorpore estas prácticas a su proceso de integración y entrega continuas. 

 **Resultado deseado:** Su organización utiliza las prácticas recomendadas, como las revisiones de código o la programación en pareja, para mejorar la calidad del código. Los desarrolladores y operadores adoptan las prácticas recomendadas de calidad del código como parte del ciclo de vida de desarrollo del software. 

 **Patrones comunes de uso no recomendados:** 
+ Usted envía código a la rama principal de su aplicación sin una revisión del código. El cambio se despliega automáticamente en producción y provoca una interrupción del servicio.
+  Se desarrolla una nueva aplicación sin pruebas de unidad, integrales o de integración. No hay forma de probar la aplicación antes del despliegue. 
+  Los equipos realizan cambios manuales en producción para corregir defectos. Los cambios no se someten a pruebas ni revisiones de código y no se capturan ni registran en los procesos de integración y entrega continuas. 

 **Beneficios de establecer esta práctica recomendada:** Al adoptar prácticas para mejorar la calidad del código, puede ayudar a minimizar los problemas introducidos en la producción. La calidad del código aumenta gracias a las prácticas recomendadas, como la programación en pareja y las revisiones del código. 

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

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

 Adopte prácticas para mejorar la calidad del código y minimizar los defectos antes de la implementación. Utilice prácticas como desarrollo basado en pruebas, revisiones de código y programación en pareja para mejorar la calidad de su proceso. 

 **Ejemplo de cliente** 

 AnyCompany Retail adopta diversas prácticas para mejorar la calidad del código. Ha adoptado el desarrollo basado en pruebas como norma para escribir aplicaciones. Para algunas características nuevas, hace que los desarrolladores programen en pareja durante un sprint. Cada solicitud de extracción se somete a una revisión de código por parte de un desarrollador sénior antes de que se integre y despliegue. 

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

1.  Adopte prácticas que fomenten la calidad del código, como el desarrollo basado en pruebas, las revisiones del código y la programación en parejas, en su proceso de integración y entrega continuas. Utilice estas técnicas para mejorar la calidad del software. 

   1.  [Amazon CodeGuru Reviewer](https://docs.aws.amazon.com/codeguru/latest/reviewer-ug/welcome.html) puede proporcionar recomendaciones de programación para código Java y Python mediante el uso de machine learning. 

   1.  Puede crear entornos de desarrollo compartidos con [AWS Cloud9](https://docs.aws.amazon.com/cloud9/latest/user-guide/welcome.html) donde puede colaborar en el desarrollo del código. 

 **Nivel de esfuerzo para el plan de implementación:** Medio. Existen numerosas formas de implementar esta práctica recomendada, pero conseguir que la organización la adopte puede suponer un reto. 

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

 **Prácticas recomendadas relacionadas:** 
+  [OPS05-BP06 Compartir estándares de diseño](ops_dev_integ_share_design_stds.md) - Puede compartir los estándares de diseño como parte de su práctica de calidad del código. 

 **Documentos relacionados:** 
+ [ Agile Software Guide (Guía del software Agile) ](https://martinfowler.com/agile.html)
+ [My CI/CD pipeline is my release captain (Mi canalización CI/CD es mi capitán de lanzamiento)](https://aws.amazon.com/builders-library/cicd-pipeline/)
+ [ Automate code reviews with Amazon CodeGuru Reviewer (Revisiones automáticas de código con Amazon CodeGuru Reviewer) ](https://aws.amazon.com/blogs/devops/automate-code-reviews-with-amazon-codeguru-reviewer/)
+ [ Adopt a test-driven development approach (Adoptar un enfoque de desarrollo basado en pruebas) ](https://docs.aws.amazon.com/prescriptive-guidance/latest/best-practices-cdk-typescript-iac/development-best-practices.html)
+ [ How DevFactory builds better applications with Amazon CodeGuru ](https://aws.amazon.com/blogs/machine-learning/how-devfactory-builds-better-applications-with-amazon-codeguru/)
+ [ On Pair Programming (Programación en pareja) ](https://martinfowler.com/articles/on-pair-programming.html)
+ [ RENGA Inc. automates code reviews with Amazon CodeGuru ](https://aws.amazon.com/blogs/machine-learning/renga-inc-automates-code-reviews-with-amazon-codeguru/)
+ [ The Art of Agile Development: Test-Driven Development (El arte del desarrollo ágil: desarrollo basado en pruebas) ](http://www.jamesshore.com/v2/books/aoad1/test_driven_development)
+ [ Why code reviews matter (and actually save time\$1) (Por qué son importantes las revisiones del código [¡y ahorran tiempo\$1]) ](https://www.atlassian.com/agile/software-development/code-reviews)

 **Vídeos relacionados:** 
+ [AWS re:Invent 2020: Continuous improvement of code quality with Amazon CodeGuru ](https://www.youtube.com/watch?v=iX1i35H1OVw)
+ [AWS Summit ANZ 2021 - Driving a test-first strategy with CDK and test driven development ](https://www.youtube.com/watch?v=1R7G_wcyd3s)

 **Servicios relacionados:** 
+ [Amazon CodeGuru Reviewer](https://docs.aws.amazon.com/codeguru/latest/reviewer-ug/welcome.html)
+ [ Amazon CodeGuru Profiler ](https://docs.aws.amazon.com/codeguru/latest/profiler-ug/what-is-codeguru-profiler.html)
+  [AWS Cloud9](https://docs.aws.amazon.com/cloud9/latest/user-guide/welcome.html) 

# OPS05-BP08 Usar varios entornos
<a name="ops_dev_integ_multi_env"></a>

 Use diversos entornos para experimentar, desarrollar y poner a prueba su carga de trabajo. Utilice niveles crecientes de controles a medida que los entornos se acerquen a la fase de producción para asegurarse de que su carga de trabajo funcione según lo previsto cuando se despliegue. 

 **Resultado deseado:** tiene varios entornos que reflejan sus necesidades de cumplimiento y gobernanza. Prueba y hace avanzar el código a través de entornos en su ruta hasta producción. 

 **Patrones comunes de uso no recomendados:** 
+  Está realizando el desarrollo en un entorno compartido y otro desarrollador sobrescribe sus cambios de código. 
+  Los controles de seguridad restrictivos de su entorno de desarrollo compartido le impiden experimentar con nuevos servicios y características. 
+  Realiza pruebas de carga en sus sistemas de producción y provoca una interrupción a los usuarios. 
+  Se ha producido un error crítico que ha provocado la pérdida de datos en producción. En el entorno de producción, se intenta recrear las condiciones que condujeron a la pérdida de datos para poder identificar cómo ocurrió y evitar que vuelva a suceder. Para evitar más pérdida de datos durante las pruebas, se ve obligado a hacer que la aplicación no esté disponible para los usuarios. 
+  Utiliza un servicio de inquilino múltiple y no puede atender la solicitud de un cliente de tener un entorno dedicado. 
+  Puede que no siempre pruebe, pero cuando lo hace, lo hace en su entorno de producción. 
+  Cree que la simplicidad de un entorno único anula el alcance del impacto de los cambios en el entorno. 

 **Beneficios de establecer esta práctica recomendada:** puede dar respaldo a varios entornos simultáneos de desarrollo, de pruebas y de producción sin crear conflictos entre los desarrolladores o las comunidades de usuarios. 

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

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

 Use varios entornos y proporcione a los desarrolladores entornos aislados con controles minimizados para ayudar con la experimentación. Proporcione entornos de desarrollo individuales para ayudar al trabajo en paralelo, que aumenta la agilidad del desarrollo. Implemente controles más rigurosos en los entornos que están cercanos a la producción para que los desarrolladores puedan innovar. Utilice infraestructura como código y sistemas de administración de la configuración para implementar entornos que estén configurados de forma coherente con los controles presentes en la producción y asegurarse de que los sistemas funcionarán como se espera cuando se implementen. Cuando los entornos no estén en uso (por ejemplo, sistemas de desarrollo durante la noche y los fines de semana), apáguelos para evitar los costos asociados a los recursos inactivos. Cuando realice pruebas de carga, despliegue entornos semejantes al de producción para mejorar los resultados válidos. 

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

 **Documentos relacionados:** 
+ [ Instance Scheduler en AWS](https://aws.amazon.com/solutions/implementations/instance-scheduler-on-aws/)
+  [¿Qué es AWS CloudFormation?](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) 

# OPS05-BP09 Realizar cambios frecuentes, pequeños y reversibles
<a name="ops_dev_integ_freq_sm_rev_chg"></a>

 Los cambios frecuentes, pequeños y reversibles tienen menos alcance y menos repercusiones. Cuando se utilizan junto con sistemas de administración de cambios, sistemas de administración de la configuración y sistemas de compilación y entrega, los cambios frecuentes, pequeños y reversibles reducen el alcance y el impacto de un cambio. Al hacerlo, los problemas se solucionan de forma más eficaz y rápida con la opción de revertir los cambios. 

 **Patrones comunes de uso no recomendados:** 
+  Despliega una nueva versión de su aplicación trimestralmente con una ventana de cambios que significa que un servicio principal está desactivado. 
+  Realiza cambios frecuentes en el esquema de su base de datos sin realizar un seguimiento de los cambios en sus sistemas de administración. 
+  Realiza actualizaciones manuales in situ, sobrescribiendo las instalaciones y configuraciones existentes y no tiene un plan de reversión claro. 

 **Beneficios de establecer esta práctica recomendada:** los esfuerzos de desarrollo son más rápidos pues despliega pequeños cambios con frecuencia. Cuando los cambios son pequeños, es mucho más fácil identificar si tienen consecuencias no deseadas y es más fácil revertirlos. Cuando los cambios son reversibles, hay menos riesgo de aplicar el cambio, ya que la recuperación se simplifica. El proceso de cambio tiene un menor riesgo y el impacto de un cambio erróneo se reduce. 

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

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

 Utilice cambios frecuentes, pequeños y reversibles para reducir el alcance y las repercusiones del cambio. Esto facilita la resolución de problemas, ayuda a realizar correcciones rápidamente y permite revertir los cambios. También aumenta el ritmo con el que entrega valor a la empresa. 

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

 **Prácticas recomendadas relacionadas:** 
+  [OPS05-BP03 Utilizar sistemas de administración de la configuración](ops_dev_integ_conf_mgmt_sys.md) 
+  [OPS05-BP04 Utilizar sistemas de administración de compilación y despliegue](ops_dev_integ_build_mgmt_sys.md) 
+  [OPS06-BP04 Automatizar las pruebas y la reversión](ops_mit_deploy_risks_auto_testing_and_rollback.md) 

 **Documentos relacionados:** 
+ [ Implementing Microservices on AWS (Implementación de microservicios en AWS) ](https://docs.aws.amazon.com/whitepapers/latest/microservices-on-aws/microservices-on-aws.html)
+ [ Microservices - Observability ](https://docs.aws.amazon.com/whitepapers/latest/microservices-on-aws/observability.html)

# OPS05-BP10 Automatizar completamente la integración y el despliegue
<a name="ops_dev_integ_auto_integ_deploy"></a>

 Compilación, despliegue, y comprobación automáticas de la carga de trabajo Esto reduce tanto los errores causados por los procesos manuales como el esfuerzo requerido para implementar los cambios. 

 Aplique metadatos utilizando [etiquetas de recursos](https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html) y [Grupos de recursos de AWS](https://docs.aws.amazon.com/ARG/latest/APIReference/Welcome.html) siguiendo una estrategia [coherente de etiquetado](https://aws.amazon.com/answers/account-management/aws-tagging-strategies/) para ayudar a identificar sus recursos. Etiquete sus recursos para la organización, la contabilidad de costes, los controles de acceso y el objetivo de ejecución de actividades de operaciones automatizadas. 

 **Resultado deseado:** los desarrolladores utilizan herramientas para entregar código y progresar hasta producción. Los desarrolladores no tienen que iniciar sesión en la Consola de administración de AWS para realizar actualizaciones. Existe una pista de auditoría completa de los cambios y la configuración, que satisface las necesidades de gobernanza y cumplimiento. Los procesos son repetibles y están estandarizados en todos los equipos. Los desarrolladores pueden centrarse en el desarrollo y en la introducción de código, lo que aumenta la productividad. 

 **Patrones comunes de uso no recomendados:** 
+  El viernes finaliza con la creación del nuevo código para la ramificación de características. El lunes, después de ejecutar los scripts de pruebas de calidad del código y cada uno de los scripts de pruebas unitarias, comprueba el código para la siguiente versión programada. 
+  Se le asigna la tarea de codificar una solución para un problema crítico que afecta a un gran número de clientes en producción. Después de probar la corrección, confirma el código y envía un correo electrónico a la administración de cambios para solicitar la aprobación de su despliegue en producción. 
+  Como desarrollador, debe iniciar sesión en la Consola de administración de AWS para crear un nuevo entorno de desarrollo utilizando métodos y sistemas no estándar. 

 **Beneficios de establecer esta práctica recomendada:** Al implementar sistemas automatizados de administración de compilación y despliegue, se reducen los errores causados por los procesos manuales y se reduce el esfuerzo para desplegar los cambios, lo que ayuda a los miembros de su equipo a centrarse en la entrega de valor empresarial. Aumenta la velocidad de entrega a medida que progresa hasta producción. 

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

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

 Utilice sistemas de administración de compilación y despliegue para realizar un seguimiento e implementar el cambio, a fin de reducir tanto los errores causados por los procesos manuales como el nivel de esfuerzo. Automatice completamente el proceso de integración e implementación, desde el registro del código hasta la construcción, prueba, despliegue y validación. Esto reduce el tiempo de entrega, fomenta una mayor frecuencia de cambios, reduce el nivel de esfuerzo, aumenta la velocidad de comercialización, se traduce en un aumento de la productividad y aumenta la seguridad del código a medida que progresa hasta producción. 

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

 **Prácticas recomendadas relacionadas:** 
+  [OPS05-BP03 Utilizar sistemas de administración de la configuración](ops_dev_integ_conf_mgmt_sys.md) 
+  [OPS05-BP04 Utilizar sistemas de administración de compilación y despliegue](ops_dev_integ_build_mgmt_sys.md) 

 **Documentos relacionados:** 
+  [What is AWS CodeBuild?](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html) 
+  [What is AWS CodeDeploy?](https://docs.aws.amazon.com/codedeploy/latest/userguide/welcome.html) 

 **Vídeos relacionados:** 
+ [AWS re\$1:Invent 2022 - AWS Well-Architected best practices for DevOps on AWS](https://youtu.be/hfXokRAyorA)