Despliegues blue‑green deployment

El patrón de despliegue blue-green es una técnica cada vez más presente en pipelines de entrega continua (CI/CD), que busca desplegar nuevas versiones de software con mínimo impacto para el usuario y máxima capacidad de rollback. 

¿Qué es el despliegue blue-green?

La idea es sencilla pero poderosa, tener dos entornos prácticamente idénticos en producción —normalmente llamados blue (actual versión) y green (versión nueva)– y conmutar el tráfico de uno a otro cuando la nueva versión esté validada. 

El flujo típico es:

  1. El entorno blue está activo y recibe todo el tráfico.
  2. Se despliega la nueva versión en el entorno green.
  3. Se realizan pruebas, validaciones e incluso un pequeño porcentaje de tráfico real (o ninguna exposición) en green.
  4. Si todo va bien, el router / balanceador de carga cambia el tráfico a green. Ahora green es el entorno productivo.
  5. Blue queda como entorno de respaldo hasta el próximo ciclo.

Este patrón permite cambios de versión con tiempo de inactividad mínimo o nulo y con la capacidad de revertir al entorno anterior de forma rápida si surgen problemas.  

Beneficios clave de blue-green deployment

Entre las ventajas más relevantes del patrón blue-green destacan:

  • Cero o casi-cero downtime: Como el entorno de producción está ya habilitado y la conmutación es rápida, los usuarios no perciben interrupciones. 
  • Rollback inmediato: Si la versión nueva falla, basta con redirigir el tráfico de nuevo al entorno anterior (blue) para recuperar la versión estable. 
  • Pruebas en entorno casi real: Como la versión green se despliega en un entorno de producción “paralelo”, la validación se acerca bastante al entorno real, reduciendo sorpresas en producción. 
  • Menor riesgo en la entrega: Ideal para entornos que requieren alta disponibilidad, para evitar ventanas de mantenimiento visibles al usuario.

Desafíos técnicos y consideraciones éticas de blue-green deployment

El patrón tiene muchos beneficios, pero también advertencias importantes que debes considerar desde una perspectiva técnica y de diseño responsable:

  • Infraestructura duplicada: Mantener dos entornos idénticos implica mayor coste en infraestructura, recursos y operaciones. Para pequeñas organizaciones esto puede ser una barrera. 
  • Migraciones de base de datos / estado compartido: Si la nueva versión introduce cambios en el esquema de la base de datos, sincronización de datos o estado compartido, el despliegue puede complicarse. No siempre el entorno “verde” tiene exactamente la misma copia de datos o el mismo estado que el entorno activo. 
  • Impacto a todos los usuarios de golpe: El patrón blue-green tiende a “cortar” el tráfico de un entorno al otro de forma total. Si algo falla, el impacto es grande y afecta a todos los usuarios, a diferencia de otros patrones de despliegue más graduales. 
  • Equidad y accesibilidad: Desde un enfoque ético, es importante asegurar que el despliegue no degrade la experiencia para ciertos usuarios (por ejemplo, aquellos con conexiones lentas, dispositivos antiguos o con menor capacidad). Si la versión nueva tiene más requisitos de recursos, podría generar brechas en la experiencia de usuario.
  • Transparencia en la entrega: Aunque el usuario no perciba interrupciones, es importante comunicar de forma adecuada los cambios relevantes de la versión nueva para que los usuarios comprendan que se está produciendo una mejora y no simplemente “una actualización escondida”.

Buenas prácticas para implementar blue-green

Para desarrolladores y equipos DevOps, estas recomendaciones pueden ayudar a aprovechar el patrón con menor riesgo:

  • Automatizar el pipeline de despliegue: Garantizar que los entornos blue y green puedan crearse, desplegarse, validarse y revertirse mediante scripts/pipelines.
  • Pruebas funcionales y de aceptación en el entorno green antes de conmutar el tráfico.
  • Monitoreo intenso justo después del cambio: latencia, errores, tráfico, comportamiento inusual.
  • Plan de rollback claro: tener preparado en qué momento revertir tráfico a blue si algo falla.
  • Gestión del estado y base de datos: Asegurar compatibilidad entre versiones o usar técnicas como versionado de esquema, compatibilidad hacia atrás, etc.
  • Uso de feature flags complementario: Aunque el entorno green esté activo, algunas funcionalidades pueden activarse gradualmente o mediante flags para reducir riesgo. 
  • Cost-control: En entornos de nube, aprovechar escalado dinámico, entornos temporales o uso de infraestructura de contenedores podría minimizar costes.

Conclusión

El despliegue blue-green es una herramienta poderosa dentro del arsenal de entrega continua, permite desplegar nuevas versiones con rapidez, alta disponibilidad, mínimo downtime, y se dispone de infraestructura suficiente para mantener dos entornos paralelos.

Sin embargo, puede no ser la mejor opción si el sistema tiene muchos servicios interdependientes/microservicios que comparten base de datos complejas. O que el coste de duplicar la infraestructura sea prohibitivo. En esos casos, se prefiere una estrategia de despliegue más gradual, como canary o feature-flags para minimizar el impacto. 

Referencias: