Lo primero, aunque se resuma en las siglas CI y CD, son 3 procesos diferentes, dentro de CD hay dos ramas diferentes.

Entonces empezamos por traducirlo. Primero, la Continuous Integration (CI) sería Integración Continua. Luego como decía CD son 2 procesos. Continuous Delivery (CD) sería Entrega continuaContinuous Deployment (CD) sería Despliegue continuo.

Resumen del artículo

Un poco de historia antes de continuar. Las aplicaciones antes eran monolíticas, significa que está en un mismo lugar todas las partes de la aplicación. Ahora mismo la mayoría de las aplicaciones se basan en los micro servicios, en hacer subdivisiones lógicas de los componentes de la misma, por ejemplo separar la base de datos, de la API, del frontend. Son arquitecturas diferentes y como tal, cada una tiene sus propias ventajas.

[CI/CD] Continuous Integration + Continuous Delivery + Continuous Deployment 0

Entendiendo a una empresa y a un programador: Una aplicación no se escribe entera en un día. Tiene partes (funcionalidades) y se van añadiendo poco a poco en forma de actualizaciones. Y por lo tanto estos procesos se hacen cada vez que se escribe código nuevo.

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

En la construcción de aplicaciones tradicionales la construcción se hacia solo 1 vez, al final. Lo llamado Last day integration o Integration hell. Esto tenia muchos problemas, si había un error había que buscarlo a lo largo de todo el código.

Continuous Integration (CI), la traducción sería Integración Continua. Con la integración continua (CI), cada vez que se añade código se construye la aplicación y se realizan pruebas automáticas. Así si falla, ya sabemos que es esa última parte del código añadido y al utilizar un gestor de código como por ejemplo GIT podremos ver las diferencias o incluso volver al código antiguo.

[CI/CD] Continuous Integration + Continuous Delivery + Continuous Deployment 1

Las pruebas que podemos hacer son muy variadas. Pero obligatoriamente se hacen dos:

  1. Test de la Aplicación (Application testing). En este tipo de test la finalidad es probar la funcionalidad de la aplicación. Con esto encuentras errores y reduces costes.
  2. Test de Integración (Integration test). En este tipo de test lo que hace es probar cada componente individual y luego las conexiones entre las partes de la aplicación.

¿Qué es la Entrega continua (CD)?

Continuous Delivery (CD), la traducción sería Entrega Continua.

Se suma a la integración continua (CI) otro test y luego el despliegue de la aplicación que es NO automático.

[CI/CD] Continuous Integration + Continuous Delivery + Continuous Deployment 2

Como vemos son los mismos pasos (CI + CD), añadiendo el test de validación (Acceptance test).

Ese último test es el final. En el momento que ese test de positivo significa que ya la aplicación es correcta y se podría utilizar en producción. ¿Entonces por que no es automático?. Pues por el simple hecho de poder decidir cuando lanzar la aplicación o sus actualizaciones.

Este ultimo test, a diferencia de los anteriores de CI que comprueban la calidad del código, se basa en comprobar la funcionalidad de la aplicación. Si de verdad hace lo que debería hacer la aplicación.

Con este CD lo que puedes hacer es controlar las actualizaciones de forma manual.

¿Qué es la Despliegue continuo (CD)?

Continuous Deployment (CD), la traducción sería Despliegue continuo.

[CI/CD] Continuous Integration + Continuous Delivery + Continuous Deployment 3

Simplemente es igual que el anterior CD, entrega continua, solo que es automática. Cuando se aprueba el test de validación se ejecuta directamente en producción.

Puntuación