Integración, entrega y despliegue continuo. Diferencias y similitudes
Tengo en mente escribir una serie de entradas en mi blog sobre Azure DevOps.
Pero antes de ponerme con ello y entrar en materia, creo que conviene explicar algunos conceptos previos.
Es posible que ya los conozcas, pero creo que son importantes refrescarlos y tenerlos en mente.
Los conceptos sobre los que quiero hablar tienen que ver con lo que se denomina integración continua, entrega continua y despliegue continuo.
Dentro de las prácticas de desarrollo de Software actuales, nos encontraremos en muchas ocasiones hablar y citar CI/CD.
CI equivale a integración continua o continuous integration.
CD por su parte, puede equivaler a entrega continua (continuous delivery) o despliegue continuo (continuous deployment).
Sin embargo, conviene apuntar que aunque continuous delivery y continuous deployment tengan cosas en común, son diferentes tal y como veremos a continuación.
CI (continuous integration) o integración continua tiene como objetivo principal preparar y servir cuanto antes una release del Software de forma rápida, sencilla y ágil.
Los desarrollares mezclan los cambios de código en la rama o branch principal tantas veces como puedan.
Los cambios son validados generando una build para permitir ejecutar después los tests contra esa build.
De hecho, uno de los pilares fundamentales de la integración continua tiene una estrecha vinculación con la automatización de tests, asegurando que la aplicación no está rota.
Es lo que seguramente hayas oído comentar muchas veces como «se ha roto la build», un argot bastante frecuente en desarrollo de Software e integración continua.
Por todo esto, los tests requieren una importancia relevante para que el código que escribimos sea confiable y que la integración continua sea un elemento importante dentro de la calidad de la funcionalidad del código escrito.
Obviamente, necesitaremos un servidor que realice todo este proceso de forma automatizada cada vez que un desarrollador haga un commit de sus cambios de código.
Esto nos ahorrará mucho tiempo, aunque como es lógico también, un servicio de estas características tendrá un coste asociado.
CD (continuous delivery) o entrega continua es el siguiente paso de la integración continua.
De hecho, en muchos círculos se la conoce como una extensión de la integración continua.
Su objetivo no es otro que el de proporcionar una manera ágil y fiable de poder entregar o desplegar los nuevos cambios a los clientes.
Esto se consigue automatizando el proceso de despliegue, aunque esto ocurrirá al hacer clic sobre la acción de despliegue.
Podremos indicar también cuando llevar a cabo el proceso de despliegue en producción.
En algunas empresas que he conocido, el despliegue se realiza con dos ó tres despliegues por día.
En otras es semanalmente o quincenalmente, y en otras incluso mensualmente.
Todo depende de los propósitos de negocio de la empresa, complejidades, criticidades, etc.
No obstante, el mantra de entrega continua invita a que el despliegue en producción sea lo más rápido posible en el tiempo.
CD (continuous deployment) o despliegue continuo tiene mucha relación con la entrega continua, sin embargo va más allá.
El objetivo a diferencia de la entrega continua es que no exista intervención humana a la hora de realizar el despliegue de nuestro Software en producción.
Esta es quizás la clave y diferencia más importante con respecto a la entrega continua.
Para lograr este propósito, el pipeline de producción tiene una serie de pasos que deben ejecutarse en orden y forma satisfactoria.
Si alguno de esos pasos no finalizan de forma esperada, el proceso de despliegue no se llevará a cabo.
Hay empresas de primer orden en el mercado que sigue esta filosofía.
El resumen de CI + Continuous Delivery se puede ver en la siguiente imagen:
El resumen de CI + Continuos Deployment se puede ver en la siguiente imagen:
¿Y que nos ofrece Azure DevOps?.
Azure DevOps nos ofrece un entorno de CI/CD para realizar integración continua y entrega continua o despliegue continuo de forma eficiente y sencilla.
Lo mejor de todo, es que tiene un coste cero para proyectos de código abierto.
Evidentemente hay muchos productos en el mercado para ayudarnos en todo el proceso de integración, entrega y despliegue continuo.
Azure DevOps es uno de ellos, pero podemos encontrar otros productos con la misma filosofía como TeamCity de JetBrains, Bamboo de Atlassian, Jenkins o Hudson.
A partir de aquí, voy a escribir algunas entradas sobre Azure DevOps que espero te sean aprovechables.
Happy Coding!
One Responseso far
Muy buen articulo Jorge, sigue adelante
Johnny