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 gestión de infraestructuras.
Adoptar DevOps
Inicio
Adopte la gestión de componentes de software
La administración de componentes de software es la práctica de administrar todos los componentes individuales que se utilizan para crear software, incluidas las bibliotecas, los marcos, los repositorios de código fuente, los módulos, los artefactos y las dependencias de terceros. Le recomendamos que utilice 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. Puedes monitorear los cambios y eventos del repositorio para automatizar el proceso, crear canalizaciones, administrar tu código e integrar tus flujos de trabajo con servicios adicionales según sea necesario.
Cree canalizaciones de CI/CD
CI/CD pipelines are sets of automated instructions that are initiated by changes committed to the version control system. They typically include instructions for building the application, running automated tests, and deploying code to a specific environment. You can set up an automated CI/CDcanalice mediante herramientas como AWS CodePipelineJenkins o GitLab CircleCI. También puede configurarlos 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, a continuación, 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 deseas implementar el código. Tenga en cuenta las horas de baja demanda de su sistema, de modo que, si tiene que retroceder, tendrá el menor impacto en sus clientes. Otras prácticas recomendadas incluyen evitar las implementaciones los viernes e implementar una congelación del código durante las fechas de mayor actividad o antes de los días festivos. Considera la posibilidad de definir reglas sobre la implementación del código cuando el autor de la confirmación no esté disponible (por ejemplo, de vacaciones). Ten en cuenta que las implementaciones fallan y es posible que tengas que recurrir a la ayuda externa. Evalúe los diferentes métodos de implementación, como las implementaciones in situ, continuas, inmutables y azules o verdes. Considere la posibilidad de utilizar servicios totalmente gestionados 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.
Implemente pruebas automatizadas
Las prácticas modernas recomiendan ir a la izquierda (acercar las pruebas al desarrollador y al IDE
Las pruebas automatizadas detectan los errores al principio del proceso de desarrollo e incluyen pruebas unitarias, pruebas de integración y pruebas funcionales. Te recomendamos que alientes a los desarrolladores a usar herramientas
Cree documentación
Además de implementar una CI/CD pipeline to streamline development workflows, you should maintain clear and comprehensive documentation to ensure the pipeline's ongoing effectiveness, maintainability, and scalability. Documentation is a vital aspect of CI/CD canalización, ya que proporciona a los equipos de desarrollo una comprensión clara del diseño, los componentes y los procesos de la canalización. Al crear la documentación, comience con una visión general del proceso, explique las ventajas entre arquitectura y 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 solución de problemas y mantenimiento.
Utilice la infraestructura como código
Utilice herramientas como Terraform o Ansible AWS CloudFormationpara gestionar la infraestructura y garantizar entornos coherentes y reproducibles. Trate su infraestructura como un código, asegúrese de realizar un seguimiento de los cambios en la infraestructura y evite realizar cambios directamente en la consola. Defina toda la infraestructura (incluido 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, realice los cambios y realice un seguimiento de esos cambios en el código.
Al igual que con el código de software, siga estas prácticas recomendadas para el código de infraestructura:
-
Utilice el control de versiones.
-
Utilice los sistemas de seguimiento de errores y emisión de tickets.
-
Haga que sus compañeros revisen los cambios antes de aplicarlos.
-
Establezca patrones y diseños de códigos de infraestructura.
-
Pruebe los cambios en la infraestructura.
Mantenga y realice un seguimiento de las métricas estándar
Para mantener un alto nivel de rendimiento, desarrolle métricas clave y realice un seguimiento de ellas para comprender el impacto de sus procesos en la salud y en el negocio, entre las que se incluyen:
-
Aumente la frecuencia. El número de versiones ofrece información sobre la productividad de tu equipo y la complejidad de los cambios.
-
Frecuencia de despliegue. Los despliegues regulares indican un proceso de desarrollo ágil y saludable.
-
Plazo de entrega para los cambios. Medir el tiempo medio que tardan los cambios en llegar a la fase de producción puede ayudarle a identificar los cuellos de botella en su proceso de implementación.
-
Tiempo medio de tramitación. El tiempo medio desde la fase inicial de la canalización hasta cada etapa posterior puede ayudar a optimizar el flujo de trabajo.
-
Volumen de cambio de producción. Hacer un seguimiento del número de cambios que afectan a la producción puede proporcionar información sobre la estabilidad de su entorno de producción.
-
Tiempo de construcción. El tiempo medio de creación puede indicar posibles problemas en el código base o en la infraestructura.
Avanzado
Utilice la gestión de la configuración
Las herramientas de administración de la configuración desempeñan un papel fundamental en la automatización de la implementación, la configuración y la administración del software y la infraestructura. Proporcionan un enfoque sistemático para gestionar los cambios y mantener el estado deseado de la infraestructura, el software y las configuraciones en varios entornos. Estas herramientas permiten a los desarrolladores definir el estado deseado de un sistema mediante el uso de lenguajes declarativos o imperativos. A continuación, la herramienta de gestió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 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 AWS recursos en el estado que usted defina.
Integre la supervisión y el registro
La integración de las soluciones de monitoreo 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, permitir una identificación y resolución más rápidas de los problemas 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 monitoreo y registro es un aspecto clave para mantener una cartera de CD sólida y eficiente y, en última instancia, contribuye a la entrega exitosa de software de alta calidad.
Cree una cadencia para la fusión
Realice o fusione los cambios de código en la rama principal (troncal o principal) al menos una vez al día o, idealmente, varias veces al día después de cada tarea. Esta cadencia da lugar a múltiples invocaciones de canalización diarias. Un modelo de flujo de trabajo ramificado basado en la extracción se alinea con este enfoque. Utiliza marcadores de características
Capture 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 el proceso de entrega continua para garantizar que las acciones correctivas se tomen rápidamente. La principal prioridad para los desarrolladores debería ser corregir los errores descubiertos 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.
Las mejores prácticas posteriores a la implementación incluyen observar los indicadores clave de rendimiento más importantes (KPIs) y validar que no haya errores en el entorno de producción. Automatice la gestión de errores y la evaluación posterior a la implementación KPIs para cuantificar el impacto de su versión. Genere automáticamente métricas de velocidad, seguridad y estabilidad que los desarrolladores puedan utilizar para realizar mejoras. Para obtener más información, consulte el panel de DevOps supervisión de
Excel
Adopte prácticas y tecnologías de vanguardia para obtener un rendimiento óptimo. El perfeccionamiento continuo de sus procesos de CI/CD le ayuda a mejorar la calidad del software, reducir el tiempo de comercialización y aumentar la agilidad. Continuamente surgen nuevas técnicas y herramientas, lo que hace que sea 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, incluida la aplicación, la configuración, la infraestructura, los datos, las AWS cuentas y las organizaciones, los procesos de implementación, las redes y los controles de seguridad y cumplimiento.
-
Cree los canales de despliegue correspondientes para las
imágenes de procesamiento, los servicios compartidos y las aplicaciones. -
Considere un GitOps modelo en el que las solicitudes basadas en extracciones inicien un flujo de trabajo para implementar cambios comparando el estado de la infraestructura existente con el estado deseado, tal como se describe en el código.
-
Considere usar canalizaciones de CD para implementar el aprendizaje automático (ML), los datos, el Internet de las cosas (IoT) y otras cargas de trabajo.
-
Firme digitalmente todos los artefactos de construcción y guárdelos en un repositorio seguro.
-
Realice 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 digitalmente que se distribuyen a los clientes.
-
Tras eliminar toda actividad manual en el proceso de entrega de software, elimine las juntas de revisión manual.
En el caso de las aplicaciones y los servicios que han automatizado 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 comprobaciones de forma gradual a los clientes en producción. Para ver una visualización, consulte el primer diagrama de ¿Qué es la entrega continua?
Integre las tecnologías de inteligencia artificial y aprendizaje automático
La integración de las tecnologías de inteligencia artificial (IA) y aprendizaje automático (ML) en los procesos de CI/CD ofrece varios beneficios, entre los que se incluyen los siguientes:
-
Generación automatizada de pruebas
-
Priorización inteligente de las pruebas
-
Análisis predictivo para la detección de problemas
-
Detección de anomalías y análisis de la causa raíz
-
Revisión del código y control de calidad
-
Optimización del despliegue
Para obtener más información, consulte Añadir inteligencia a las operaciones de los desarrolladores
Adopte prácticas de ingeniería del caos
La ingeniería del caos implica inyectar intencionalmente fallas en los sistemas para poner a prueba su capacidad de resistir eventos inesperados y recuperarse de ellos. Al identificar las debilidades y abordarlas de manera proactiva, las organizaciones pueden mejorar la confiabilidad general de sus sistemas y minimizar el impacto de los posibles problemas.
Adopte prácticas de ingeniería del caos para probar la resiliencia de sus sistemas mediante herramientas como Gremlin, Chaos Monkey o Litmus. Realiza experimentos controlados con regularidad para identificar las vulnerabilidades, validar la tolerancia a los errores y asegurarte de que tu aplicación gestiona los fallos inesperados de forma adecuada. Este enfoque proactivo ayuda a mejorar la confiabilidad del sistema y contribuye a una canalización de CI/CD más sólida.
Optimización del rendimiento
Optimice el rendimiento de su aplicación de forma continua mediante el uso de herramientas de creación de perfiles, supervisión en tiempo real y circuitos de retroalimentación. Aplique técnicas como las siguientes para asegurarse de que sus aplicaciones puedan gestionar el aumento del tráfico y la demanda:
-
Optimización de código
-
Elaboración de perfiles
-
Monitorización en tiempo real
-
Bucles de retroalimentación
-
Almacenamiento en caché
-
Equilibrio de carga
-
Pruebas de escalabilidad y rendimiento
Implemente una observabilidad avanzada
Mejorar la observabilidad de su infraestructura de 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 trazas. Cuando la observabilidad se mejora con herramientas como Amazon CloudWatch AWS X-Ray, se convierte en una práctica estratégica que impulsa la entrega continua y la innovación.
En una sólida cartera de CI/CD, la observabilidad avanzada le permite descubrir información no solo sobre sus aplicaciones e infraestructura, sino también sobre el rendimiento y el estado de todo el sistema, incluida la propia cartera. Estos conocimientos le ayudan a:
-
Identifique, comprenda y aborde rápidamente los posibles problemas para mejorar la estabilidad de las aplicaciones y reducir el tiempo de inactividad
-
Optimice sus procesos de CI/CD para crear entregas más rápidas y confiables
-
Obtenga información más profunda sobre el impacto de los cambios y las implementaciones de código para impulsar una toma de decisiones informada
-
Optimice la utilización de los recursos para mejorar la eficiencia operativa y la rentabilidad
Para aumentar la observabilidad:
-
Incorpore la observabilidad en cada capa de sus aplicaciones e infraestructura para crear una visión integral del rendimiento, el comportamiento y el estado de sus sistemas.
-
Centralice la recopilación, el almacenamiento y el análisis de datos con herramientas como Amazon CloudWatch para unificar sus datos de observabilidad y facilitar su acceso e interpretación.
-
Úselo AWS X-Ray para el rastreo distribuido a fin de comprender el rendimiento de sus aplicaciones y sus servicios subyacentes.
-
Establezca circuitos de retroalimentación para una mejora continua y utilice sus datos de observabilidad para impulsar mejoras iterativas en sus sistemas.
Adoptar la observabilidad avanzada no consiste solo en mantener sus sistemas, sino que es un paso estratégico para lograr la excelencia operativa e impulsar la innovación continua en su organización.
Implemente prácticas GitOps
Implemente GitOps prácticas para gestionar las configuraciones de infraestructura y aplicaciones mediante el uso de un repositorio de Git como fuente única de información. Este enfoque simplifica la gestión de cambios, mejora la trazabilidad y garantiza la coherencia en todos los entornos.