¿DevOps? ¿Continuous Delivery? ¿Continuous Deployment? ¿Integración Continua? Aclarando términos
Vamos calentando, que comenzó ya el año. Y para ello, vamos con una de términos, de esas que gustan tanto y lían casi lo mismo o más… En parte un post escrito después de las reacciones de aquel de hace unos días de Agilidad y DevOps… ¿Son lo mismo? y ¿Qué es DevOps?, entonces… ¿DevOps? ¿Continuous Delivery? ¿Continuous Deployment? ¿Integración Continua? vaya lío. Vamos con ellos…
DevOps
Ya hablamos del tema en uno de los últimos post del año pasado, aquel de Agilidad y DevOps… ¿Son lo mismo? y ¿Qué es DevOps? Te recuerdo que DevOps viene de Development + Operations, es decir, aquello de lograr la máxima colaboración e integración entre desarrollo software y operaciones (producción, explotación, o como cada uno tenga a bien llamarlo).
Por ello, una característica fundamental del DevOps es la cultura de colaboración entre desarrollo y operaciones. No existe “muro”, no existen departamentos separados, no existen tiempos muertos entre ambos entornos, implica un único equipo autónomo y no varios «silos».
Continuous Delivery
Tomo como base la definición de Fowler como base, continuous delivery o entrega continua es una disciplina de desarrollo software en la el software se construye de tal manera que puede ser liberado en producción en cualquier momento.
Pero ojo, el continuous delivery no implica necesariamente que se libere cada vez que hay un cambio, solo ocurre si el responsable de negocio, el Product Owner de turno, decide pasar a producción, hay un co ponente «humano» a la hora de tomar la decisión. Pero, en cualquier caso, la versión está lista de inmediato.
Esto implica, entre otros, que se prioriza que la versión esté en un estado en el que puede ser puesta en producción… frente, por ejemplo, añadirle más requisitos. Y normalmente no se pasa sin en visto bueno “manual” de negocio, porque si cada cambio se pusiera en producción de manera automática estaríamos frente a…
Continuous Deployment
Continuous Deployment o despliegue continuo significa que cada cambio pasa por un “pipeline” automatizado y se pone en producción, lo que suele generar sitios donde hay muchos despliegues en producción cada día.
El Continuous Delivery, que veíamos antes, se diferencia del Continuous Deployment en que sólo implica que somos capaces de hacer despliegues frecuentes, pero no implica hacerlo. Esto pasa muchas veces porque hay negocios que requieren un ritmo más lento.
Para tener Continuous Deployment antes debe haber Continuous Delivery y en cualquiera de los casos debe haber una buena integración continua…
Integración Continua
Integración Continua por lo general refiere a la integración, construcción y prueba frecuente, y mayormente automatizada, de código dentro del entorno de desarrollo.
El continuous delivery, y por ello el Continuous Deployment, se basa en una correcta integración continua, siendo, realmente, un paso más allá, llevar la integración contínua a las etapas finales del ciclo de vida.