Hay muchísimas estrategias de implementación para elegir hoy en día y, a medida que pase el tiempo, habrá más. Dicho esto, dos de las estrategias de implementación más comunes utilizadas activamente por algunas de las empresas más grandes en la actualidad son las estrategias de implementación Canary y Blue-green.
Al comparar la implementación Blue-Green con la de Canary, no se trata solo de velocidad o simplicidad; Uno de los factores más importantes a considerar al elegir una de estas estrategias es el tiempo de inactividad de la implementación.
Para minimizar el tiempo de inactividad de la implementación y proporcionar una transición fluida al implementar sus actualizaciones o modificaciones, es primordial elegir la opción más adecuada entre la implementación Canary versus Blue-Green.
Entonces, veamos lo que ofrece cada estrategia, incluida una comparación directa entre la implementación Blue-Green y Canary y nuestra propia experiencia con la implementación Canary versus la implementación Blue-Green.
¿Qué es la implementación azul-verde y qué ofrece?
En la estrategia de implementación Azul-Verde, la nueva versión de una aplicación se puede implementar inmediatamente una vez que haya sido probada y validada. Esto se debe a los dos entornos idénticos: el entorno azul y el verde, de ahí el nombre de implementación Azul-Verde.
Esto funciona porque uno de estos entornos está activo y el otro está inactivo. Esto significa que la nueva versión de una aplicación se puede implementar en el entorno inactivo (digamos el verde). Dado que estos dos entornos son completamente idénticos en términos de recursos, infraestructura y configuraciones, cualquier problema en la actualización se puede solucionar antes de que se implemente por completo.
Una vez que se ha probado la actualización y los desarrolladores están satisfechos de que funciona, el tráfico en vivo se cambia a este entorno inactivo. Esto convierte el entorno inactivo (el verde) en entorno activo y el entorno previamente activo (el azul) en inactivo.
Ahora, el entorno azul inactivo pasa a estar en espera y se puede utilizar para probar actualizaciones más recientes mientras el entorno verde está activo y ejecuta la actualización recién implementada. De esta manera, prácticamente no hay tiempo de inactividad ya que el tráfico cambia instantáneamente al entorno inactivo.
Además, si la actualización tiene algún problema, una función de reversión le permite volver a la versión anterior de su aplicación. Dicho esto, si surgen problemas cuando los desarrolladores han comenzado a trabajar en una nueva actualización en el entorno inactivo, volver a este entorno ya no es viable, ya que la versión anterior tampoco está disponible en este entorno.
Si bien muchas empresas y organizaciones utilizan esta estrategia, un ejemplo de esta estrategia en acción se puede ver en Spotify. Dado que los servicios de Spotify deben estar disponibles las 24 horas del día, los 7 días de la semana, siempre tiene listo el entorno inactivo de respaldo cuando se lanzan nuevas actualizaciones.
¿Qué es Canary Deployment y qué ofrece?
La principal diferencia entre la implementación de Canary y Blue-Green es que, en lugar de tener dos entornos donde las actualizaciones se implementan todas a la vez para todos los usuarios, en la estrategia de implementación de Canary, las actualizaciones se lanzan primero a un pequeño lote de usuarios.
Si la actualización tiene algún problema, solo una pequeña parte de los usuarios la encuentran y brindan comentarios. Una vez que se han resuelto los problemas, la actualización se lanza a una mayor parte de usuarios, donde dejan comentarios a los desarrolladores si experimentan algún problema.
Este ciclo se repite con porciones cada vez mayores de usuarios y todos los problemas con la actualización se resuelven hasta que la actualización se lanza al 100% de los usuarios. Por ejemplo, al principio, la actualización solo se lanzaría al 2%, luego al 25%, luego al 75% y finalmente al 100% de los usuarios.
Este lanzamiento gradual en la implementación Canary frente a Blue-Green ofrece una implementación más controlada y flexible, lo que permite a los desarrolladores probar funciones y actualizaciones en un entorno controlado donde solo una pequeña parte experimenta problemas potenciales.
Por último, Canary también ofrece una función de reversión similar; sin embargo, dado que la implementación se realiza de forma gradual y por etapas, la reversión realizada en Canary también se realiza de forma gradual y por etapas hasta alcanzar una versión estable.
Un ejemplo bien conocido de esta estrategia de implementación es el uso de Canary por parte de Netflix junto con una herramienta llamada Chaos Monkey, que introduce intencionalmente fallas en su sistema. Si una falla afecta el entorno canario, el equipo de Netflix puede analizar cómo responde el sistema y ajustarlo en consecuencia. De esta manera, Netflix puede verificar que la actualización se mantiene estable y resistente incluso en condiciones adversas.
Despliegue Azul-Verde vs. Canario
Ambas estrategias de implementación ofrecen sus propios beneficios únicos; sin embargo, también tienen sus limitaciones. Por eso es importante sopesar los pros y los contras del desarrollo Azul-Verde versus Canario antes de tomar una decisión.
Si aún no estás seguro de cuál elegir después de esta sección, también incluí nuestra experiencia con estas dos estrategias y lo que aprendimos al final de este artículo.
Reducir el tiempo de inactividad
Una de las principales preocupaciones y el foco de este artículo es la reducción del tiempo de inactividad de la implementación Blue-Green frente a Canary. Uno de los puntos fuertes de la implementación Blue-Green es su velocidad, ya que puede implementar la actualización o función de su aplicación instantáneamente mediante el uso de sus dos entornos.
Por otro lado, el enfoque de implementación gradual de Canary permite tiempos de inactividad mínimos, ya que no solo un pequeño subconjunto de usuarios experimenta los problemas, sino que, dado que se proporciona retroalimentación en cada etapa, la solución de problemas se puede realizar mucho más rápido y sin tiempo de inactividad.
Además, si bien ambos servicios ofrecen funciones de reversión, la función de reversión de la implementación Blue-Green es instantánea, lo que brinda a los desarrolladores una copia de seguridad confiable en caso de cualquier problema importante. Dicho esto, como mencioné anteriormente, una versión de respaldo no estará disponible si se trabaja en una versión más nueva en el entorno inactivo.
La función de reversión de Canary solo se puede utilizar gradualmente, al igual que su proceso de implementación. Sin embargo, siempre está disponible ya que la versión anterior y estable no depende del entorno en el que se prueban y trabajan las actualizaciones más recientes.
En términos de reducción del tiempo de inactividad de la implementación, al comparar la implementación de Canary con la de Blue-Green, Canary es superior en términos de control de riesgos y control granular; sin embargo, si simplemente estamos considerando reducir el tiempo de inactividad, entonces Azul-Verde es el mejor de los dos ya que el cambio es instantáneo.
Dicho esto, al debatir la implementación Blue-Green versus la implementación Canary, también es importante considerar otros factores además de la reducción del tiempo de inactividad.
Tipo de aplicación
Generalmente, podemos dividir las aplicaciones en aplicaciones con muchas transacciones o basadas en contenido. En aplicaciones con muchas transacciones, la implementación de Blue-Green es una opción mucho mejor, ya que una alta disponibilidad del servicio y un tiempo de inactividad mínimo son una prioridad, razón por la cual las funciones de cambio instantáneo y reversión instantánea de Blue-Green lo colocan por delante de Canary.
Por otro lado, las aplicaciones basadas en contenido no dependen de transacciones en tiempo real. Dado que estas aplicaciones se utilizan normalmente para plataformas de redes sociales y servicios de participación de usuarios, Canary es una estrategia mucho mejor, ya que puede implementar actualizaciones gradualmente y recibir comentarios constantemente en cada etapa.
Costos de infraestructura
Otra preocupación importante a la hora de elegir entre la implementación Blue-Green o la implementación Canary son los costos. Naturalmente, en la implementación Azul-Verde, los costos serán mayores ya que es necesario mantener dos entornos individuales.
Es por eso que el entorno de producción único de Canary es una opción mucho más económica, lo que la convierte en una opción más adecuada para equipos más pequeños o aplicaciones que requieren menos recursos.
Escalabilidad y mantenimiento a largo plazo
Por último, si bien las implementaciones azul-verde se pueden escalar, mantener dos entornos completos para aplicaciones a gran escala puede requerir muchos recursos y ser complejo. Con el tiempo, administrar y mantener entornos duplicados puede agregar una sobrecarga significativa, especialmente para aplicaciones con necesidades de infraestructura complejas.
Esto hace que la implementación de Canary versus Blue-Green en términos de escalabilidad y mantenimiento sea bastante fácil de decidir. Con la implementación de Canary, la escalabilidad suele ser más sencilla y rentable, ya que no requiere entornos duplicados.
En cambio, se centra en escalar dentro del entorno primario ampliando gradualmente la base de usuarios expuestos a nuevos cambios. Esta configuración es mucho más manejable a largo plazo, ya que reduce la complejidad de la infraestructura y simplifica el mantenimiento.
La experiencia de Cloudzy con la implementación azul-verde vs. Implementación canaria
Al brindar servicios DevOps a los clientes, entendemos que la satisfacción del cliente, la alta disponibilidad y el tiempo de inactividad mínimo son fundamentales para el éxito empresarial. En un caso particular, un cliente se acercó a nosotros para pedir ayuda con una actualización importante de la infraestructura. Al equipo se le asignó la tarea de decidir entre una implementación Azul-Verde y una implementación Canary para su sistema.
Después de considerarlo mucho, primero decidimos probar la implementación Blue-Green, ya que prácticamente no ofrecía tiempo de inactividad. Creamos un entorno ecológico idéntico y nos preparamos para implementar la actualización. Hubo mucha presión ya que, con solo presionar un botón, todo el tráfico cambiaría al entorno ecológico y, como saben los desarrolladores, no importa cuánto pruebes estas cosas, todavía es una especie de tirada de dados determinar cómo resultará.
Afortunadamente todo salió bien. La transición fue tan suave como la mantequilla y apenas tuvimos problemas. Con el tiempo, a medida que los servicios y usuarios de nuestros clientes crecieron, necesitábamos implementar nuevas funciones y el debate entre Azul-Verde y Canario volvió a estallar.
Sin embargo, esta vez no hubo mucho debate. Estas eran características relativamente más pequeñas y ciertamente no de la escala de esa actualización de infraestructura. Entonces, naturalmente, optamos por Canary, ya que podíamos implementar funciones en pequeñas partes de la base de usuarios de nuestros clientes y resolver cualquier problema que tuvieran a través de los comentarios de los usuarios.
Definitivamente fue la decisión correcta ya que, si bien no tuvimos ningún problema importante, comenzaron a surgir algunos problemas más pequeños, que fueron informados por el 5% de la base de usuarios de nuestros clientes a quienes se les había implementado la función.
En Cloudzy creemos en el poder de las soluciones personalizadas. Ya sea que su empresa necesite la confiabilidad de la implementación Blue-Green o la flexibilidad de la implementación Canary, nuestro equipo de DevOps tiene la experiencia y el conocimiento para implementar la mejor estrategia para su infraestructura. Contáctenos aquí hoy para aprender cómo podemos optimizar su proceso de implementación y mantener sus operaciones funcionando sin problemas.
Hablando de VPS, ofrecemos algunas de las tarifas más bajas en la industria de VPS con características que incluyen más de 12 ubicaciones en todo el mundo, conexiones a Internet dedicadas que alcanzan hasta 10 Gbps, almacenamiento SSD NVMe empresarial, potentes procesadores AMD EPYC de velocidad turbo de 3,23 GHz y un tiempo de actividad del 99,95 %. Echa un vistazo a nuestro Precios de VPS para más detalles.
Pensamientos finales
Al final del día, realmente no se puede decir que uno es mejor que el otro de manera importante cuando se habla de la implementación Canary versus la implementación Blue-Green. Es sólo una cuestión de casos de uso y de cuál se adapta mejor a sus necesidades específicas.
Preguntas frecuentes
¿Cuál es la principal diferencia entre las implementaciones azul-verde y canaria?
La principal diferencia entre las estrategias de implementación Blue-Green y Canary está en cómo se publican las actualizaciones. La implementación Blue-Green utiliza dos entornos idénticos, con actualizaciones aplicadas al inactivo, lo que permite una conmutación instantánea prácticamente sin tiempo de inactividad. Por el contrario, la implementación de Canary lanza actualizaciones gradualmente para un pequeño grupo de usuarios primero, monitoreando los problemas antes de implementarlas progresivamente para toda la base de usuarios.
¿Es mejor la implementación azul-verde o la implementación canaria para reducir el tiempo de inactividad?
La implementación azul-verde es generalmente mejor para reducir el tiempo de inactividad porque permite una conmutación instantánea entre entornos. Esto minimiza cualquier posible interrupción. Si bien la implementación de Canary también tiene como objetivo minimizar el tiempo de inactividad, lo hace a través de una implementación gradual que puede involucrar algunos problemas menores localizados que afectan solo a un pequeño subconjunto de usuarios.
¿Cuáles son las consideraciones de costos para las implementaciones azul-verde versus canarias?
Las implementaciones Blue-Green suelen ser más caras porque requieren mantener dos entornos completos. Por otro lado, las implementaciones de Canary son más rentables ya que no requieren infraestructura duplicada; las actualizaciones se implementan dentro del entorno principal, lo que lo convierte en una mejor opción para equipos más pequeños o aplicaciones que requieren menos recursos.