El pipeline de integración continua/entrega continua (CI/CD) es un flujo de trabajo DevOps automatizado que optimiza el proceso de entrega de software.
Una característica vital del pipeline de CI/CD es el uso de automatización para garantizar la calidad del código. A medida que los cambios de software avanzan a través del pipeline, las pruebas automatizadas identifican antes las dependencias y otros problemas, envían cambios de código a diferentes entornos y entregan aplicaciones a entornos de producción.
Aquí, el rol de la automatización es realizar un control de calidad, evaluando desde el rendimiento hasta el uso y la seguridad de la interfaz de programación de aplicaciones (API). Este proceso ayuda a garantizar que los cambios realizados por todos los miembros del equipo se integren de forma integral y se realicen según lo previsto.
La capacidad de automatizar varias fases del pipeline de CI/CD ayuda a los equipos de desarrollo a mejorar la calidad, trabajar más rápido y mejorar otras métricas de DevOps.
Manténgase al día sobre las tendencias más importantes e intrigantes de la industria sobre IA, automatización, datos y más con el boletín Think. Consulte la Declaración de privacidad de IBM.
Mientras que el pipeline de CI/CD se refiere a flujos de trabajo ágiles de DevOps, CI/CD representa las prácticas combinadas de integración continua y entrega continua.
CI/CD crea una forma más rápida y precisa de combinar el trabajo de diferentes personas en 1 producto cohesivo. En entornos DevOps, CI/CD agiliza los procesos de programación, pruebas y despliegue de aplicaciones. Este enfoque brinda a los equipos un repositorio único para almacenar el trabajo y las herramientas de automatización para combinar y probar el código para garantizar que funcione de manera congruente.
El pipeline de CI/CD permite a los equipos de DevOps escribir código, integrarlo, ejecutar pruebas, entregar versiones y desplegar cambios en el software de forma colaborativa y en tiempo real. Si bien la automatización de las versiones de software, desde las pruebas iniciales hasta el despliegue final, es un beneficio significativo del pipeline de CI/CD, otros beneficios incluyen:
El pipeline de CI/CD consta de 3 metodologías conectadas:
El proceso de CI/CD comienza con la integración continua (CI), donde los desarrolladores comprometen su código en repositorios centrales gestionados por sistemas de control de versiones (VCS). CI permite a los desarrolladores trabajar de forma independiente, creando su propia “rama” de programación para implementar pequeños cambios.
A medida que el desarrollador trabaja, puede tomar instantáneas del código fuente, generalmente dentro de una herramienta de control de versiones como Git. El desarrollador es entonces libre de trabajar en nuevas características; si surge un problema, Git puede revertir rápidamente el código base a su estado anterior.
Luego, el trabajo de las personas se introduce en un sistema automatizado que utiliza scripts para construir y probar los cambios de código. Después de la etapa de compilación automatizada, un servidor de CI compila los cambios de código fuente en el código de rama principal o “tronco” del repositorio de código fuente compartido.
En lugar de escribir código de forma independiente y enviarlo a la rama de código principal una vez al mes, lo que puede dificultar el trabajo de corrección de errores y llevar a un control de versiones deficiente, el proceso de desarrollo de CI/CD permite a los equipos enviar cambios de código con mayor frecuencia. Estas pruebas continuas ofrecen arreglos más rápidos, ayudan a garantizar la funcionalidad y, en última instancia, dan como resultado una mejor colaboración y una mayor calidad del software.
El siguiente paso en el pipeline es la entrega continua (CD), que coloca los cambios de código validados realizados en la integración continua en entornos seleccionados o repositorios de código, como GitHub. Aquí, el equipo de operaciones puede desplegarlos en un entorno de producción en vivo.
El software y las API se prueban y los errores se resuelven a través de un proceso automatizado. En el paso final del proceso de CD, el equipo de DevOps recibe una notificación sobre la última compilación y la envía manualmente a la etapa de despliegue.
El objetivo de la etapa del pipeline de entrega continua es desplegar nuevo código con el mínimo esfuerzo, pero aún permitir un nivel de supervisión humana.
CD en el proceso de CI/CD también significa despliegue continuo. El despliegue continuo libera automáticamente los cambios de código para los usuarios finales después de pasar una serie de pruebas predefinidas, como pruebas de integración que analizan el código en un entorno de copia para garantizar la integridad del código.
Tanto la entrega continua como el despliegue continuo se ocupan de la automatización más adelante en el pipeline que CI y, a menudo, se usan indistintamente.
La diferencia entre la entrega continua y el despliegue continuo está en el nivel de automatización utilizado en los lanzamientos de software o aplicaciones. En la entrega continua, el código se traslada automáticamente a entornos similares a los de producción para realizar más pruebas y garantizar la calidad, como la evaluación de riesgos y la identificación de vulnerabilidades del código fuente. Se requiere intervención humana para pasar a la producción después de las pruebas exitosas.
En el despliegue continuo, la automatización va más allá. Una vez que el código pasa las pruebas, el despliegue a producción ocurre automáticamente; la aprobación humana no es necesaria.
La forma en que una organización aplica el pipeline de CI/CD y decide si utilizar la entrega o el despliegue continuo depende de sus necesidades empresariales. El despliegue continuo es mejor para los equipos de DevOps con un ciclo de vida de desarrollo rápido, como aquellos que construyen sitios de comercio electrónico y plataformas de software como servicio (SaaS).
El despliegue continuo respalda el proceso de lanzamiento de software al permitir que los equipos lancen software nuevo o actualizado con frecuencia y lo más rápido posible. Debido a que los cambios se despliegan automáticamente al público, este tipo de pipeline de despliegue continuo lo utilizan normalmente los equipos de DevOps que tienen un proceso probado.
Para los equipos que podrían no necesitar lanzar actualizaciones con tanta frecuencia en su flujo de trabajo, como aquellos que crean aplicaciones de atención médica, la entrega continua suele ser la opción preferida. Es más lento, pero ofrece otra capa de supervisión para garantizar la funcionalidad para los usuarios finales.
Para conocer con más detalle la diferencia entre entrega continua y despliegue continuo, mire este video.
Un pipeline de machine learning es una serie de pasos interconectados de procesamiento y modelado de datos diseñados para automatizar, estandarizar y optimizar el proceso de creación, entrenamiento, evaluación y despliegue de modelos de machine learning.
Los pipelines de machine learning son un componente esencial en el desarrollo y la producción de sistemas de machine learning (ML). Además, se volvieron cada vez más importantes debido al crecimiento del big data y la inteligencia artificial (IA).
Según Kings Research, el tamaño del mercado global de machine learning fue valorado en 26.06 millones de dólares en 2023 y se prevé que crezca de 35.440 millones en 2024 a 328.89 mil millones para 2031, mostrando una tasa compuesta anual del 37.47 % durante el periodo de pronóstico.1
Los pipelines de machine learning se integran con las prácticas de DevOps para habilitar CI/CD de modelos de machine learning. Esta integración se conoce como operaciones de machine learning (MLOps), que ayuda a los equipos de ciencia de datos a gestionar eficazmente la complejidad de la orquestación de machine learning (ML).
Desde el código fuente hasta la producción, estas etapas comprenden el ciclo de vida de desarrollo y el flujo de trabajo del pipeline de CI/CD:
Esta etapa forma parte del proceso de integración continua e implica la creación y compilación de código. Los equipos se basan en el código fuente de forma colaborativa e integran el nuevo código mientras determinan rápidamente cualquier problema o conflicto.
En esta etapa, los equipos prueban el código. Las pruebas automatizadas se realizan tanto en entrega continua como en despliegue continuo. Estos entornos de prueba pueden incluir pruebas de integración, pruebas unitarias y pruebas de regresión.
Aquí, se envía una base de código aprobada a un entorno de producción. Esta etapa se automatiza en el despliegue continuo y solo se automatiza en la entrega continua después de la aprobación del desarrollador.
Por último, se despliegan los cambios y el producto final se lleva a producción. En la entrega continua, los productos o códigos se envían a repositorios y se llevan a producción o despliegue mediante la aprobación humana. En el despliegue continuo, este paso está automatizado.
Al seleccionar herramientas de CI/CD, la atención debe centrarse en optimizar y automatizar el proceso de desarrollo de software. Una pipeline eficaz de CI/CD usa herramientas de código abierto para la integración, las pruebas y el despliegue. La configuración correcta del proceso de CI/CD también afecta el éxito del pipeline de desarrollo de software.
La herramienta de CI/CD de código abierto más común es Jenkins. Jenkins es un servidor de CI automatizado escrito en Java que se utiliza para automatizar los pasos de CI/CD y la elaboración de informes. Otras herramientas de código abierto para la integración incluyen Travis CI y CircleCI.
Además de las herramientas de código abierto, los principales proveedores de servicios en la nube (Google Cloud, IBM® Cloud, Microsoft Azure y Amazon Web Services o AWS) ofrecen cadenas de herramientas de CI/CD basadas en la nube, pipelines e integraciones de herramientas.
Los entornos de desarrollo integrados (IDE), como GitHub o AWS CodeCommit, ayudan a los desarrolladores a crear, mantener y rastrear paquetes de software. Al mismo tiempo, las plataformas como GitLab buscan proporcionar el IDE dentro de una plataforma integral que incluye otras herramientas.
Cuando operan en un entorno de nube, los equipos de DevOps nativos de la nube utilizan contenedores como Docker para aplicaciones de empaquetado y envío, y utilizan herramientas de orquestación de contenedores como Kubernetes. Si bien Kubernetes no es estrictamente para el pipeline de CI/CD, se utiliza en muchos flujos de trabajo de CI/CD.
La seguridad de CI/CD se centra en prácticas, procesos y tecnologías que implementan y gestionan medidas de seguridad y cumplimiento en todo el pipeline de CI/CD.
En el pasado, la seguridad se “adhirió” al software al final del ciclo de desarrollo. El avance de las plataformas en la nube, los microservicios y los contenedores creó un cuello de botella para el enfoque de desarrollo tradicional.
La seguridad podría no seguir el ritmo de los lanzamientos rápidos a medida que los desarrolladores adoptaron prácticas ágiles y DevOps, impulsando la evolución de DevSecOps, que significa desarrollo, seguridad y operaciones. DevSecOps automatiza la integración de las prácticas de herramientas de seguridad a medida que surgen dentro de los pipelines de integración continua (CI) y entrega continua (CD).
Las prácticas de DevSecOps incluyeron pruebas de shift left y shift right. Las pruebas de shift left implican la integración de pruebas de seguridad y otras prácticas críticas de desarrollo más temprano en el ciclo de vida del desarrollo de software (SDLC). Las pruebas de shift right implican pruebas posteriores en el desarrollo, generalmente en entornos de producción. Estos métodos se complementan entre sí al distribuir la responsabilidad de las pruebas en todo el SDLC.
Aproveche el poder de la IA y la automatización para resolver problemas de manera proactiva en toda la pila de aplicaciones.
Utilice el software y las herramientas de DevOps para crear, desplegar y gestionar aplicaciones nativas de la nube en múltiples dispositivos y entornos.
Acelere la agilidad y el crecimiento empresarial: modernice continuamente sus aplicaciones en cualquier plataforma con nuestros servicios de consultoría en la nube.