guia español descargar design-patterns deployment cloud

design patterns - español - ¿Cuál es la diferencia entre el despliegue Rojo/Negro y el Despliegue Azul/Verde?



qgis español (3)

Despliegue azul-verde

Técnica de implementación clásica descrita en el libro Continuous Delivery de Jezz Humble y David Farley:

La idea es tener dos versiones idénticas de su entorno de producción, que llamaremos azul y verde ... Los usuarios del sistema se enrutan al entorno verde, que es la producción designada actualmente. Queremos lanzar una nueva versión de la aplicación. Así que lo implementamos en el entorno azul ... Esto no afecta de ninguna manera el funcionamiento del entorno verde. Podemos realizar pruebas de humo contra el entorno azul para comprobar que funciona correctamente. Cuando estemos listos, pasar a la nueva versión es tan simple como cambiar la configuración del enrutador para que apunte al entorno azul en lugar del entorno verde. El ambiente azul se convierte así en producción. Esta conmutación normalmente se puede realizar en mucho menos de un segundo. Si algo sale mal, simplemente cambiamos el enrutador al entorno verde ".

Humble y Farley continúan mencionando el principal desafío: lidiar con los cambios en el esquema de la base de datos entre las versiones verde y azul.

El principal beneficio de la implementación azul-verde es cero o casi cero tiempo de inactividad cuando se lanza una nueva versión. Y el despliegue azul-verde permite la liberación de canarios .

Despliegue rojo-negro

La versión roja está en vivo en producción. Implementas la versión Black en uno o más servidores. Cuando la versión Black está totalmente operativa, cambia el enrutador para dirigir todo el tráfico hacia ella (o se escala en rojo a 0 instancias y en negro a N). Si algo sale mal, revertirás la operación. Entonces, es similar a la implementación azul-verde, pero hay una ligera diferencia: en la implementación azul-verde, ambas versiones pueden recibir solicitudes al mismo tiempo temporalmente, mientras que en rojo-negro solo una de las versiones recibe tráfico en cualquier momento a tiempo Aquí hay algunas corroboration :

En cualquier momento, solo uno de los entornos está activo, con el entorno activo al servicio de todo el tráfico de producción. Para este ejemplo, el rojo está actualmente activo y el negro está inactivo (en este caso hemos mantenido el negro reducido a cero servidores) ...

Por lo tanto, rojo-negro es una especialización de azul-verde. Pero la implementación rojo-negro es un término más nuevo utilizado por Netflix, Istio y otras plataformas / plataformas que admiten la orquestación de contenedores. El significado real puede variar y algunas personas están usando "rojo-negro" como otro término para "azul-verde", tal vez porque los colores de su equipo son el rojo y el negro. : ^)

Escuché que ambos usaban para describir la idea de implementar una actualización en máquinas nuevas mientras mantenían activas las máquinas antiguas, listas para revertirse si ocurre un problema. También he escuchado que se usa para describir la carga compartida entre servicios actualizados y servicios antiguos, nuevamente con el propósito de una reversión: algunas veces terminan parches antiguos inactivos y algunas veces no.

Mi entendimiento también es que es estrictamente para servicios en la nube.

¿Alguien puede ayudar a desmitificar estos términos?


El mayor desafío para azul / verde o rojo / negro es cuando tiene actualizaciones de DB. ¿Ha habido algún enfoque exitoso que detalle cómo manejar el escenario de actualización de la base de datos? Normalmente hacemos lanzamientos mensuales y tenemos varias docenas de cambios de esquema / cambios de datos. ¿Cómo se manejan con éxito? Es el único enfoque para esto es tener actualizaciones de esquemas compatibles hacia atrás hechas antes.


Tanto el despliegue azul / verde como el rojo / negro representan el mismo concepto.

Si bien el primero es el término más común, este último parece usarse principalmente en Netflix y sus herramientas (como Spinnaker ).

Se aplican solo a servicios en nube, virtualizados o en contenedores, en el sentido de que su infraestructura tiene que ser automatizable para dar sentido a este enfoque.