Diferencia entre Continuous Integration, Delivery y Deployment

Quería dejar acá unos apuntes sobre lo que entiendo marca alguna diferencia entre Continuous Integration, Delivery y Deployment, escrito en lenguaje bien simple para que se entienda.

Continuous Integration

Significa que el código de TODOS se mergea frecuentemente (al menos una vez por día). De esta forma se mantiene un repositorio de código estable desde donde cualquiera puede comenzar a trabajar en algún cambio. Se tiene automatizado el build, y distintos chequeos automáticos, como revisión de calidad de código, ejecución de pruebas unitarias, etc. En lo que se basa esto es que si dos desarrolladores parten del mismo código base, están un mes trabajando por separado, seguramente cuando quieran unir sus cambios se van a divertir bastante.

Continuous Delivery

Lo principal es liberar al cliente lo más seguido posible. Lo que se estila hacer es integración continua, se arma frecuentemente una versión ejecutable del sistema con lo último del código integrado, y si esta versión pasa los chequeos automatizados, se termina realizando una instalación en un ambiente de desarrollo o pruebas. El sitio de Jez Humble está muy bueno https://continuousdelivery.com/

Continuous Deployment

Acá se va un paso más allá, y si el código nuevo pasa todas las pruebas automatizadas en el ambiente de test, entonces se termina pasando directamente a producción. Esto es lo que hace Facebook y Google. Tienen muy aceitado el proceso de deploy, lo van liberando gradualmente, y si algún usuario tiene algún problema, entonces se hace rollback y el feedback llega al desarrollador para que corrija el problema.

 

Si duele, hay que hacerlo más seguido. Nos vamos a acostumbrar al dolor, o vamos a hacer algo para que deje de doler.

 

2 thoughts on “Diferencia entre Continuous Integration, Delivery y Deployment

Leave a Reply

Your email address will not be published. Required fields are marked *