deployment - rojos - océano azul, océano rojo(imprescindibles)
Estrategia de lanzamiento canario contra azul/verde. (4)
Mi comprensión de un lanzamiento canario es que es un lanzamiento parcial a un subconjunto de nodos de producción con sesiones fijas activadas. De esa manera, puedes controlar y minimizar la cantidad de usuarios / clientes que se verán afectados si terminas liberando un error.
Mi comprensión de una versión azul / verde es que tiene 2 entornos de producción duplicados ("azul" y "verde"), y envía los cambios a todos los nodos de azul o verde a la vez, y luego utiliza la magia de red para controlar A qué entorno se enrutan los usuarios a través de DNS.
Entonces, antes de comenzar, si algo de lo que he dicho hasta ahora es incorrecto, ¡por favor comience a corregirme!
Suponiendo que estoy más o menos encaminado, luego un par de preguntas sobre las dos estrategias:
- ¿Existen escenarios en los que se prefiera canario sobre azul / verde y viceversa?
- ¿Existen escenarios en los que un modelo de implementación pueda implementar ambas estrategias al mismo tiempo?
Aunque ambos términos se ven muy cerca, tienen diferencias sutiles. Uno confía en su lanzamiento de funcionalidad y el otro confía en la forma en que lo hace.
Canario
El lanzamiento de Canary es una técnica para reducir el riesgo de introducir una nueva versión de software en producción al implementar lentamente el cambio en un pequeño subconjunto de usuarios antes de implementarlo en toda la infraestructura.
Está a punto de hacerse una idea de cómo funcionará la nueva versión (se integra con otras aplicaciones, CPU, memoria, uso de disco, etc.).
Azul verde:
- Es más acerca de la versión predecible con cero implementación de tiempo de inactividad.
- Rollbacks sencillos en caso de fallo.
- Proceso de despliegue completamente automatizado
He escrito un ensayo detallado sobre este tema aquí: http://blog.itaysk.com/2017/11/20/deployment-strategies-defined
En mi opinión, la diferencia es si la nueva versión "verde" está o no expuesta a usuarios reales. Si lo es, entonces lo llamaría canario. Una forma común de implementar Canary es el azul / verde regular con la adición de enrutamiento inteligente de usuarios específicos a la nueva versión. Lee el post para una comparación detallada
La liberación azul-verde es más simple y más rápida.
Puede hacer una versión azul-verde si ha probado la nueva versión en un entorno de prueba y está muy seguro de que la nueva versión funcionará correctamente en producción. Usar siempre los alternadores de características es una buena manera de aumentar su confianza en una nueva versión, ya que la nueva versión funciona exactamente igual que la anterior hasta que alguien activa un conmutador de características. Otra opción es dividir su aplicación en pequeños servicios independientes que se pueden liberar de forma independiente, ya que hay menos pruebas que se pueden analizar y menos.
Debe hacer un lanzamiento canario si no está completamente seguro de que la nueva versión funcionará correctamente en la producción. Incluso si eres un probador completo, Internet es un lugar grande y complejo y siempre está presentando desafíos inesperados. Incluso si usa los alternadores de funciones, uno podría implementarse incorrectamente.
La automatización de la implementación requiere esfuerzo, por lo que la mayoría de las organizaciones planean usar una u otra estrategia cada vez.
Lo mismo ocurre con la implementación azul-verde si está comprometido con las prácticas que le permiten tener confianza para hacerlo. De lo contrario, enviar el canario.
La esencia de blue-green se implementa de una sola vez y la esencia de canary se implementa de forma incremental, por lo que, dado un solo grupo de usuarios, no puedo pensar en un proceso que describiría como ambos al mismo tiempo. Si tenía varios grupos de usuarios independientes, por ejemplo, utilizando diferentes centros de datos regionales, podría hacer azul-verde dentro de cada centro de datos y canario entre centros de datos. Aunque si no necesitara un despliegue canario dentro de un centro de datos, probablemente no lo necesitaría en todos los centros de datos.
Los lanzamientos azul / verde y canario resuelven el mismo propósito de probar el software contra un público objetivo, antes de lanzar las funciones del software a un público más amplio. En el caso de Canary, las implementaciones pueden compartir la misma infraestructura por debajo, pero en el caso de azul / verde, toda la infraestructura se duplica con el enrutador / DNS / reverseproxy en la parte frontal para enrutar el tráfico.
En el entorno de nube donde es más fácil crear y recrear infraestructura, se prefiere la implementación azul / verde ya que permite que la infraestructura esté sincronizada con la automatización. Esta es una gran capacidad para tener cuando se desea recrear entornos.
Puede consultar los siguientes artículos para una comparación más detallada:
Implementación de BlueGreen: http://martinfowler.com/bliki/BlueGreenDeployment.html
Implementación de Canary: http://martinfowler.com/bliki/CanaryRelease.html