Entrega continua (CD)
La entrega continua automatiza el proceso de lanzamiento de aplicaciones para que las implementaciones sean predecibles y repetibles.
Como su nombre lo indica, la entrega continua (CD) es una práctica de desarrollo de software que se complementa con la integración continua (CI) para automatizar el proceso de lanzamiento de aplicaciones. Los desarrolladores de software lanzan actualizaciones de código en ciclos cortos pero continuos, utilizando la automatización para acelerar el lanzamiento. La CD incluye todos los pasos del ciclo de producción: compilación, prueba, configuración e implementación. El objetivo final es poner el software en manos de los usuarios.
La CD se puede considerar como una extensión de la integración continua, a veces denominada CI/CD, que es la práctica de integrar código en un repositorio compartido y compilar/probar cada cambio lo antes posible, automáticamente y, por lo general, varias veces al día.
Una vez que la integración continua compila y prueba el código en un repositorio compartido, la entrega continua toma el control durante las etapas finales para garantizar que las versiones de software sean de bajo riesgo, consistentes y repetibles.
Entrega continua a menudo se usa indistintamente con implementación continua, pero existe una sutil diferencia entre ambas. Implementación continua significa que todo el código validado por CI se implementa en producción automáticamente, mientras que entrega continua significa que ese código se puede implementar. La flexibilidad para que el código se implemente en cualquier momento es lo que diferencia la entrega de la implementación, y la práctica de la implementación continua solo es posible cuando la entrega continua ya está en marcha.
Los equipos de desarrollo verán muchos otros beneficios cuando entreguen software a través del ciclo de vida de desarrollo del software (SDLC). Estos incluyen:-
-
Automatización del proceso de lanzamiento de software
-
Costos más bajos que con el desarrollo de software tradicional
-
Mejora de la productividad
-
Identificación y solución rápidas de los problemas de errores
-
Tiempo de comercialización más rápido mediante pruebas y desarrollo continuos
Los lanzamientos son de bajo riesgo, es decir, sin complicaciones y aburridos. La CD también elimina los cuellos de botella de las implementaciones para que el pipeline fluya hasta los usuarios finales. Es más fácil de implementar con confianza porque el código se puede implementar y revertir bajo demanda.
La CD a menudo se aplica en conjunto con DevOps y produce software en ciclos cortos. De esta manera, los equipos pueden compilar, probar, configurar y lanzar software con mayor frecuencia. El código se somete a pruebas exhaustivas para garantizar el correcto funcionamiento de todas las funciones y reducir los problemas de rendimiento inesperados en producción. Cualquier componente que pase las pruebas automatizadas es un candidato válido para el lanzamiento. En la etapa final, hay una última verificación humana y, a continuación, se realiza un push a la implementación.
Etapas: compilación, prueba, configuración e implementación
Flujos de trabajo: por lo general, un desarrollador escribe código y verifica el código utilizando un sistema de control de versiones o una herramienta de gestión de configuración. Luego se compila y se empaqueta en un artefacto, que se almacena en un repositorio.
Entornos: esta es la infraestructura de destino para la implementación y puede incluir un clúster de Kubernetes, una instancia de nube pública o un centro de datos privado in situ.
Pipelines: los pipelines típicos se centran en áreas temáticas que incluyen compilaciones, pruebas e implementaciones de staging automatizadas en un proceso continuo.
Desencadenantes: Un desencadenante inicia un evento que activa el proceso de pipeline. Un desencadenante puede ser manual o automatizado en el pipeline de CI/CD. Los ejemplos podrían ser un nuevo artefacto o un tiempo recurrente.
Una de las funcionalidades clave de un pipeline de CD automatizado es la capacidad de realizar pruebas y lanzamientos automatizados. La fase de prueba debe incluir pruebas funcionales y no funcionales. Un pipeline automatizado para los lanzamientos permite un enfoque de «falla rápida», y las pruebas que tienen más probabilidades de fallar primero son las que se ejecutan primero.
Un pipeline automatizado también proporciona visibilidad del código, lo que aumenta la confianza en su viabilidad a medida que avanza a través de las diversas etapas de la CD.
Con un pipeline de entrega de software automatizado, no hay necesidad de tareas manuales que suelen ser propensas a errores y además costosas. Los equipos también pueden detectar el código que no está listo para la entrega y rechazarlo, y luego proporcionar comentarios al instante.
La seguridad no debe sacrificarse en el SDLC. La clave es asegurarse de que los equipos de seguridad y desarrolladores se comuniquen y trabajen juntos para comprender sus diferentes prioridades y objetivos.
Cuando se aplica la mentalidad de entrega continua a las pruebas de seguridad, se optimizará el proceso y se reducirá la carga para los equipos de seguridad. Cada nuevo fragmento de código implementado en modelos de lanzamiento continuo se puede escanear más rápido, lo que hace que las fallas sean más fáciles de encontrar y corregir.
El modelo de línea de ensamblaje para el desarrollo de aplicaciones ya no es viable. Si los equipos de seguridad tienen que esperar a que se termine una aplicación antes de corregir las vulnerabilidades, nunca podrán mantenerse al día con el ritmo y la demanda de innovaciones.
Para utilizar la CD al máximo, los equipos deben estar en comunicación constante y colaborar a lo largo de todo el proceso de DevSecOps. Esto requiere un cambio de pensamiento para que los desarrolladores y los equipos de seguridad aprovechen sus beneficios.
La entrega continua es una práctica de desarrollo de software en la que este se desarrolla de tal manera que el lanzamiento de su producción puede realizarse en cualquier momento. Funciona dentro de DevOps como una viga de asistencia en el puente que cierra la brecha entre los desarrolladores y los equipos de operaciones.
DevOps es una estrategia de desarrollo de software que cierra la brecha entre los equipos de desarrollo y operaciones dentro de una empresa. Una cultura de DevOps rompe la mentalidad aislada y unifica a las personas, los procesos y la tecnología para mejorar la colaboración y la coordinación. El proceso se utiliza para obtener una nueva funcionalidad, mejora o cambio de código en la producción para llegar al cliente lo antes posible.
Sin embargo, el proceso de entrega de software sigue siendo complejo, incluso con equipos de desarrollo, operaciones de TI, ingeniería de calidad y seguridad que trabajan en estrecha colaboración bajo DevOps. DevOps organiza la entrega de software en varias fases:- planificación, desarrollo, entrega, implementación y operación.
Pruebe GitLab
Descubra todo lo que su equipo puede lograr desde una única plataforma para la entrega de software.
Obtener prueba gratuita¿Tiene alguna pregunta? Estamos aquí para ayudar.
Hablar con un experto