Despliegue blue-green
Publicar una versión nueva al lado de la vieja y pasar el tráfico de un saque.
Un despliegue blue-green (blue-green deployment) es una forma de sacar software nuevo casi sin cortes. Tenés dos entornos de producción idénticos. Uno, digamos el azul, atiende a los usuarios con la versión actual. Instalás la versión nueva en el otro, el verde, la probás ahí con infraestructura real y, cuando está bien, das vuelta la llave: el balanceador de carga o el DNS empieza a mandar todo el tráfico al verde.
La gran ventaja es la vuelta atrás. Si algo se rompe después del cambio, devolvés el tráfico al azul, que sigue corriendo la versión anterior sin tocar. Volver atrás tarda segundos en vez de un redeploy a las apuradas. Cuando el verde demostró que anda, el azul pasa a ser el lugar donde se prepara la próxima versión.
El precio es tener dos copias de todo durante un rato, y la parte delicada es la base de datos: las dos versiones suelen compartirla, así que los cambios en su estructura tienen que funcionar con el código viejo y con el nuevo a la vez. Un primo cercano es el canary release, que primero pasa a una parte chica de los usuarios en lugar de a todos juntos. Herramientas cloud como AWS CodeDeploy y Kubernetes soportan los dos patrones.
Para quedarse
- Dos entornos idénticos: uno en vivo y otro con la versión nueva.
- El tráfico se pasa todo junto, casi siempre en el balanceador de carga o el DNS.
- Volver atrás es simplemente volver a cambiar.
- Cuesta el doble de capacidad por un rato, y los cambios en la base de datos piden cuidado.
Para seguir leyendo
- BlueGreenDeployment (Martin Fowler, en inglés)
- Despliegues blue/green (whitepaper de AWS, en inglés)