Término del glosario

CI/CD

Para tu comodidad, tradujimos esta página mediante traducción automática. No podemos garantizar la precisión ni la confiabilidad del contenido traducido. Si tienes alguna duda sobre la precisión del contenido traducido, consulta la versión oficial en inglés de la página web.

¿Qué es CI/CD?

CI/CD, o integración continua/entrega o despliegue continuo, es una práctica de desarrollo de software habilitada por la automatización. Actualizaciones frecuentes y fiables aceleran los ciclos de lanzamiento a través de la entrega continua de código.

CI/CD explicado

CI/CD es un término general que abarca varias fases de DevOps. CI (integración continua) es la práctica de integrar cambios de código en un repositorio varias veces al día. CD tiene dos significados: La entrega continua automatiza las integraciones de código, mientras que el despliegue continuo libera automáticamente las versiones finales a los usuarios finales. Las pruebas frecuentes de CI/CD reducen errores y defectos en el código, lo que lo hace crucial para cada flujo de trabajo de DevOps.

Tres manos sosteniendo una bombilla

¿Qué es la integración continua? (CI)

La integración continua (CI) es un proceso de desarrollo de software automatizado que aumenta la velocidad de desarrollo mientras asegura un código limpio y de calidad con cada despliegue. La integración continua requiere que los desarrolladores registren/comprometan frecuentemente sus unidades de código en un repositorio central compartido muchas veces al día.

CI es una mejor práctica de DevOps y etapa en el ciclo de vida de DevOps cuando los desarrolladores registran código en su repositorio de código compartido. Una herramienta de construcción automatizada verifica el registro o la rama para asegurar que no haya errores y que esté lista para entrar en producción. El principal beneficio aquí es que los problemas suelen ser detectados temprano antes de que puedan convertirse en problemas mayores.

Practicar la CI significa integrar pequeños subconjuntos de cambios en un período de tiempo más corto, en lugar de actualizaciones sustanciales que tardan más y son menos frecuentes. Automatizar flujos de trabajo para probar, fusionar y registrar cambios en un repositorio compartido significa que los equipos pueden entregar código más limpio a un ritmo más rápido. Un código más limpio significa una validación más rápida, lanzamientos de mayor calidad y un pipeline de desarrollo más eficiente que es más fácil de escalar.

¿Cómo funciona la integración continua?

La integración continua es un proceso simple y fluido que comienza en la fase de desarrollo y termina en el entorno de pruebas. La integración continua permite a todos los desarrolladores trabajar de manera colaborativa y hacer un seguimiento de su código. Cada desarrollador "compromete" su código en pequeños incrementos a un repositorio de código compartido, también conocido como el repositorio principal. El repositorio de código se mantiene en un sistema de control de versiones como Unity VCS, Perforce o Git. Cada compromiso realizado en la rama principal del repositorio (o ramas secundarias si lo eliges) puede activar un proceso de construcción automatizado vinculado a un sistema de gestión de construcciones que toma el código y crea una construcción. Una vez que el código se fusiona en el sistema de construcción, los desarrolladores obtienen acceso completo a sus construcciones de código. Desde aquí, pueden ver si su código se compila correctamente o si hay un error que podrían necesitar corregir. Los sistemas de construcción se pueden configurar para soportar varios marcos de prueba.

Una vez que el código es aprobado y el ciclo de construcción es exitoso, se activa un entorno de pruebas automatizado para validar la calidad de la construcción y el lanzamiento subsiguiente. Debido a que el proceso de prueba y construcción es extremadamente rápido, los resultados de los compromisos de código se pueden comunicar rápidamente, empoderando a los desarrolladores para corregir cualquier error restante de manera oportuna. Todo este proceso asegura que la base de código se mantenga saludable y que todos puedan seguir trabajando de manera eficiente.


Reglas y principios de la CI

- Mantener un repositorio de código central

El almacenamiento temporal de código de diferentes desarrolladores en varios equipos en repositorios separados o sistemas separados debe mantenerse al mínimo.

- Hacer commit/check in del código en el repositorio principal con frecuencia

Cuanto más tiempo un desarrollador retenga el código sin construirlo o probarlo, más probable es que sea inconsistente con lo que está almacenado en el repositorio central.

- Mantener servidores de construcción y prueba separados

Los equipos deben mantener máquinas dedicadas solo para fines de construcción. Esto acelera el proceso de construcción y minimiza el impacto en los flujos de trabajo de otros desarrolladores.

- Las construcciones y pruebas deben ser automatizadas

Cada pieza de código comprometida en el repositorio central de código fuente debe ser construida y probada automáticamente con herramientas de integración continua.

- Usar entornos de prueba similares a producción

Los entornos de prueba deben simular el eventual entorno de producción. Esto asegura la utilidad del entorno de prueba y mantiene las expectativas consistentes durante el despliegue.

- Los equipos de aseguramiento de calidad deben tener acceso a las construcciones

Cuando el QA tiene acceso a las construcciones, cualquier fallo en cumplir con los requisitos de producción puede ser detectado temprano, reduciendo el riesgo de tener que rehacer las construcciones de código más tarde.

Integración Continua y bucles de entrega Continua

Entrega continua vs despliegue continuo

El despliegue continuo y la entrega continua son prácticas utilizadas para llevar nuevo código y empujarlo a producción tan rápido y eficientemente como sea posible. La entrega continua sigue a CI – puedes pensar en ello como una fase de punto de control en la tubería de desarrollo antes de que el producto final sea liberado a los clientes. Una vez que se han validado los cambios de código, se entregan automáticamente al repositorio central.

El despliegue continuo sigue a CI en el ciclo de vida de DevOps, pero los dos procesos están vinculados. CI integra el código en la construcción con automatización; CD completa ese proceso. Las automatizaciones de DevOps evalúan la calidad de las actualizaciones. Una vez que se ha comprobado que están libres de errores, se despliegan automáticamente en producción.

¿Qué es la entrega continua?

La entrega continua se refiere a la construcción, prueba y entrega de cambios de código a software. En este proceso, el código pasa por varios entornos de prueba, como pruebas unitarias automatizadas, pruebas de integración y pruebas de sistema, antes de ser enviado a producción. La entrega continua ocurre en entornos de preparación similares a producción donde los QA revisan el código, corrigen errores y ejecutan pruebas automatizadas para asegurar que las construcciones sean siempre desplegables y listas para su lanzamiento.

Con la entrega continua, el objetivo es mantener los conjuntos de cambios lo suficientemente pequeños como para que ninguna actualización de la construcción principal comprometa el estado de "listo para producción" del producto final. El producto final puede contener errores menores, pero nada lo suficientemente sustancial como para comprometer la experiencia del usuario.

Practicar la entrega continua significa que los desarrolladores pueden pasar menos tiempo probando internamente, ya que la práctica asegura que solo el código estable llegue a la fase de entrega en primer lugar. Hace que la detección de errores sea un proceso más simple, acelerando el tiempo de resolución.

¿Qué es el despliegue continuo?

El despliegue continuo tiene como objetivo desplegar continuamente cambios de código en producción desde el repositorio central una vez que la construcción es estable. El equipo de operaciones despliega el código compilado e instala el software en diferentes entornos (desarrollo/prueba, preparación y producción). Cada cambio pasa por una canalización automatizada que empuja una versión funcional de la aplicación a producción. El despliegue puede tomar diferentes formas. Un lanzamiento oscuro es un despliegue que está oculto a los usuarios, mientras que los interruptores de características o los conmutadores pueden ser utilizados para desplegar subconjuntos específicos de un conjunto de cambios a un grupo de usuarios para pruebas y retroalimentación.

El despliegue continuo tiene numerosos beneficios para desarrolladores y clientes. Los desarrolladores que utilizan soluciones de despliegue continuo ya no necesitan preocuparse por el despliegue manual de compilaciones y pueden centrarse en tareas más basadas en habilidades. La automatización acorta los ciclos de retroalimentación, lo que significa que los productos pueden actualizarse más rápidamente en función de la opinión del cliente. Con el despliegue continuo, el código se ejecuta y se mantiene en un entorno simulado que garantiza la calidad y permite la supervisión en tiempo real del producto. El objetivo principal del despliegue continuo es lanzar versiones más nuevas del código de manera consistente y desplegar automáticamente esos cambios a los usuarios finales.

¿Cómo están relacionados CI/CD y DevOps?

Todo el desarrollo de software comienza con la preproducción (la fase de planificación), seguida de la producción (codificación y creación de activos). DevOps es una cultura y un proceso destinados a hacer que estos procesos sean más eficientes. CI/CD es una fase dentro del ciclo de vida de DevOps que exige la implementación de flujos de actualizaciones de código pequeños pero constantes a lo largo del tiempo para garantizar una mejora continua e iterativa del producto final.

Lanzamientos de software regulares y frecuentes se pueden lograr utilizando herramientas y productos específicos que permiten la integración, entrega y despliegue de cambios en el código; esto se llama un pipeline de CI/CD.

Un pipeline de CI/CD es un conjunto específico de fases vinculadas a herramientas y automatización que permiten que el ciclo de vida de DevOps ocurra. Si bien CI/CD es una parte integral de una cultura DevOps, DevOps abarca mucho más a lo largo del ciclo de vida del desarrollo de software: desde la colaboración hasta la estructura del equipo, la observabilidad, el control de versiones y más.

La implementación de DevOps varía mucho entre organizaciones, pero en su núcleo, DevOps no se puede lograr sin CI/CD. Un pipeline de CI/CD está intrínsecamente ligado a una cultura DevOps y su proceso de lanzamientos pequeños y frecuentes.

Beneficios de CI/CD

- Iteración rápida

Adoptar prácticas de CI/CD como parte de su ciclo de vida DevOps acelera el desarrollo al automatizar el trabajo manual de validar y desplegar cambios en la base de código.

- Código más limpio

Realizar numerosos cambios pequeños a lo largo del día reduce sustancialmente el riesgo de que se introduzcan errores que rompan la compilación en tu código fuente.

- Correcciones de errores más rápidas

Fusionar conjuntos de cambios más pequeños con más frecuencia mediante CI/CD facilita la identificación de errores en el código y su corrección antes de que se conviertan en un problema mayor.

- Ciclos de retroalimentación más cortos

CI/CD ayuda a acortar los ciclos de retroalimentación, un principio fundamental de DevOps, porque los cambios más pequeños e iterativos son más fáciles de integrar, probar y desplegar.

- Mejor colaboración

CI/CD aporta claridad al trabajo al definir procesos y cronogramas para los commits de código y los lanzamientos de compilación. Con objetivos más claros, los equipos pueden moverse con mayor agilidad.

- Clientes más felices

Debido a que las compilaciones están siempre listas para ser lanzadas con CI/CD, los clientes experimentan menos interrupciones en el servicio, y sus comentarios pueden integrarse mucho más rápidamente.

¿Es ágil lo mismo que CI/CD?

Un flujo de trabajo ágil y CI/CD están relacionados, sin embargo, no son lo mismo. Describen aspectos completamente diferentes del proceso de desarrollo de software. El desarrollo ágil se refiere al proceso o metodologías para gestionar flujos de trabajo, ritmos de reuniones y organización del equipo en el desarrollo de software. Una metodología ágil abraza el cambio mientras acelera la entrega al escuchar y responder a las necesidades del cliente e involucrarlos en cada etapa del proceso de desarrollo.

CI/CD se basa en la automatización para eliminar los elementos humanos que crean cuellos de botella en la liberación y mejora del software. En CI y CD, las pruebas se automatizan a lo largo de la canalización y se realizan con frecuencia para minimizar los costos y el tiempo que lleva remediar defectos.

¿Con qué frecuencia deberías desplegar en producción con despliegue continuo?

Con CI/CD, los lanzamientos siempre deben ser frecuentes para evitar problemas futuros y asegurar que tu software esté siempre en un estado liberable, típicamente desplegando múltiples veces al día. Una suposición común con los equipos de CI/CD debería ser implementar lanzamientos "constantes", sin embargo, esto no siempre es el caso. Tu ciclo de lanzamiento puede variar ampliamente dependiendo de tu producto, tus compilaciones y otros factores que podrías querer tener en cuenta, tales como:

1. ¿Es una corrección crítica o menor?

2. ¿Estás rastreando los conteos de regresión de compilación a compilación?

3. ¿Hay un equipo de QA establecido?

4. ¿La base de código tiene pruebas unitarias?

5. ¿Hay duplicaciones de código?

Estos son solo algunos ejemplos de aspectos a considerar al pensar en una estrategia de lanzamiento y pipeline, pero varía drásticamente de equipo a equipo. Diferentes productos requieren diferentes enfoques.

¿Vale la pena el despliegue continuo?

No hay una respuesta única para esta pregunta. Antes de invertir en despliegue continuo, una empresa debe primero evaluar cuáles son los mayores riesgos de su producto y luego determinar los compromisos en cómo deseas desplegar software.

El éxito de tu producto depende de poder iterar rápidamente, obtener retroalimentación de tus clientes y continuar haciendo cambios. El despliegue continuo será altamente impactante y rentable si priorizas acortar los ciclos de retroalimentación y construir un negocio altamente receptivo.

Sin embargo, si su negocio no tiene muchos clientes, entonces los beneficios de implementar incrementos de despliegue agregarán menos valor y más costos. El entorno de preparación que elija para desplegar depende en última instancia de las necesidades de su negocio, flujo de trabajo y presupuesto.

La entrega continua fomenta la configuración porque realiza cambios continuamente en el código original en la configuración. Esto asegura que la configuración se mantenga al día con los errores de código que pueden ocurrir con el tiempo.

Volver al glosario