¿Que es la estrategia de despliegue Blue-Green?

Estrategia de Despliegue Blue-Green: Que es y cuales son sus ventajas

2024-05-16

 

Una estrategia de despliegue como "blue-green" es una técnica utilizada en el desarrollo y la implementación de software para actualizar aplicaciones de forma segura y sin interrupciones para los usuarios. 

Consiste en tener dos entornos idénticos de producción, uno llamado "blue" (azul) y otro llamado "green" (verde).

En el entorno "blue" es el entorno de producción actual que maneja el tráfico en vivo. Es la versión estable y en uso de la aplicación. Cuando se decide realizar una nueva implementación, la versión existente se considera "Azul".

El entorno "green", es el nuevo entorno que contiene la versión actualizada o la nueva funcionalidad que se va a implementar. Este entorno es independiente del entorno "Azul" y no recibe tráfico de producción. Esta nueva version se somete a pruebas y validaciones antes de dirigir el tráfico de producción hacia ella. Esto asegura que la nueva versión funcione correctamente y cumpla con los requisitos antes de que los usuarios finales la experimenten.

Una vez ha sido probado el entorno “green”, esto permite realizar el cambio de versión de manera casi instantánea y con un riesgo mínimo, ya que en caso de que surjan problemas con la nueva versión, es posible revertir rápidamente al entorno "blue".

Durante la implementación, el tráfico de producción se redirige desde el entorno "Azul" al entorno "Verde" de manera instantánea o gradual. Esto se hace de manera que no haya interrupciones en el servicio para los usuarios finales.

La estrategia Blue-Green proporciona flexibilidad para revertir rápidamente a la versión anterior en caso de problemas inesperados. Si algo sale mal en el entorno "Verde", el tráfico se puede redirigir fácilmente al entorno "Azul" sin interrupciones significativas.

Esta estrategia es especialmente útil para minimizar el riesgo durante las implementaciones y garantizar una alta disponibilidad. Además, facilita las pruebas y la validación de nuevas versiones antes de exponerlas a la totalidad de los usuarios finales. La implementación Blue-Green se beneficia de la automatización y las prácticas de CI/CD para lograr implementaciones suaves y confiables.

 

Estrategia Blue-Green en K8

A continuacion se describen los pasos de como puede funcionar un proceso de blue green en K8
 

1) Preparación de la nueva versión (Green):

Prepara la nueva versión de tu aplicación, ya sea una actualización de código, una nueva imagen de contenedor, o cualquier cambio que desees implementar.

2) Despliegue de la versión Green (Gradual):

Comienza desplegando la nueva versión de la aplicación (green) en paralelo con la versión existente en producción (blue), pero inicialmente con una cantidad mínima de recursos asignados.

Ajusta gradualmente la cantidad de recursos asignados a la versión green para aumentar su capacidad y su participación en el tráfico de producción.

3) Balanceo de la carga de tráfico:

Configura un balanceador de carga o un controlador de tráfico (como Istio) para distribuir gradualmente una parte del tráfico de producción hacia la nueva versión (green) mientras se reduce progresivamente el tráfico dirigido a la versión actual (blue).

Este balanceo gradual puede ser controlado mediante reglas de enrutamiento y políticas de tráfico.

4) Monitoreo continuo:

Durante el proceso de despliegue gradual, monitorea cuidadosamente el rendimiento, la estabilidad y la disponibilidad de la nueva versión (green) para asegurarte de que esté funcionando correctamente.

Utiliza métricas y registros para identificar cualquier problema o degradación en el rendimiento que pueda surgir durante el proceso de transición.

5) Reajuste y retroceso:
Si se detectan problemas con la nueva versión (green), ajusta la distribución del tráfico para reducir su participación y aumentar nuevamente el tráfico dirigido a la versión anterior (blue).

Si los problemas persisten o son graves, considera un retroceso completo a la versión anterior hasta que los problemas se resuelvan.

6) Finalización del despliegue:

Una vez que la nueva versión (green) ha sido completamente desplegada y ha demostrado ser estable y confiable en producción, puedes retirar gradualmente la versión anterior (blue) y cualquier infraestructura asociada con ella.

 

Beneficios de la Estrategia Blue-Green

Minimización del Tiempo de Inactividad: Al tener dos entornos paralelos, el cambio entre versiones puede ser casi instantáneo, asegurando una disponibilidad continua para los usuarios.

Reducción de Riesgos: La capacidad de revertir rápidamente a la versión anterior en caso de problemas significa que los riesgos asociados con nuevas implementaciones son significativamente menores.

Pruebas en un Entorno Realista: El entorno "Green" puede someterse a pruebas exhaustivas utilizando datos reales, lo que garantiza que la nueva versión esté completamente preparada para el tráfico de producción.

Mejora en la Calidad del Software: Al realizar pruebas y validaciones exhaustivas antes de redirigir el tráfico, se asegura una mayor estabilidad y calidad en las versiones de producción.

Flexibilidad para Actualizaciones: Permite realizar actualizaciones frecuentes y sin interrupciones, lo que es crucial en entornos ágiles y DevOps.

Ejemplos de Uso en la Industria

E-commerce: Plataformas de comercio electrónico que necesitan mantener un tiempo de actividad continuo y desean implementar nuevas funcionalidades sin interrumpir las transacciones de los clientes.

Bancos y Finanzas: Instituciones financieras que requieren alta disponibilidad y seguridad en sus aplicaciones críticas, permitiendo actualizaciones seguras y reversibles.

SaaS (Software as a Service): Empresas que ofrecen servicios basados en la nube y necesitan implementar actualizaciones frecuentes y sin interrupciones para sus usuarios globales.
 

Consideraciones Adicionales

  • Costos Adicionales: Mantener dos entornos paralelos puede incrementar los costos de infraestructura. Es importante evaluar el retorno de inversión (ROI) y los beneficios en comparación con los costos adicionales.
  • Complejidad en la Gestión: La estrategia Blue-Green puede añadir complejidad a la gestión de la infraestructura y a los procesos de CI/CD. Es crucial contar con un equipo capacitado y herramientas adecuadas para gestionar esta complejidad.
  • Automatización: Para maximizar los beneficios de esta estrategia, es recomendable automatizar tanto el despliegue como las pruebas y el monitoreo. Herramientas como Jenkins, GitLab CI/CD, y Kubernetes pueden ser útiles.
  • Monitoreo y Alerta: Implementar soluciones de monitoreo y alerta es esencial para detectar y reaccionar rápidamente a cualquier problema que pueda surgir durante la transición del tráfico entre los entornos.
  • Escenarios de Rollback: Definir procedimientos claros para el rollback es vital para asegurar que, en caso de problemas, se pueda revertir al entorno anterior de manera rápida y sin complicaciones.

Recursos y Herramientas

  • Kubernetes: Plataforma de orquestación de contenedores que facilita la implementación de estrategias Blue-Green mediante la gestión de despliegues y servicios.
  • Istio: Malla de servicios que permite un control granular sobre el tráfico de red, facilitando el balanceo y la gestión de versiones durante un despliegue Blue-Green.
  • AWS Elastic Beanstalk: Servicio que soporta despliegues Blue-Green, simplificando la gestión de entornos y el cambio entre versiones.
  • Spinnaker: Plataforma de entrega continua que soporta despliegues Blue-Green y otras estrategias avanzadas, proporcionando visibilidad y control sobre el proceso de despliegue.

 

Últimas publicaciones

Lo que Todo Desarrollador Debe Saber sobre Algoritmos

12/11/2024

Ver articulo

Patrones de Software de Optimización y Eficiencia

10/10/2024

Ver articulo

Red Flags en tu trabajo y como saber cuando debes irte

02/09/2024

Ver articulo
Whatsapp Mentores Tech