TUP_4C_LCIV_TEO_U3_CI_CD PDF
Document Details
Uploaded by SeasonedHamster6631
UTN
Tags
Summary
This document is study material for a computer programming course at UTN, Faculty Regional Cordoba. It includes information on CI/CD, its concept, and benefits for software development.
Full Transcript
LABORATORIO DE COMPUTACIÓN IV Unidad Temática N°3: CI / CD Material de Estudio 2° Año – 4° Cuatrimestre Índice Introducción 2 CI/CD...
LABORATORIO DE COMPUTACIÓN IV Unidad Temática N°3: CI / CD Material de Estudio 2° Año – 4° Cuatrimestre Índice Introducción 2 CI/CD 2 Cuáles son sus beneficios......................................................................................... 3 Etapas de CI/CD....................................................................................................... 4 Paso 1: Code (Codificar)..................................................................................... 4 Paso 2: Build (Construir)..................................................................................... 5 Paso 3: Test (Probar)......................................................................................... 5 Paso 4: Deploy (Desplegar)................................................................................ 6 Monitoreo.................................................................................................................. 6 Laboratorio de Computación IV Material de Estudio – U3 Pág. 1 Introducción Desde la aparición de los movimientos ágiles (agilemanifesto.org), cuyo objetivo era la construcción de software en ciclos breves con entregas incrementales, surgió la imperante necesidad de respaldar esta metodología desde el ámbito tecnológico. Se volvió esencial proporcionar a los desarrolladores las herramientas y el entorno necesarios para facilitar esta forma de trabajo, permitiéndoles generar entregas continuas y la flexibilidad de iterar sobre sus resultados. En este contexto, surgieron prácticas destinadas a proporcionar un entorno ágil al equipo de desarrollo, y una de estas prácticas destacadas es la Integración Continua y Entrega Continua, o CI/CD. CI/CD La Integración Continua (CI) y la Entrega Continua (CD) son prácticas que permiten a los equipos de desarrollo crear, probar y entregar software de manera más eficiente y confiable. Pero ¿qué significan exactamente CI/CD? La Integración Continua (CI, por sus siglas en inglés, Continuous Integration) es una práctica fundamental en el desarrollo de software que se centra en la automatización de la integración de código de múltiples desarrolladores en un repositorio compartido de forma constante y regular. Su objetivo principal es detectar y solucionar problemas de integración tempranamente, lo que conduce a un proceso de desarrollo más eficiente y a la entrega de software de mayor calidad. Esto implica la ejecución automática de pruebas y verificaciones cada vez que se realiza una integración, lo que ayuda a identificar problemas de manera temprana y a mantener el código base en un estado siempre funcional. La Entrega Continua (CD, por sus siglas en inglés, Continuous Delivery) es una práctica en el desarrollo de software que se enfoca en la automatización de la entrega de software a entornos de prueba o preparados para producción de manera consistente y confiable, a medida que se completan los cambios de código. La Entrega Continua es una extensión de la Integración Continua (CI) y está diseñada para asegurar que cualquier versión del software que pase las pruebas de CI esté lista para ser desplegada en producción en cualquier momento, con el mínimo esfuerzo y riesgo. Laboratorio de Computación IV Material de Estudio – U3 Pág. 2 Cuáles son sus beneficios Entrega más rápida de software: CI/CD automatiza gran parte del proceso de desarrollo y entrega, lo que permite lanzar nuevas características y correcciones de errores más rápido al mercado. Esto puede dar a la empresa una ventaja competitiva significativa. Mayor calidad del software: Las pruebas automatizadas y la detección temprana de errores en el proceso de CI/CD conducen a un software de mayor calidad, con menos defectos y problemas de integración. Mayor confianza en las entregas: La automatización de pruebas y la validación continua garantizan que las versiones de software entregadas sean confiables y funcionales, lo que disminuye los riesgos de fallos en producción. Reducción de costos: Aunque la implementación inicial de CI/CD puede requerir inversión en herramientas y capacitación, a largo plazo, reduce los costos operativos y de mantenimiento al eliminar tareas manuales repetitivas y minimizar el tiempo de inactividad en producción debido a problemas. Mayor colaboración y comunicación: CI/CD fomenta una cultura de colaboración entre los equipos de desarrollo y operaciones (DevOps) al automatizar el flujo de trabajo y la comunicación en el ciclo de desarrollo. Retroalimentación temprana: La retroalimentación inmediata sobre problemas y errores en el código permite a los desarrolladores abordar los problemas de manera rápida y eficiente. Mayor flexibilidad y adaptabilidad: CI/CD permite a las empresas responder de manera más rápida a cambios en las necesidades del mercado, a los comentarios de los usuarios o a problemas inesperados. Mayor visibilidad: Los sistemas de CI/CD proporcionan visibilidad en tiempo real del estado de los proyectos y las entregas, lo que permite una mejor toma de decisiones. Menos errores humanos: La automatización reduce la posibilidad de errores humanos en el proceso de desarrollo y entrega. Ciclo de desarrollo consistente: La automatización garantiza que el proceso de construcción, prueba y entrega sea consistente y repetible, lo que facilita la gestión de proyectos a largo plazo. Laboratorio de Computación IV Material de Estudio – U3 Pág. 3 Etapas de CI/CD El proceso de CI/CD involucra las siguientes actividades que permiten el desarrollo de software de manera continua entre muchos equipos. Estas actividades son coordinadas a través de pipelines de automatización que aseguran la consistencia y el correcto funcionamiento de las mismas. Un pipeline de CI/CD generalmente consta de varias etapas que se ejecutan en orden, y cada etapa tiene una función específica en el proceso de desarrollo y entrega del software. Paso 1: Code (Codificar) Descripción En esta fase, los desarrolladores escriben y revisan el código fuente de las nuevas características o correcciones de errores que se agregarán al software. Es el punto de partida para la implementación de cambios en el código. Actividades típicas Escritura de código: Los desarrolladores escriben el código necesario para implementar las funcionalidades o correcciones de errores requeridas. Revisión de código: Otros miembros del equipo revisan y evalúan el código para garantizar su calidad y cumplimiento de estándares de codificación. Control de versiones: El código se gestiona y controla utilizando sistemas de control de versiones como Git, lo que permite rastrear cambios y colaborar en el desarrollo. Salida típica El resultado de esta fase es el código fuente implementado y revisado. Laboratorio de Computación IV Material de Estudio – U3 Pág. 4 Paso 2: Build (Construir) Descripción En la fase de construcción, se compila el código fuente para crear un artefacto de software ejecutable que se utilizará en las etapas posteriores del proceso de CI/CD. Actividades típicas Compilación de código: Se compila el código fuente para generar un artefacto de software, como un archivo binario o un paquete de instalación. Empaquetado: El artefacto generado se empaqueta y se prepara para su uso en las pruebas y el despliegue. Esto incluye la creación de imágenes de Docker o el ejecutable de una librería. Salida típica La salida de esta fase es el artefacto de software construido y listo para las siguientes etapas. Paso 3: Test (Probar) Descripción La fase de pruebas es crucial para verificar la funcionalidad y la calidad del software. Se ejecutan pruebas automatizadas y manuales para garantizar que el artefacto de software funcione como se espera. Actividades típicas Pruebas automatizadas: Se ejecutan pruebas automatizadas, que pueden incluir pruebas unitarias, pruebas de integración, pruebas de regresión y pruebas de rendimiento. Pruebas manuales: Los testers o desarrolladores pueden realizar pruebas manuales adicionales para verificar la funcionalidad desde una perspectiva de usuario. Identificación y Corrección de Errores: Si se detectan errores o problemas, se corrigen y se realiza una nueva construcción antes de continuar. Salida típica El resultado de esta fase es un artefacto de software que ha pasado las pruebas con éxito y está listo para el despliegue en entornos de preparación y producción. Laboratorio de Computación IV Material de Estudio – U3 Pág. 5 Paso 4: Deploy (Desplegar) Descripción En la fase de despliegue, el artefacto de software se implementa en entornos de prueba o producción, lo que permite que los usuarios finales accedan a las nuevas funcionalidades o correcciones. Actividades típicas Despliegue en entornos: Se instala y configura el software en los entornos de prueba y producción según lo planificado. Verificación de despliegue: Se verifica que el despliegue haya sido exitoso y que el software esté funcionando adecuadamente en el entorno de destino. Salida típica El software está implementado y listo para su uso en los entornos correspondientes, lo que marca la finalización de esta fase. Monitoreo Como aclaración especial se menciona el paso del monitoreo, que es una actividad que se debe realizar de manera constante en todo el proceso. El monitoreo se refiere a la práctica de supervisar y registrar el rendimiento y el comportamiento de las aplicaciones y sistemas en producción una vez que han sido desplegados. El monitoreo es una parte esencial de las prácticas de DevOps y CI/CD, ya que permite detectar y solucionar problemas de manera proactiva, garantizar la disponibilidad y el rendimiento de las aplicaciones, y obtener información valiosa para la mejora continua. Algunas áreas clave en las que el monitoreo desempeña un papel crucial en el contexto de CI/CD: Rendimiento de Aplicaciones: El monitoreo permite evaluar el rendimiento de las aplicaciones en producción, incluyendo la velocidad de respuesta, el uso de recursos y la capacidad de escalar en función de la demanda. Rendimiento de Infraestructura: Además de las aplicaciones, el monitoreo se extiende a la infraestructura subyacente, incluyendo servidores, bases de datos, servicios en la nube y redes. Laboratorio de Computación IV Material de Estudio – U3 Pág. 6 Disponibilidad y Tiempo de Inactividad: Se supervisa la disponibilidad de las aplicaciones y los servicios en producción para identificar y abordar de manera proactiva cualquier tiempo de inactividad o problemas de acceso. Seguridad: El monitoreo puede ayudar a detectar y responder a actividades sospechosas o intentos de intrusión, contribuyendo a la seguridad de las aplicaciones y los datos. Gestión de Logs: Se recopilan y analizan registros de eventos para identificar problemas, rastrear actividades y realizar auditorías. Métricas y Datos en Tiempo Real: Se capturan métricas en tiempo real sobre el rendimiento y el comportamiento de las aplicaciones y se presentan en paneles de control para una visibilidad inmediata. Notificaciones y Alertas: Se configuran alertas automáticas que se activan cuando se detectan condiciones anormales o problemas, lo que permite una respuesta rápida por parte del equipo de operaciones o desarrollo. Evaluación de Impacto de Cambios: El monitoreo ayuda a evaluar el impacto de los cambios y las nuevas implementaciones en la producción, lo que permite identificar problemas antes de que afecten a los usuarios finales. Atribución-No Comercial-Sin Derivadas Se permite descargar esta obra y compartirla, siempre y cuando no sea modificado y/o alterado su contenido, ni se comercialice. Universidad Tecnológica Nacional Facultad Regional Córdoba (S/D). Material para la Tecnicatura Universitaria en Programación, modalidad virtual, Córdoba, Argentina. Laboratorio de Computación IV Material de Estudio – U3 Pág. 7