El nuevo ciclo de vida de desarrollo de software de Continuous Integration / Continuous Delivery promete serias mejoras para las empresas. Antes de pasar a conocer esta tecnología, se tiene que entender cómo es el modelo tradicional de Desarrollo de Software, en el que se integra esta innovación.
El modelo tradicional de Ciclo de Vida de Desarrollo de Software (SDLC, por sus siglas en inglés) es algo así:
- Planificación.
- Implementación.
- Pruebas.
- Documentación.
- Despliegue y mantenimiento.
- Mantenimiento.
El modelo SDLC se ha utilizado durante años y ha servido bien a la industria. Sin embargo, con el advenimiento y el uso generalizado de aplicaciones en contenedores, el viejo modelo realmente no funciona tan bien. ¿Por qué? Velocidad. Uno de los principales beneficios de las aplicaciones en contenedores es la velocidad a la que se pueden crear e implementar.
Aún mejor, especialmente para las empresas de nivel empresarial, es el hecho de que las aplicaciones y los servicios en contenedores se pueden automatizar casi por completo desde la implementación hasta la ampliación y la actualización. Esos dos aspectos (velocidad y automatización) realmente no permiten un modelo de ciclo de vida tradicional.
Y ahí es donde entra en juego CI / CD.
- ¿Qué es un «pipeline»?
Antes de hablar sobre CI o CD, lo mejor es entender primero qué son los pipeline (tuberías). Efectivamente, una tubería es un grupo de eventos o trabajos que están conectados en una secuencia. Pero es un poco más complicado que eso porque cada secuencia (o etapa) depende de la salida de la etapa anterior. Entonces:
- Etapa 1> Salida> Etapa 2> Salida> Etapa 3> Salida
Si la salida de cualquier etapa falla, la siguiente etapa también fallará. La canalización de CI / CD tiene que ver con la automatización: iniciar compilaciones de código, pruebas automatizadas e implementación automatizada en los entornos de preparación o producción. Es una tubería compleja, pero increíblemente rápida.
- ¿Qué es la integración continua (CI)?
La integración continua es el proceso que permite a los desarrolladores integrar nuevo código en un repositorio compartido (como GitHub) durante todo el día. Ese envío continuo de confirmaciones permite que el sistema en su conjunto (generalmente por medio de la automatización) detecte cualquier error de integración en la etapa inicial de confirmación para que los problemas puedan resolverse de inmediato.
Una vez que el nuevo código se combina con el repositorio existente, se activa una nueva compilación. Una vez que se completa la compilación, las ejecuciones de prueba se realizan automáticamente contra la compilación para garantizar que nada se haya roto. Esta integración de código ocurre continuamente.
- ¿Qué es la entrega continua (CD)?
La entrega continua (CD) ocurre al final del ciclo de CI y es responsable de la entrega automática del código integrado desde el desarrollo hasta la etapa de producción. El CD no solo se encarga de la entrega automática del código integrado, sino también de garantizar que el código entregado no tenga errores ni demoras.
La entrega continua ayuda a los desarrolladores a fusionar el nuevo código en la rama principal con un alto nivel de coherencia. La parte del CD del ciclo también es responsable de probar la calidad del código y realizar comprobaciones para asegurarse de que se pueda lanzar una compilación funcional en el entorno de producción.
En el CI/CD no solo hay menos etapas en el ciclo de desarrollo de software, sino que se ejecuta continuamente. Entonces, a medida que los desarrolladores se comprometen con el repositorio a lo largo del día, los siguientes pasos se toman automáticamente. Gracias a herramientas de automatización como Jenkins, el ciclo se mueve de etapa en etapa continuamente.
Claramente vas a tener ventajas y desventajas con este ciclo de desarrollo. Algunas de las ventajas son:
- Velocidad de despliegue.
- Pruebas y análisis más rápidos.
- Pequeños cambios de código.
- Mejor y más rápido aislamiento de fallas.
- Mayor cobertura de código.
- Despliegue automático a producción.
- El proceso es repetible.
- Tiempo medio de resolución más rápido
- Mejora de la satisfacción del cliente.
- Toneladas de herramientas de código abierto disponibles.
Las desventajas de CI / CD son:
- Se deben aprender nuevos conjuntos de habilidades
- Curva de aprendizaje empinada para implementar la automatización
- Gran inversión inicial
- Los sistemas heredados rara vez admiten CI / CD
- Alto grado de disciplina y dedicación a la calidad.
Si se está buscando acelerar su ciclo de vida de desarrollo y entregar un producto más consistente, entonces la CI/CD podría ser ideal para su empresa.