Blue-Green y Canonical Deployment: Mejorando la Entrega Continua con CI/CD
Imagina que estás construyendo una ciudad con bloques de Lego, y cada vez que haces cambios en la ciudad, necesitas actualizarla sin que los ciudadanos se vean afectados.
- Blue-Green Deployment con Legos:
En el enfoque de Blue-Green Deployment, tienes dos áreas separadas de la ciudad: una es la "Zona Azul" y la otra es la "Zona Verde". Actualmente, todos los ciudadanos viven en la Zona Azul, que es la versión de la ciudad que ya está en producción.
Cuando tienes una nueva versión de la ciudad que deseas implementar, comienzas a construir esa nueva versión en la Zona Verde, que está completamente separada de la Zona Azul. En la Zona Verde, puedes hacer todas las pruebas y ajustes necesarios para asegurarte de que todo funcione correctamente.
Una vez que estás satisfecho con la nueva versión en la Zona Verde, cambias rápidamente la señal de tráfico, dirigiendo a los ciudadanos hacia la Zona Verde. Ahora, la nueva versión se convierte en la versión principal en producción, mientras que la Zona Azul queda desocupada temporalmente.
La ventaja de este enfoque es que no hay tiempo de inactividad para los ciudadanos durante el cambio. Además, si surge algún problema inesperado en la Zona Verde, siempre puedes cambiar rápidamente la señal de tráfico de regreso a la Zona Azul, deshaciendo el despliegue y manteniendo la ciudad funcionando sin interrupciones.
- Canonical Deployment con Legos:
Ahora, imagina que en lugar de tener dos áreas separadas de la ciudad, tienes dos edificios idénticos, uno al lado del otro. Cada edificio representa una versión diferente de la ciudad.
En este caso, todos los ciudadanos todavía están viviendo en el primer edificio (Versión A), que es la versión canónica actual de la ciudad en producción. Pero, también estás construyendo la nueva versión (Versión B) en el segundo edificio, que representa la versión no canónica.
En lugar de cambiar repentinamente todo el tráfico hacia el segundo edificio, diriges solo un pequeño grupo de ciudadanos (quizás algunos voluntarios) hacia el segundo edificio para probar la nueva versión. Esto te permite comparar el rendimiento y la reacción de los ciudadanos entre ambas versiones en tiempo real.
Si la nueva versión (Versión B) es estable y funciona bien, gradualmente puedes aumentar el número de ciudadanos que se mudan al segundo edificio. Esto permite una transición suave y progresiva de la versión anterior a la nueva versión.
Sin embargo, si en algún momento surge un problema en el segundo edificio (Versión B), siempre puedes redirigir rápidamente a todos los ciudadanos hacia el primer edificio (Versión A) para mantener la estabilidad de la ciudad.
En resumen, Blue-Green Deployment tiene dos zonas completamente separadas y cambia todo el tráfico de una vez, mientras que Canonical Deployment utiliza dos versiones en funcionamiento simultáneamente y permite una transición gradual entre ellas.
Ambos enfoques son valiosos en diferentes situaciones, y elegir uno u otro dependerá de los objetivos y requisitos específicos de tu proyecto.