Menta

Blog

Lo que necesitas saber sobre los ‘canary deployments’ o despliegues de canario

Los despliegues canario pueden ser de gran utilidad, ya que te permiten observar el impacto de tu despliegue con una incidencia baja de usuarios.

Es común llevar a cabo actualizaciones de código que, aunque hayan sido puestas a prueba, podrán tener un impacto no previsto en ambientes de producción. Por esta razón existe una gran incertidumbre para muchos programadores al momento de hacer un nuevo despliegue. Lo anterior porque, sin importar la estrategia que se utilice, no siempre se puede prever qué va a pasar en un ambiente productivo. Lo que sí es posible es minimizar el riesgo del despliegue ¿Cómo? Con canary deployments o despliegues canario.

Sin importar si tienes una aplicación web o móvil, los despliegues de canario funcionan en los dos casos. Otra ventaja es que pueden adaptarse a distintas infraestructuras, ya sea monolítica, en la nube o una infraestructura híbrida; incluso, se puede utilizar con contenedores como Docker y Kubernetes.

¿Cómo funcionan los canary deployments?

Cuando quieres lanzar código nuevo en tu aplicación, pero quieres reducir el riesgo de alguna falla, es cuando se utiliza un canario. De este modo, podrás asegurarte de estar enviando una prueba que podrás lanzar a todos tus usuarios una vez que estés seguro de que funciona correctamente. Sólo se trata de elegir al canario. Por comodidad muchos eligen al 5% de su tráfico. De esta forma, si algo llegar a fallar únicamente ese 5% se vería afectado. También es posible incluir otros canarios con diferente alcance de tráfico; así se incrementa la confianza en los nuevos cambios.

Luego de que te asegures de que los cambios funcionan correctamente se puede hacer el despliegue para el total de usuarios. En este caso ya no sería necesario el canario, ya que sólo sirvió para tener certeza de que todo marchaba correctamente.

Despliegues canario para distintas infraestructuras

Ahora bien, probablemente estés pensando que el siguiente paso es saber cómo hacer los despliegues canario para diferentes infraestructuras. ¡Estamos totalmente de acuerdo! A continuación, algunos ejemplos.

Balanceador de carga

En caso de que quieras hacer un despliegue canario con balanceador de carga, necesitarás dos de éstos. De este modo, el balanceador A recibirá el 95% del tráfico, mientras el B recibirá el 5% restante, por poner un ejemplo. Este último, el B, es el que servirá para llevar a cabo despliegues canario, lo que quiere decir que primero se actualizarán los servidores que están detrás. Es importante mencionar que no resulta relevante en este punto el número de servidores, ya que el tráfico se divide entre los balanceadores de carga y no entre los servidores.

Una vez que los servidores se hayan terminado de actualizar es conveniente supervisar y probar durante algún tiempo. En caso de que los resultados del balanceador de carga B no sean los esperados, es posible retroceder hasta alcanzar el resultado deseado para poder finalizar el lanzamiento. En cambio, si todo marcha bien, se pueden actualizar los servidores que están detrás del balanceador A.

Amazon Web Services

Para hacer despliegues canario con Amazon Web Services se puede emplear el servicio Route 53 que permite dividir el tráfico entre 95/5, justo como lo hicimos antes. También se pueden utilizar grupos auto escalables. La ventaja con estos es que solo necesita un balanceador de carga elástico (ELB) porque todos los grupos auto escalables (ASG’s) estarán apuntando al mismo ELB, lo que balancea la carga entre ASG’s. Entonces digamos que un ASG tiene nueve instancias (tres por cada zona de disponibilidad). Un segundo ASG únicamente tiene una instancia. Eso te da un total de diez instancias, por lo que si usamos el segundo ASG como canario, entonces tenemos 1/10 instancias para ese propósito.

Algunas buenas prácticas a las que deben acompañar los despliegues

Recuerda siempre monitorear

De nada sirve emplear una estrategia de despliegue canario si no contamos con las herramientas de monitoreo adecuadas para observar lo que sucede antes, durante y después de un despliegue. Por esa razón, lo ideal en todo proceso es seleccionar la estrategia de monitoreo adecuada , ya que esto es tan importante como planear y ejecutar una actualización.

Por ello una herramienta de monitoreo de rendimiento de la aplicación, como APM (Application Performance Management, por sus siglas en inglés), así como de Usuarios Reales (RUM) es un apoyo ideal para un equipo de tecnología al momento de monitorear métricas de rendimiento críticas y diagnosticar problemas rápidamente, lo que incluye los tiempos de respuesta del servidor después de las implementaciones. Esto se debe a que los cambios en la aplicación o en la arquitectura del sistema pueden afectar dramáticamente la experiencia de los usuarios.

De igual forma, mediante las alertas de inteligencia de datos se pueden establecer notificaciones tipo NRQL, lenguaje de consulta de dicha herramienta, con lo que se pueden establecer alertas con un criterio del tipo “select average(duration) from transaction” o promedio seleccionado de transacción. Para un caso como éste, la plataforma nos pediría rangos para establecer la alerta. En el ejemplo utilizado tenemos los tiempos promedios de respuesta, con lo que podremos configurar una alerta que nos notifique cuándo el tiempo de respuesta es mayor a ‘n’ cantidad de segundos.

En resumen, los despliegues canario son recomendados para mantener controladas las actualizaciones, ya que, al concentrarse en un pequeño porcentaje de tus visitantes, el impacto de un error sería mínimo, pues sólo afectaría al porcentaje de usuarios que se haya determinado previamente.

Si quieres implementar los despliegues canario sin olvidarte de la importancia del monitoreo, acércate a los expertos.

Contáctanos

Por favor introduce tus datos y nos pondremos en contacto contigo.

Recibirás un resumen semanal.