Los desarrolladores siguen un proceso/modelo conocido como Ciclo de vida de desarrollo de software (SDLC ) para desarrollar proyectos de software. Un SDLC tradicional tiene varias etapas de desarrollo
- Planificación: documentar y determinar la estructura y el cronograma del proyecto.
- Análisis: análisis de los requisitos del proyecto y recopilación de recursos.
- Diseño: Diseño de modelo de software con arquitectura y diseño de interfaz.
- Implementación: desarrollo de un producto real considerando el diseño y los requisitos.
- Pruebas: probar la compilación, corregir errores y fallas, y refactorizar el código.
- Implementación y mantenimiento: el software se implementa y supervisa para obtener mejoras adicionales.
Características –
Una descripción general de un SDLC tradicional que se muestra en la imagen de arriba funciona de la siguiente manera.
- Diferentes equipos de desarrollo mantienen diferentes repositorios de código.
- El equipo de compilación e integración integra el código.
- El código integrado se compila como un paquete.
- Se envía un paquete con instrucciones al equipo de Operaciones.
- El equipo de operaciones empuja el paquete a un entorno de prueba, el equipo de pruebas prueba el paquete.
- El equipo de prueba informa al equipo de desarrollo sobre cualquier posible problema; de lo contrario, da una señal verde para el lanzamiento de producción.
Sin embargo, no es valioso en este mundo que se adapta rápidamente practicar el proceso anterior y modelos como el modelo de cascada en el que tenemos que esperar hasta el final para recibir un producto funcional, generalmente entregado al final de un ciclo.
Definición de CI/CD:
Ahí es donde CI/CD viene al rescate. Es más una cultura y práctica que herramientas, pero ¿qué es CI/CD?
“CI/CD son las siglas de Continuous Integration and Continuous Delivery (o Continuous Deployment), se trata de cómo se usa un código integrado en un repositorio compartido para lanzar software a producción varias veces al día con la ayuda de la automatización”.
Integración continua :
La integración continua se trata de cómo los desarrolladores integran el código utilizando un repositorio compartido varias veces al día con la ayuda de la automatización.
Entrega continua:
La entrega continua se trata de lanzar software automáticamente al entorno de prueba o producción.
Características –
La imagen de arriba muestra el proceso de integración continua y entrega continua que difiere del SDLC tradicional debido a las siguientes razones:
- Los desarrolladores administran el código en un repositorio compartido.
- Después de la compilación, se realizan pruebas de IU y unidades automatizadas.
- El equipo de operaciones debe encargarse de los scripts automatizados que van más allá al entorno de prueba.
- Se realizan pruebas y después de la aprobación, el software se envía a producción.
Aquí, la integración continua se puede denominar canal de construcción y la entrega continua se puede denominar canal de lanzamiento.
Implementación continua:
La implementación continua se trata de lanzar software a producción automáticamente sin intervención humana.
La implementación continua es un avance y reduce el trabajo manual del equipo de operaciones y pruebas para implementar el software en producción, ya que se implementa automáticamente en producción después de las pruebas de aceptación automatizadas.
Características –
CI/CD ayuda al desarrollo de software rápido y confiable de la siguiente manera.
- Integración de código rápida y automatizada.
- La detección de errores y la respuesta son rápidas debido al ciclo corto y las iteraciones.
- Menos propenso a errores humanos.
- Más rápido que seguir las instrucciones manuales debido a las secuencias de comandos automatizadas.
- La implementación se puede realizar varias veces al día.
Además, CI/CD en DevOps se trata de unificar el proceso y la automatización, ayuda a actuar como un puente entre el equipo de Desarrollo y Operaciones para hacer que el proceso sea más confiable y adaptable.