Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Integración continua y entrega continua
Desarrolle y mejore las aplicaciones y los servicios con mayor rapidez que las organizaciones que utilizan los procesos tradicionales de desarrollo de software y administración de infraestructuras.
La adopción de prácticas de DevOps
Iniciar
Adoptar la administración de componentes de software
La administración de componentes de software es la práctica de administrar los componentes individuales que se utilizan para crear software, lo que incluye las bibliotecas, los marcos, los repositorios de código fuente, los módulos, los artefactos y las dependencias de terceros. Le recomendamos utilizar un sistema de control de versiones como Git o Apache Subversion para administrar el código fuente, permitir la colaboración y mantener un historial de cambios en el código. Puede supervisar los cambios y los eventos del repositorio para automatizar el proceso, crear las canalizaciones, administrar el código e integrar los flujos de trabajo con otros servicios según sea necesario.
Crear canalizaciones de CI/CD.
Los procesos de CI/CD son conjuntos de instrucciones automatizadas que se inician con los cambios introducidos en el sistema de control de versiones. Por lo general, incluyen instrucciones para crear la aplicación, ejecutar las pruebas automatizadas e implementar el código en un entorno específico. Puede configurar una canalización de CI/CD automatizada mediante herramientas como AWS CodePipeline, Jenkins, GitLab o CircleCI. También puede configurarlas directamente en los sistemas de control de versiones que admiten la generación de canalizaciones.
Comience con una canalización mínima viable para una integración continua y, luego, pase a una canalización de entrega continua
Considera los plazos de implementación, es decir, los días y las horas en los que quiere implementar el código. Tenga en cuenta las horas de baja demanda del sistema, de modo que, si tiene que hacer una reversión, tendrá el menor impacto en los clientes. Entre otras prácticas recomendadas se incluyen evitar las implementaciones los viernes e implementar un bloqueo del código durante las fechas de mayor actividad o antes de los días festivos. Considere la posibilidad de definir las reglas sobre la implementación del código cuando el autor de la confirmación no se encuentre disponible (por ejemplo, de vacaciones). Tenga en cuenta que se producen errores en las implementaciones y es posible que tenga que recurrir a la ayuda externa. Evalúe los distintos métodos de implementación, como las implementaciones in situ, continuas, inmutables y azules/verdes. Considere la posibilidad de utilizar los servicios totalmente administrados para los flujos de trabajo de entrega continua a fin de aumentar la disponibilidad y la seguridad y, al mismo tiempo, minimizar la complejidad y la administración.
Implementar pruebas automatizadas
Las prácticas modernas recomiendan hacer shift left (acercar las pruebas al desarrollador y al IDE
Las pruebas automatizadas detectan los errores al principio del proceso del desarrollo. Estas incluyen pruebas unitarias, pruebas de integración y pruebas funcionales. Le recomendamos animar a los desarrolladores a utilizar herramientas
Crear documentación
Además de implementar una canalización de CI/CD para agilizar los flujos de trabajo de desarrollo, debe mantener una documentación clara y completa para garantizar la eficacia, la capacidad de mantenimiento y la escalabilidad continuas de la canalización. La documentación es un aspecto fundamental de las canalizaciones de CI/CD, ya que permite que los equipos de desarrollo comprendan con claridad el diseño, los componentes y los procesos de la canalización. Al crear la documentación, comience con información general de la canalización, explique las diferencias entre la arquitectura y el diseño, describa las herramientas y tecnologías que se utilizan, especifique la configuración y los ajustes iniciales, describa las medidas de seguridad y el control de acceso, e incluya información sobre la solución de problemas y el mantenimiento.
Utilizar la infraestructura como código
Utilice herramientas como Terraform, Ansible o AWS CloudFormation para administrar la infraestructura y garantizar entornos coherentes y reproducibles. Trate su infraestructura como código, asegúrese de hacer un seguimiento de los cambios en la infraestructura y evite hacer cambios directamente en la consola. Defina toda la infraestructura (lo que incluye el aprovisionamiento de bases de datos) como código e implemente estos cambios mediante canalizaciones. Considere la posibilidad de ejecutar la integración de bases de datos como código en canalizaciones con un pequeño subconjunto de datos de producción desinfectados. Cuando sea posible, haga los cambios y haga un seguimiento de esos cambios en el código.
Al igual que con el código de software, implemente estas prácticas recomendadas para el código de infraestructura:
-
Utilice el control de versiones.
-
Utilice los sistemas de seguimiento de errores y generación de tickets.
-
Haga que entre compañeros se revisen los cambios antes de aplicarlos.
-
Establezca los patrones y los diseños de códigos de infraestructura.
-
Pruebe los cambios en la infraestructura.
Mantenga y siga las métricas estándar
Para mantener un alto nivel de rendimiento, desarrolle métricas clave y haga un seguimiento de estas para comprender el impacto de las canalizaciones en el estado y en el negocio, entre las que se incluyen:
-
Frecuencia de creación. El número de versiones ofrece información sobre la productividad del equipo y la complejidad de los cambios.
-
Frecuencia de implementación. Las implementaciones periódicas indican un proceso de desarrollo ágil y correcto.
-
Tiempo de espera para los cambios. Medir el tiempo medio que tardan los cambios en llegar a la producción puede serle útil para identificar los cuellos de botella en el proceso de implementación.
-
Tiempo medio en la canalización. El tiempo medio desde la fase inicial de la canalización hasta cada fase posterior puede ayudar a optimizar el flujo de trabajo.
-
Volumen de cambios en la producción. Llevar un registro del número de cambios que llegan a la producción puede proporcionar información sobre la estabilidad del entorno de producción.
-
Tiempo de creación. El tiempo promedio de creación puede indicar posibles problemas en el código base o en la infraestructura.
Avanzado
Uso de la administración de la configuración
Las herramientas de administración de la configuración juegan un papel fundamental en la automatización de la implementación, la configuración y la administración del software y de la infraestructura. Proporcionan un enfoque sistemático para administrar los cambios y mantener el estado deseado de la infraestructura, del software y de las configuraciones en varios entornos. Estas herramientas permiten a los desarrolladores definir el estado deseado de un sistema mediante lenguajes declarativos o imperativos. A continuación, la herramienta de administración de la configuración automatiza el proceso de aplicación de estas configuraciones a los sistemas de destino, lo que garantiza la coherencia y la repetibilidad.
Utilice las herramientas de administración de la configuración para automatizar la implementación, la configuración y la administración del software y de la infraestructura. AWS Systems Manager State Manager es un servicio de administración de configuración seguro y escalable que automatiza el proceso de mantener los nodos administrados y otros recursos de AWS en el estado que defina.
Integrar la supervisión y el registro
La integración de las soluciones de supervisión y registro en las canalizaciones de CD ofrece numerosos beneficios para los equipos de desarrollo y para el proceso general de desarrollo de software. Estas soluciones pueden proporcionar información en tiempo real sobre el rendimiento de las aplicaciones, identificar y solucionar los problemas de manera más rápida y promover la mejora continua para garantizar que las aplicaciones sigan siendo fiables, eficaces y escalables durante todo su ciclo de vida. Invertir en soluciones de supervisión y registro es un aspecto clave para mantener una canalización de CD sólida y eficiente. En última instancia, contribuye a la entrega correcta de software de alta calidad.
Cree una cadencia para la combinación
Confirme o combine los cambios de código en la rama principal (troncal o principal) al menos una vez al día o, lo que sería ideal, varias veces al día después de cada tarea. Esta cadencia da lugar a varias invocaciones de canalización diarias. Un modelo de flujo de trabajo ramificado según la extracción coincide con este enfoque. Utilice marcadores de características
Capturar el comportamiento posterior a la implementación
Después de una implementación, capture el comportamiento de la producción mediante pruebas sintéticas automatizadas y sincronice los resultados con la canalización de la entrega continua para garantizar que las medidas correctivas se tomen rápidamente. La prioridad principal para los desarrolladores debe ser corregir los errores detectados en las canalizaciones lo antes posible, registrar los cambios de código en el repositorio de código fuente y verificar la resolución de los errores en la canalización.
Entre las prácticas recomendadas posteriores a la implementación se incluyen observar los indicadores clave de rendimiento (KPI) más importantes y validar que no haya errores en el entorno de producción. Automatice la administración de errores y la evaluación de los KPI posteriores a la implementación para cuantificar el impacto de la versión. Genere de manera automática las métricas de velocidad, seguridad y estabilidad que los desarrolladores puedan utilizar para hacer mejoras. Para más información, consulte Panel de supervisión de DevOps
Excel
Adopte las prácticas y tecnologías de vanguardia para obtener un rendimiento óptimo. El perfeccionamiento continuo de los procesos de CI/CD son útiles para mejorar la calidad del software, reducir el tiempo de comercialización y aumentar la agilidad. Cada vez surgen nuevas técnicas y herramientas, por lo que es esencial que su organización se mantenga informada y se adapte para mantener una ventaja competitiva.
Para seguir adaptándose, tenga en cuenta lo siguiente:
-
Defina todo como código, entre esto la aplicación, la configuración, la infraestructura, los datos, las cuentas y organizaciones de AWS, los procesos de implementación, las redes y los controles de seguridad y cumplimiento.
-
Cree las canalizaciones de implementación
correspondientes para las imágenes de computación, los servicios compartidos y las aplicaciones. -
Considere un modelo de GitOps en el que las solicitudes basadas en extracciones inicien un flujo de trabajo para implementar los cambios tras comparar el estado de la infraestructura existente con el estado deseado, tal y como se describe en el código.
-
Considere utilizar las canalizaciones de CD para implementar el machine learning (ML), los datos, el internet de las cosas (IoT) y otras cargas de trabajo.
-
Firme de manera digital todos los artefactos de creación y guárdelos en un repositorio seguro.
-
Haga un seguimiento de la procedencia del software mediante la generación automática de una lista de materiales de software que cree un registro de todos los artefactos versionados y firmados de manera digital que se distribuyen a los clientes.
-
Tras eliminar toda la actividad manual de un proceso de entrega de software, elimine las juntas de revisión manual.
En el caso de las aplicaciones y los servicios que automatizaron todo su proceso de entrega de software, considere la posibilidad de una implementación continua, en la que los equipos implementen cambios que pasen todas las verificaciones en una canalización a los clientes en producción. Para obtener una visualización, consulte el primer diagrama de ¿Qué es la entrega continua?
Integrar tecnologías de IA/ML
La integración de las tecnologías de inteligencia artificial (IA) y machine learning (ML) en los procesos de CI/CD ofrece varios beneficios, entre los que se incluyen los siguientes:
-
Generación de pruebas automatizada
-
Priorización de pruebas inteligente
-
Análisis predictivo para la detección de problemas
-
Detección de anomalías y análisis de la causa de origen
-
Revisión del código y control de calidad
-
Optimización de la implementación
Para más información, consulte Cómo agregar inteligencia a las operaciones del desarrollador
Adopte las prácticas de ingeniería del caos
La ingeniería del caos implica inyectar errores de manera intencional en los sistemas para poner a prueba su capacidad de resistir eventos inesperados y recuperarse de estos. Al identificar las debilidades y abordarlas de manera proactiva, las organizaciones pueden mejorar la fiabilidad general de sus sistemas y minimizar el impacto de los posibles problemas.
Adopte las prácticas de ingeniería del caos para probar la resiliencia de los sistemas mediante herramientas como Gremlin, Chaos Monkey o Litmus. Haga experimentos controlados con periodicidad para identificar las vulnerabilidades, validar la tolerancia a errores y asegurarse de que la aplicación gestiona los errores inesperados de manera adecuada. Este enfoque proactivo ayuda a mejorar la fiabilidad del sistema y contribuye a brindar una canalización de CI/CD más sólida.
Optimización del rendimiento
Optimice el rendimiento de la aplicación de manera continua mediante herramientas de creación de perfiles, supervisión en tiempo real e intercambio de información. Aplique técnicas como las siguientes para garantizar que las aplicaciones puedan gestionar el aumento del tráfico y la demanda:
-
Optimización del código
-
Creación de perfiles
-
Supervisión en tiempo real
-
Bucles de retroalimentación
-
Almacenamiento en caché
-
Equilibrio de carga
-
Pruebas de escalabilidad y rendimiento
Implementación de la observabilidad avanzada
Mejorar la observabilidad de la infraestructura en la nube va más allá de los aspectos básicos de la recopilación, la agregación y el análisis de métricas, registros y seguimientos. Cuando la observabilidad se mejora con herramientas como Amazon CloudWatch y AWS X-Ray, se convierte en una práctica estratégica que impulsa la entrega y la innovación continuas.
En una sólida canalización de CI/CD, la observabilidad avanzada le permite descubrir información no solo sobre las aplicaciones e infraestructura, sino también sobre el rendimiento y el estado de todo el sistema, lo que incluye la propia canalización. Estos conocimientos ayudan a lo siguiente:
-
Identificar, comprender y abordar rápidamente los posibles problemas para mejorar la estabilidad de las aplicaciones y reducir el tiempo de inactividad
-
Optimizar los procesos de CI/CD para crear entregas más rápidas y fiables
-
Obtener información más profunda sobre el impacto de los cambios y las implementaciones de código para impulsar una toma de decisiones informada
-
Optimizar el uso de los recursos para mejorar la eficiencia operativa y la rentabilidad
Para aumentar la observabilidad, haga lo siguiente:
-
Incorpore la observabilidad en cada capa de las aplicaciones y la infraestructura para crear una visión integral del rendimiento, el comportamiento y el estado de los sistemas.
-
Centralice la recopilación, el almacenamiento y el análisis de datos con herramientas como Amazon CloudWatch para unificar los datos de observabilidad y facilitar su acceso e interpretación.
-
Utilice AWS X-Ray para el seguimiento distribuido a fin de comprender el rendimiento de las aplicaciones y sus servicios subyacentes.
-
Establezca intercambios de información para una mejora continua y utilice los datos de observabilidad para impulsar mejoras iterativas en los sistemas.
Adoptar la observabilidad avanzada no consiste solo en mantener los sistemas, sino que es un paso estratégico para lograr la excelencia operativa e impulsar la innovación continua en su organización.
Implementación de prácticas de GitOps
Implemente las prácticas de GitOps para administrar las configuraciones de la infraestructura y las aplicaciones mediante un repositorio de Git como origen único de información. Este enfoque simplifica la administración de cambios, mejora la trazabilidad y garantiza la coherencia en todos los entornos.