Jump to section

La integración y la distribución continuas (CI/CD)

Copiar URL

Global Technology Outlook 2023: un informe de Red Hat

Descargue el 2023 Global Technology Outlook para ver los resultados de la encuesta a 1703 líderes de TI a nivel mundial y establecer sus prioridades para el 2023!

La CI/CD es un método para distribuir las aplicaciones a los clientes con frecuencia mediante el uso de la automatización en las etapas del desarrollo de las aplicaciones. Los principales conceptos que se le atribuyen son la integración, la distribución y la implementación continuas. Se trata de una solución para los problemas que puede generar la integración del código nuevo para los equipos de desarrollo y de operaciones (también conocida como "el infierno de la integración").

En concreto, el proceso de integración y distribución continuas incorpora la automatización y la supervisión permanentes en todo el ciclo de vida de las aplicaciones, desde las etapas de integración y prueba hasta las de distribución e implementación. Estas prácticas vinculadas se conocen como "canales de CI/CD" y cuentan con el respaldo de los equipos de desarrollo y de operaciones que trabajan en conjunto de manera ágil, con un enfoque de DevOps o de ingeniería de confiabilidad del sitio (SRE).

El objetivo del diseño de las aplicaciones modernas es que los desarrolladores puedan trabajar de forma simultánea en distintas funciones de la misma aplicación. Sin embargo, si una empresa fusiona todo el código fuente diversificado en un solo día (conocido como el "día de la fusión"), las tareas pueden tornarse tediosas, manuales y muy lentas. Esto se debe a que si un desarrollador que trabaja de forma aislada implementa un cambio en una aplicación, existe la posibilidad de que entre en conflicto con las modificaciones que otros desarrolladores implementaron al mismo tiempo. El problema puede agravarse aún más si cada desarrollador personaliza su propio entorno de desarrollo integrado (IDE) local, en lugar de que todo el equipo adopte un IDE basado en la nube.

La integración continua (CI) permite que los desarrolladores fusionen los cambios del código en un repositorio compartido con mayor frecuencia, o incluso a diario. Una vez que se incorporan las modificaciones del desarrollador, se validan con la compilación automática de la aplicación y la ejecución de distintas pruebas automatizadas (generalmente, de unidad e integración), para garantizar que los cambios no hayan introducido una falla. Esto significa que se debe probar todo, desde las clases y el funcionamiento hasta los distintos módulos que conforman toda la aplicación. Si una prueba automática detecta un conflicto entre el código nuevo y el actual, la CI facilita la resolución de esos errores con rapidez.

Después de la automatización de las compilaciones y las pruebas de unidad e integración de la CI, la distribución continua automatiza el traslado del código validado hacia un repositorio. Por eso, para que la distribución continua sea eficaz, es importante que la CI ya esté incorporada al proceso de desarrollo. El objetivo de la distribución continua es tener una base de código que pueda implementarse en el entorno de producción en cualquier momento.

Cada etapa (desde la incorporación de los cambios al código hasta la distribución de las compilaciones listas para la producción) implica la automatización de las pruebas y del lanzamiento del código. Al final de este proceso, el equipo de operaciones puede implementar una aplicación para la producción de forma rápida y sencilla.

La última etapa del proceso consolidado de CI/CD es la implementación continua, la cual se encarga de automatizar el lanzamiento de la aplicación a la producción, tal como lo hace la distribución continua con la compilación lista para la producción en un repositorio de código, dado que es una extensión de ella. Debido a que no hay ninguna entrada manual en la etapa anterior a la producción, la implementación continua depende en gran medida del correcto diseño de la automatización de las pruebas.

En la práctica, los cambios que implementan los desarrolladores en la aplicación en la nube podrían ponerse en marcha unos cuantos minutos después de su creación (siempre que hayan pasado las pruebas automatizadas). Esto facilita mucho más la recepción e incorporación permanente de los comentarios de los usuarios. En conjunto, todas estas prácticas de CI/CD permiten que se implementen las aplicaciones con menos riesgos, ya que es más fácil incorporar los cambios en las aplicaciones de a poco, en lugar de hacerlo todo de una sola vez. Sin embargo, también deben realizarse muchas inversiones iniciales, ya que se deben diseñar las pruebas automatizadas para que se adapten a las distintas etapas de prueba y lanzamiento en el canal de la CI/CD.

Las herramientas de CI/CD son útiles para que los equipos automaticen el desarrollo, la implementación y las pruebas. Hay algunas que gestionan específicamente la integración (CI), otras que abordan el desarrollo y la implementación (CD), y algunas que se especializan en las pruebas permanentes u otras funciones relacionadas.

Una de las herramientas opensource más conocidas para la CI/CD es el servidor de automatización Jenkins, cuyo diseño permite gestionar cualquier sistema, desde un servidor sencillo de CI hasta un centro completo de CD.

Tekton Pipelines es un marco para las plataformas Kubernetes que ofrece una experiencia estándar de CI/CD en la nube con contenedores.

Además de Jenkins y Tekton Pipelines, estas son otras herramientas open source de CI/CD que le podrían interesar:

  • Spinnaker: plataforma de CD diseñada para los entornos multicloud

  • GoCD: servidor de CI/CD que se enfoca en la creación de modelos y la visualización

  • Concourse: sistema open source de automatización constante

  • Screwdriver: plataforma de diseño creada para la distribución continua

Es posible que a los equipos también les convenga adquirir las herramientas gestionadas de CI/CD, que ofrecen muchos proveedores. Los principales proveedores de nube pública ofrecen soluciones de CI/CD, junto con GitLab, CircleCI, Travis CI, Atlassian Bamboo y muchos más.

Además, es probable que cualquier herramienta que sea fundamental para DevOps forme parte de un proceso de CI/CD. Las herramientas para la automatización de la configuración (como Ansible, Chef y Puppet), los tiempos de ejecución de los contenedores (como Docker, rkt y cri-o) y la organización en contenedores (Kubernetes) no son herramientas específicas de CI/CD, pero aparecen en muchos de sus flujos de trabajo.

Hay muchas maneras en que puede implementar CI/CD dependiendo de su estrategia de desarrollo de aplicaciones y su proveedor de nube. Red Hat® OpenShift® Service on AWS tiene varias opciones para simplificar su flujo de trabajo CI/CD como Tekton y OpenShift Pipelines. Al utilizar Red Hat OpenShift, las empresas pueden utilizar CI/CD para automatizar el diseño, prueba e implementación de una aplicación en múltiples plataformas de nube o a nivel local.

Más información

Artículo

¿Qué hace un ingeniero de DevOps?

Un ingeniero de DevOps es alguien que posee una combinación única de habilidades y experiencia que permite la colaboración, la innovación y los cambios culturales dentro de una empresa.  

Artículo

La integración y la distribución continuas (CI/CD)

La integración y la distribución continuas (CI/CD) incorporan la automatización y la supervisión constantes a todo el ciclo de vida de las aplicaciones, desde las etapas de integración y pruebas hasta las de distribución e implementación.

Artículo

¿Qué es DevSecOps?

Si desea aprovechar al máximo la agilidad y la capacidad de respuesta de los enfoques de DevOps, la seguridad de la TI debe estar presente durante todo el ciclo de vida de sus aplicaciones.