

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

 Adopte enfoques que mejoren el flujo de cambios en producción, que activen la refactorización, la respuesta rápida sobre la calidad y la corrección de errores. Esto acelerará los cambios positivos que se introducen en producción, limitará los problemas implementados y logrará una rápida identificación y solución de los problemas introducidos a través de las actividades de implementación. 

**Topics**
+ [

# OPS05-BP01 Uso del control de versiones
](ops_dev_integ_version_control.md)
+ [

# OPS05-BP02 Prueba y validación de los cambios
](ops_dev_integ_test_val_chg.md)
+ [

# OPS05-BP03 Uso de sistemas de administración de la configuración
](ops_dev_integ_conf_mgmt_sys.md)
+ [

# OPS05-BP04 Uso de sistemas de administración de compilación e implementación
](ops_dev_integ_build_mgmt_sys.md)
+ [

# OPS05-BP05 Administración de parches
](ops_dev_integ_patch_mgmt.md)
+ [

# OPS05-BP06 Uso compartido de estándares de diseño
](ops_dev_integ_share_design_stds.md)
+ [

# OPS05-BP07 Implementación de prácticas para mejorar la calidad del código
](ops_dev_integ_code_quality.md)
+ [

# OPS05-BP08 Uso de varios entornos
](ops_dev_integ_multi_env.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)

# OPS05-BP01 Uso del 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 revisiones o de [control de orígenes](https://aws.amazon.com/devops/source-control/) como [Git](https://aws.amazon.com/devops/source-control/git/) 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 control de versiones correcto. 

 **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. Contacta 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 Uso de sistemas de administración de compilación e implementación](ops_dev_integ_build_mgmt_sys.md) 

 **Videos relacionados:** 
+ [AWS re:Invent 2023 - How Lockheed Martin builds software faster, powered by DevSecOps ](https://www.youtube.com/watch?v=Q1OSyxYkl5w)
+ [AWS re:Invent 2023 - How GitHub operationalizes AI for team collaboration and productivity ](https://www.youtube.com/watch?v=cOVvGaiusOI)

# OPS05-BP02 Prueba y validación de los cambios
<a name="ops_dev_integ_test_val_chg"></a>

 Cada cambio implementado 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 hacer 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:** 
+  Implementa un nuevo cambio de software sin hacer ninguna prueba. No funciona en producción, lo que provoca una interrupción del servicio. 
+  Los nuevos grupos de seguridad se implementan con AWS 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 implementa en producción. 

 **Beneficios de establecer esta práctica recomendada:** se reduce la tasa de errores de cambio de las implementaciones 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 implementar 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 hacen 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. 

 Utilice el poder de la IA generativa con Amazon Q Developer para mejorar la productividad de los desarrolladores y la calidad del código. Amazon Q Developer incluye la generación de sugerencias de código (basadas en modelos de lenguaje de gran tamaño), la producción de pruebas unitarias (incluidas condiciones límite) y mejoras de seguridad del código mediante la detección y la corrección de las vulnerabilidades de seguridad. 

 **Ejemplo de cliente** 

 Como parte de su canalización de integración continua, AnyCompany Retail ejecuta 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 efectuar pruebas de calidad del código? Cuando finalicen las pruebas, ¿quién tiene que saberlo? 

   1.  [AWS Deployment Pipeline Reference Architecture](https://pipelines.devops.aws.dev/) incluye una lista autorizada de tipos de pruebas que pueden llevarse a cabo 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.  Utilice [Amazon Q Developer](https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/what-is.html), una herramienta de IA generativa que puede ayudar a crear casos de pruebas unitarias (incluidas las condiciones de límite), generar funciones mediante código y comentarios e implementar algoritmos conocidos. 

   1.  Utilice [Revisor de Amazon CodeGuru](https://docs.aws.amazon.com/codeguru/latest/reviewer-ug/welcome.html) para comprobar si el código de la aplicación presenta defectos. 

   1.  Puede utilizar [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html) para hacer 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 Uso del control de versiones](https://docs.aws.amazon.com/wellarchitected/latest/operational-excellence-pillar/ops_dev_integ_version_control.html) 
+  [OPS05-BP06 Uso compartido de estándares de diseño](https://docs.aws.amazon.com/wellarchitected/latest/operational-excellence-pillar/ops_dev_integ_share_design_stds.html) 
+  [OPS05-BP07 Implementación de prácticas para mejorar la calidad del código](https://docs.aws.amazon.com/wellarchitected/latest/operational-excellence-pillar/ops_dev_integ_code_quality.html) 
+  [OPS05-BP10 Automatización completa de la integración y la implementación](https://docs.aws.amazon.com/wellarchitected/latest/operational-excellence-pillar/ops_dev_integ_auto_integ_deploy.html) 

 **Documentos relacionados:** 
+  [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) 
+  [Accelerate your Software Development Lifecycle with Amazon Q](https://aws.amazon.com/blogs/devops/accelerate-your-software-development-lifecycle-with-amazon-q/) 
+  [Amazon Q Developer, now generally available, includes previews of new capabilities to reimagine developer experience](https://aws.amazon.com/blogs/aws/amazon-q-developer-now-generally-available-includes-new-capabilities-to-reimagine-developer-experience/) 
+  [The Ultimate Cheat Sheet for Using Amazon Q Developer in Your IDE](https://community.aws/content/2eYoqeFRqaVnk900emsknDfzhfW/the-ultimate-cheat-sheet-for-using-amazon-q-developer-in-your-ide) 
+  [Shift-Left Workload, leveraging AI for Test Creation](https://community.aws/content/2gBZtC94gPzaCQRnt4P0rIYWuBx/shift-left-workload-leveraging-ai-for-test-creation) 
+  [Amazon Q Developer Center](https://aws.amazon.com/developer/generative-ai/amazon-q/) 
+  [10 ways to build applications faster with Amazon CodeWhisperer](https://aws.amazon.com/blogs/devops/10-ways-to-build-applications-faster-with-amazon-codewhisperer/) 
+  [Looking beyond code coverage with Amazon CodeWhisperer](https://aws.amazon.com/blogs/devops/looking-beyond-code-coverage-with-amazon-codewhisperer/) 
+  [Best Practices for Prompt Engineering with Amazon CodeWhisperer](https://aws.amazon.com/blogs/devops/best-practices-for-prompt-engineering-with-amazon-codewhisperer/) 
+  [Automated AWS 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](https://aws.amazon.com/blogs/compute/getting-started-with-testing-serverless-applications/) 
+  [My CI/CD pipeline is my release captain](https://aws.amazon.com/builders-library/cicd-pipeline/) 
+  [Documento técnico de AWS: Práctica de integración y entrega continuas](https://docs.aws.amazon.com/whitepapers/latest/practicing-continuous-integration-continuous-delivery/welcome.html) 

 **Videos relacionados:** 
+  [Implement an API with Amazon Q Developer Agent for Software Development](https://www.youtube.com/watch?v=U4XEvJUvff4) 
+  [Installing, Configuring, & Using Amazon Q Developer with JetBrains IDEs (How-to)](https://www.youtube.com/watch?v=-iQfIhTA4J0) 
+  [Mastering the art of Amazon CodeWhisperer - YouTube playlist](https://www.youtube.com/playlist?list=PLDqi6CuDzubxzL-yIqgQb9UbbceYdKhpK) 
+  [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) 
+  [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](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/use-serverspec-for-test-driven-development-of-infrastructure-code.html) 

 **Servicios relacionados:** 
+  [Amazon Q Developer](https://aws.amazon.com/q/developer/) 
+  [Revisor de Amazon CodeGuru](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 Uso de 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 hacer 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. 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.

Las configuraciones deben implementarse en un estado conocido y coherente. Debe utilizar la inspección automatizada para supervisar continuamente las configuraciones de los recursos en todos los entornos y regiones. Estos controles deben definirse como un código y una gestión automatizados para garantizar que las reglas se apliquen de forma coherente en todos los entornos. Los cambios en las configuraciones deben actualizarse mediante procedimientos de control de cambios acordados y aplicarse de manera coherente, a la vez que se respeta el control de versiones. La configuración de la aplicación debe gestionarse de forma independiente del código de la aplicación y la infraestructura. Esto permite una implementación uniforme en varios entornos. Los cambios de configuración no dan como resultado la reconstrucción o la reimplementación de la aplicación. 

 **Resultado deseado:** configure, valide e implemente 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 política recomendada:** la adopción de sistemas de administración de la configuración reduce el nivel de esfuerzo para hacer 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. 

 En AWS, puede utilizar [AWS Config](https://docs.aws.amazon.com/config/latest/developerguide/WhatIsConfig.html) para supervisar de forma continua las configuraciones de los recursos de AWS [entre todas las cuentas y 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 [AWS Config Conformance Packs](https://docs.aws.amazon.com/config/latest/developerguide/conformance-packs.html). 

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

### 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 una implementación 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 el uso de implementaciones ponderadas, como las implementaciones canario, para los 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 Planificación para hacer frente a los cambios infructuosos](ops_mit_deploy_risks_plan_for_unsucessful_changes.md) 
+  [OPS06-BP02 Implementaciones de prueba](ops_mit_deploy_risks_test_val_chg.md) 
+  [OPS06-BP03 Uso de estrategias de implementación seguras](ops_mit_deploy_risks_deploy_mgmt_sys.md) 
+  [OPS06-BP04 Automatización de 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/) 
+ [AWS CodeBuild](https://aws.amazon.com/codebuild/)
+ [AWS CodePipeline](https://aws.amazon.com/codepipeline/)
+ [AWS CodeDeploy](https://aws.amazon.com/codedeploy/)

 **Videos 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 Uso de sistemas de administración de compilación e implementación
<a name="ops_dev_integ_build_mgmt_sys"></a>

 Utilice sistemas de administración de compilación e 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/implementación continua (CI/CD) a través de servicios como las [herramientas para desarrolladores de AWS](https://aws.amazon.com/products/developer-tools/) (por ejemplo, [AWS CodeBuild](https://aws.amazon.com/codebuild/), [AWS CodePipeline](https://aws.amazon.com/codepipeline/) y [AWS CodeDeploy](https://aws.amazon.com/codedeploy/)). 

 **Resultado deseado:** sus sistemas de administración de compilación e implementación 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 que incluye las funcionalidades recién codificadas. El lunes, no puede repetir los pasos que le permitieron crear con éxito su aplicación. 
+  Lleva a cabo 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 llevar a cabo 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 llevar a cabo 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 e implementación se utilizan para seguir e implementar cambios, reducir los errores causados por los procesos manuales y reducir el nivel de esfuerzo requerido para una implementación segura. Automatice completamente el proceso de integración e implementación, desde el registro del código hasta la compilación, prueba, implementación y validación. Esto reduce el tiempo de entrega, disminuye los costos, 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/latest/framework/images/deployment-pipeline-tooling.png)


 

1.  Utilice un sistema de control de versiones para almacenar y administrar activos (como documentos, código fuente y archivos binarios). 

1.  Utilice CodeBuild para compilar su código fuente, ejecutar pruebas unitarias y producir artefactos listos para la implementación. 

1.  Utilice CodeDeploy como un servicio de implementación que automatiza las implementaciones de las aplicaciones en instancias de [Amazon EC2](https://aws.amazon.com/ec2/), en instancias en las instalaciones o en [funciones de AWS Lambda sin servidor](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) o [servicios de Amazon ECS](https://aws.amazon.com/ecs/). 

1.  Supervise sus implementaciones. 

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

 **Prácticas recomendadas relacionadas:** 
+  [OPS06-BP04 Automatización de 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/) 
+  [¿Qué es AWS CodeBuild?](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html) 
+ [AWS CodeBuild](https://aws.amazon.com/codebuild/)
+  [¿Qué es AWS CodeDeploy?](https://docs.aws.amazon.com/codedeploy/latest/userguide/welcome.html) 

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

# OPS05-BP05 Administración de 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 e implementar 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. 

 [AWS Health](https://aws.amazon.com/premiumsupport/technology/aws-health/) es el origen autorizado de la información sobre eventos planificados del ciclo de vida y otros eventos que requieren acciones y que afectan el estado de los recursos de Nube de AWS. Debe estar al tanto de los próximos cambios y actualizaciones que deben realizarse. Los principales eventos planificados del ciclo de vida se envían con al menos seis meses de antelación. 

 El [Generador de imágenes de Amazon EC2](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 la posibilidad de utilizar [Imagen de máquina de Amazon](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AMIs.html       ) (AMI) con una [canalización de imágenes de AMI](https://docs.aws.amazon.com/imagebuilder/latest/userguide/start-build-image-pipeline.html) o imágenes de contenedor con una [canalización de imágenes de Docker](https://docs.aws.amazon.com/imagebuilder/latest/userguide/start-build-container-pipeline.html), a la vez que AWS Lambda proporciona patrones para [tiempos de ejecución personalizados y bibliotecas adicionales](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-custom.html) para eliminar las vulnerabilidades. 

 Debe gestionar las actualizaciones de las imágenes de [Imagen de máquina de Amazon](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AMIs.html) para Linux o Windows Server mediante el [Generador de imágenes de Amazon EC2](https://aws.amazon.com/image-builder/). Puede utilizar [Amazon Elastic Container Registry (Amazon ECR)](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html) con su canalización existente para gestionar las imágenes de Amazon ECS y las 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 llevarse a cabo en los sistemas de producción sin antes hacer pruebas en un entorno seguro. Los parches solo deben aplicarse si sirven para mejorar los resultados operativos o empresariales. En AWS, puede utilizar [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 las [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 hacer un seguimiento del estado de todas las imágenes implementadas 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 contacta con el proveedor, este le notifica 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. 
+  No está al tanto de las acciones críticas necesarias para mantener los recursos, como las actualizaciones de versión obligatorias, porque no revisa los próximos eventos del ciclo de vida planificado y otra información. Pierde tiempo crítico para la planificación y la ejecución, lo que provoca cambios de emergencia para los equipos y un impacto potencial o un tiempo de inactividad inesperado. 

 **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. Implemente sistemas de administración de parches y automatización para reducir el nivel de esfuerzo en la implementación 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 el Generador de imágenes de Amazon EC2: 

1.  Con el Generador de imágenes de Amazon EC2, 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.  Agregue componentes de compilación y agréguelos 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 una línea de base de revisiones. 

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

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

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

 **Prácticas recomendadas relacionadas:** 
+  [OPS06-BP04 Automatización de 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) 
+ [ Uso de Patch Manager (consola) ](https://docs.aws.amazon.com/systems-manager/latest/userguide/patch-manager-console.html)
+ [ Trabajo con informes de conformidad de las revisiones ](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)

 **Videos relacionados:** 
+  [CI/CD for Serverless Applications on AWS](https://www.youtube.com/watch?v=tEpx5VaW4WE) 
+  [Design with Ops in Mind](https://youtu.be/uh19jfW7hw4) 

   **Ejemplos relacionados:** 
+ [Tutoriales de AWS Systems Manager Systems Manager Patch Manager ](https://docs.aws.amazon.com/systems-manager/latest/userguide/patch-manager-tutorials.html)

# OPS05-BP06 Uso compartido de 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 mediante 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 Evaluación de los requisitos de gobernanza](ops_priorities_governance_reqs.md): los requisitos de gobernanza influyen en los estándares de diseño. 
+  [OPS01-BP04 Evaluación de 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 Garantía de 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 Implementación de 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 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 ](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/)

 **Videos 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:** 
+ [Arquitectura de referencia de AWS Service Catalog](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 Implementación de 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. Integre 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:** 
+  Envía código a la rama principal de su aplicación sin una revisión del código. El cambio se implementa 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 de la implementación. 
+  Los equipos hacen 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. Las prácticas recomendadas para la calidad del código incluyen la programación en parejas, las revisiones del código y la implementación de herramientas de productividad de IA. 

 **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. 

 Utilice el poder de la IA generativa con Amazon Q Developer para mejorar la productividad de los desarrolladores y la calidad del código. Amazon Q Developer incluye la generación de sugerencias de código (basadas en modelos de lenguaje de gran tamaño), la producción de pruebas unitarias (incluidas condiciones límite) y mejoras de seguridad del código mediante la detección y la corrección de las vulnerabilidades de seguridad. 

 **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 funciones 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 e implemente. 

### 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.  Utilice [Amazon Q Developer](https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/what-is.html), una herramienta de IA generativa que puede ayudarle a crear casos de pruebas unitarias (incluidas las condiciones de límite), generar funciones mediante código y comentarios, implementar algoritmos conocidos, detectar infracciones y vulnerabilidades de las políticas de seguridad en su código, detectar secretos, escanear la infraestructura como código (IaC), documentar código y aprender bibliotecas de códigos de terceros con mayor rapidez. 

   1.  El [Revisor de Amazon CodeGuru](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. 

 **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-BP02 Prueba y validación de los cambios](https://docs.aws.amazon.com/wellarchitected/latest/operational-excellence-pillar/ops_dev_integ_test_val_chg.html) 
+  [OPS05-BP06 Uso compartido de estándares de diseño](https://docs.aws.amazon.com/wellarchitected/latest/operational-excellence-pillar/ops_dev_integ_share_design_stds.html) 

 **Documentos relacionados:** 
+  [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) 
+  [Accelerate your Software Development Lifecycle with Amazon Q](https://aws.amazon.com/blogs/devops/accelerate-your-software-development-lifecycle-with-amazon-q/) 
+  [Amazon Q Developer, now generally available, includes previews of new capabilities to reimagine developer experience](https://aws.amazon.com/blogs/aws/amazon-q-developer-now-generally-available-includes-new-capabilities-to-reimagine-developer-experience/) 
+  [The Ultimate Cheat Sheet for Using Amazon Q Developer in Your IDE](https://community.aws/content/2eYoqeFRqaVnk900emsknDfzhfW/the-ultimate-cheat-sheet-for-using-amazon-q-developer-in-your-ide) 
+  [Shift-Left Workload, leveraging AI for Test Creation](https://community.aws/content/2gBZtC94gPzaCQRnt4P0rIYWuBx/shift-left-workload-leveraging-ai-for-test-creation) 
+  [Amazon Q Developer Center](https://aws.amazon.com/developer/generative-ai/amazon-q/) 
+  [10 ways to build applications faster with Amazon CodeWhisperer](https://aws.amazon.com/blogs/devops/10-ways-to-build-applications-faster-with-amazon-codewhisperer/) 
+  [Looking beyond code coverage with Amazon CodeWhisperer](https://aws.amazon.com/blogs/devops/looking-beyond-code-coverage-with-amazon-codewhisperer/) 
+  [Best Practices for Prompt Engineering with Amazon CodeWhisperer](https://aws.amazon.com/blogs/devops/best-practices-for-prompt-engineering-with-amazon-codewhisperer/) 
+  [Agile Software Guide](https://martinfowler.com/agile.html) 
+  [My CI/CD pipeline is my release captain](https://aws.amazon.com/builders-library/cicd-pipeline/) 
+  [Automate code reviews with Amazon CodeGuru Reviewer](https://aws.amazon.com/blogs/devops/automate-code-reviews-with-amazon-codeguru-reviewer/) 
+  [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](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](http://www.jamesshore.com/v2/books/aoad1/test_driven_development) 
+  [Why code reviews matter (and actually save time\$1)](https://www.atlassian.com/agile/software-development/code-reviews) 

 **Videos relacionados:** 
+  [Implement an API with Amazon Q Developer Agent for Software Development](https://www.youtube.com/watch?v=U4XEvJUvff4) 
+  [Installing, Configuring, & Using Amazon Q Developer with JetBrains IDEs (How-to)](https://www.youtube.com/watch?v=-iQfIhTA4J0) 
+  [Mastering the art of Amazon CodeWhisperer - YouTube playlist](https://www.youtube.com/playlist?list=PLDqi6CuDzubxzL-yIqgQb9UbbceYdKhpK) 
+  [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 Q Developer](https://aws.amazon.com/q/developer/) 
+  [Revisor de Amazon CodeGuru](https://docs.aws.amazon.com/codeguru/latest/reviewer-ug/welcome.html) 
+  [Generador de perfiles de Amazon CodeGuru](https://docs.aws.amazon.com/codeguru/latest/profiler-ug/what-is-codeguru-profiler.html) 

# OPS05-BP08 Uso de 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 implemente. 

 **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. 

1.  Su organización lo consigue mediante el establecimiento de una zona de aterrizaje, que proporciona gobernanza, controles, automatizaciones de cuentas, redes, seguridad y observabilidad operativa. Gestione estas capacidades de zona de aterrizaje mediante el uso de varios entornos. Un ejemplo común es una organización de un entorno de pruebas para desarrollar y probar cambios en una zona de aterrizaje basada en [AWS Control Tower](https://aws.amazon.com/controltower/), que incluye [AWS IAM Identity Center](https://aws.amazon.com/iam/identity-center/) y políticas como las [políticas de control de servicios (SCP)](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html). Todos estos elementos pueden afectar significativamente al acceso y al funcionamiento de Cuentas de AWS en la zona de aterrizaje. 

1.  Además de estos servicios, sus equipos amplían las capacidades de las zonas de aterrizaje con soluciones publicadas por socios de AWS y AWS o como soluciones personalizadas desarrolladas dentro de su organización. Algunos ejemplos de soluciones publicadas por AWS son [Customizations for AWS Control Tower (cFCT)](https://aws.amazon.com/solutions/implementations/customizations-for-aws-control-tower/) y [AWS Control Tower Account Factory for Terraform (](https://docs.aws.amazon.com/controltower/latest/userguide/aft-overview.html)AFT). 

1.  Su organización aplica los mismos principios de pruebas, promoción del código y cambios de política para la zona de aterrizaje en los entornos que se encuentran en su camino hacia la producción. Esta estrategia proporciona un entorno de zona de aterrizaje estable y seguro para sus equipos de aplicaciones y cargas de trabajo. 

 **Patrones comunes de uso no recomendados:** 
+  Está desarrollando 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. 
+  Lleva a cabo 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. 
+  Actualiza una función clave de zona de aterrizaje, pero el cambio perjudica la capacidad de su equipo de vender cuentas para nuevos proyectos o para sus cargas de trabajo existentes. 
+  Aplica nuevos controles a sus Cuentas de AWS, pero el cambio repercute en la capacidad de su equipo de cargas de trabajo para implementar cambios en sus Cuentas de AWS. 

 **Beneficios de establecer esta práctica recomendada:** cuando implementa varios entornos, 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. En el caso de funciones complejas, como las zonas de aterrizaje, se reduce considerablemente el riesgo de cambios, se simplifica el proceso de mejora y se reduce el riesgo de que se produzcan actualizaciones críticas en el entorno. Las organizaciones que utilizan zonas de aterrizaje se benefician naturalmente de tener múltiples cuentas en su entorno de AWS, con configuraciones de estructura de cuentas, gobierno, red y seguridad. Con el tiempo, a medida que su organización crece, la zona de aterrizaje puede evolucionar para proteger y organizar sus cargas de trabajo y sus recursos. 

 **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 de pruebas 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 haga pruebas de carga, implemente entornos semejantes al de producción para mejorar los resultados válidos. 

 Los equipos de ingeniería de plataformas, redes y operaciones de seguridad suelen gestionar las capacidades a nivel de la organización con requisitos distintos. La separación de las cuentas por sí sola no basta para proporcionar y mantener entornos separados para la experimentación, el desarrollo y las pruebas. En estos casos, cree instancias de AWS Organizations separadas. 

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

 **Documentos relacionados:** 
+ [ Programador de instancias de 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) 
+ [Organización de su entorno de AWS mediante varias cuentas. Varias organizaciones. Pruebe los cambios en el entorno general de AWS](https://docs.aws.amazon.com/whitepapers/latest/organizing-your-aws-environment/multiple-organizations.html#test-changes-to-your-overall-aws-environment)
+ [Guía de AWS Control Tower](https://catalog.workshops.aws/control-tower)

# OPS05-BP09 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:** 
+  Implementa una nueva versión de su aplicación trimestralmente con una ventana de cambios que significa que un servicio principal está desactivado. 
+  Hace cambios frecuentes en el esquema de su base de datos sin hacer un seguimiento de los cambios en sus sistemas de administración. 
+  Lleve a cabo actualizaciones manuales in situ, y sobrescriba 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 al implementar 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 implementar 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 Uso de sistemas de administración de la configuración](ops_dev_integ_conf_mgmt_sys.md) 
+  [OPS05-BP04 Uso de sistemas de administración de compilación e implementación](ops_dev_integ_build_mgmt_sys.md) 
+  [OPS06-BP04 Automatización de las pruebas y la reversión](ops_mit_deploy_risks_auto_testing_and_rollback.md) 

 **Documentos relacionados:** 
+ [ Implementing Microservices on 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 Automatización completa de la integración y la implementación
<a name="ops_dev_integ_auto_integ_deploy"></a>

 Automatice la compilación, la implementación y la comprobación 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 mediante [etiquetas de registro](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) mediante una [estrategia de etiquetado](https://aws.amazon.com/answers/account-management/aws-tagging-strategies/) coherente para permitir la identificación de sus recursos. Etiquete sus recursos para la organización, la contabilidad de costos, 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 entregar actualizaciones. Existe un registro de auditoría completo 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 implementación 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 e implementación, se reducen los errores causados por los procesos manuales y se reduce el esfuerzo para implementar 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 e implementación para hacer 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 compilación, prueba, implementación 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 Uso de sistemas de administración de la configuración](ops_dev_integ_conf_mgmt_sys.md) 
+  [OPS05-BP04 Uso de sistemas de administración de compilación e implementación](ops_dev_integ_build_mgmt_sys.md) 

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

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