¿Qué es el canary deployment?

Una estrategia de despliegue es una práctica que se decide utilizar para cambiar o actualizar una aplicación. Todo desarrollador sabe que, desgraciadamente, un despliegue puede llegar a asimilarse a un juego de azar: por muy bueno que sea ese desarrollador, una parte de las opciones de éxito queda fuera de sus manos porque hay pruebas que solo pueden hacerse en producción y determinados bugs que solo son detectables entonces.

Al pasar una aplicación a producción, sustituimos por ella la versión anterior. Y si la nueva tiene algún problema… ¡catapún! Podemos estar ante una caída parcial o total de la aplicación, con las consecuencias que eso tiene para nuestra organización, ninguna de ellas buena.

Una mirada al siglo XIX

Afortunadamente, existe una forma de asegurar que evitamos el desastre: el canary deployment. El concepto y el nombre están basados en una práctica habitual en las minas de carbón en el siglo XIX.

Uno de los mayores riesgos para los mineros que trabajaban en ellas eran los gases tóxicos, que podían provocar explosiones o incendios. Algunos de esos gases, como el monóxido de carbono, son imperceptibles para las personas porque son inodoros.

Pues bien, aquellos mineros lo que hacían era llevar con ellos canarios enjaulados. Estas aves son especialmente sensibles a los gases. Si en algún momento veían que el canario sufría algún tipo de efecto -este podía llegar a ser la muerte-, desalojaban inmediatamente la mina.

Volviendo a las estrategias de despliegue y el paso de una aplicación a producción, el canary deployment es una práctica que evita que nuestra aplicación se venga abajo cual mina afectada por un incendio o explosión.

En este caso, el canario es un entorno de producción acotado que va recibiendo tráfico poco a poco. Es decir, la aplicación se va liberando incrementalmente y la infraestructura del entorno de destino se va actualizando en pequeñas fases.

Balanceo de tráfico en el canary deployment

Nuestra CDN de nueva generación es la que se encarga de balancear el tráfico de producción entre la aplicación antigua y el canario, ofreciendo así a desarrolladores y devops una mayor fiabilidad y seguridad en sus subidas a producción. La lentitud en la subida permite una reversión rápida y segura a la versión anterior de la aplicación en caso de problemas. Es decir, si hubiera algún contratiempo con la versión nueva de la aplicación, este solo afectaría a un porcentaje pequeño de usuarios y el problema podría arreglarse con rapidez.

El canary deployment, con el balanceo de tráfico efectuado por nuestra CDN, da por tanto la oportunidad de probar en producción una versión de la aplicación para un conjunto de usuarios y casos de uso reales, permitiendo comparar diferentes versiones sin necesidad de contar con dos entornos de producción.