- 19 de abr
Canary Deployment
Cada vez que tu equipo hace un deploy, hay un momento de silencio incómodo. Todos miran los logs. Alguien tiene el Slack abierto esperando el primer reporte de error. Y si algo sale mal, toda la base de usuarios lo sufre al mismo tiempo. Obvio que la joda es que esto lo padezcas en ambientes previos a producción, pero a veces...producción nos tira estos incendios. Es un gran momento para hablar de comida u organizar tragos con el equipo. Al menos es la forma en la que suelo matar este tiempo.
El Canary Deployment existe para que ese momento de tensión deje de ser una ruleta rusa.
Qué es un Canary Deployment
La idea es simple: en lugar de desplegar una nueva versión a todos los usuarios de golpe, la desplegás primero a un grupo pequeño. Ese grupo es el "canario". Si todo funciona bien, expandís el deploy gradualmente hasta cubrir el 100% de los usuarios. Si algo falla, revertís antes de que el problema afecte a todo el mundo.
El nombre viene de los canarios que los mineros llevaban a las minas de carbón para detectar gases tóxicos. El pájaro era la alarma temprana. En software, ese rol lo cumplen tus primeros usuarios. Al menos no estamos matando pajaritos haciendo esto...
Los grupos que participan
Cuando un Canary Deployment está activo, conviven dos grupos en producción:
Canary: los usuarios que reciben la nueva versión. Son pocos al principio, y el porcentaje crece a medida que la versión demuestra estabilidad.
Baseline: el resto de los usuarios, que siguen en la versión anterior mientras el equipo monitorea.
Este esquema genera algo valioso para QA: estás corriendo esencialmente una prueba A/B en producción. Podés comparar el comportamiento de ambas versiones bajo las mismas condiciones reales, con usuarios reales.
Siempre escuchamos una bocha sobre "shift left" pero...el "shift right" aporta muchísimo valor si se hace bien también.
Qué tiene que ver esto con el trabajo de QA
Mucho más de lo que parece.
El Canary Deployment no reemplaza tus pruebas, sino que más bien las complementa. Antes de llegar al grupo canario, los cambios deberían haber pasado por toda el pipeline de CI/CD: unit tests, integración, staging. El canario es la última capa de validación, la que corre en producción real. Yo solía verlo como un último manotazo de ahogado, pero con el tiempo supe apreciar el valor de joder a un % pequeño de usuarios en producción vs joderlos a todos a la vez. No querés estar en esa posición...
Como tester, tu rol en este proceso incluye:
Definir las métricas de salud que determinan si el canario está estable. Tasas de error, latencia, conversiones, crashes. Sin métricas claras, no hay criterio para decidir si avanzar o hacer rollback.
Diseñar health checks automatizados que corran continuamente sobre el grupo canario.
Participar en la decisión de rollback. Si las métricas se degradan, hay que revertir rápido. Eso requiere criterios acordados de antemano, no impresiones en el momento.
Usar las feature flags que permiten desactivar funcionalidades problemáticas sin un deploy completo.
El flujo paso a paso
Un Canary Deployment típico sigue estas fases:
1. Planificación: el equipo define qué se despliega, qué métricas se van a monitorear y cuál es el umbral para hacer rollback. También se determina el tamaño inicial del grupo canario, generalmente entre el 1% y el 5%.
2. Deploy al grupo canario y enrutamiento de tráfico: la nueva versión se despliega en paralelo a la versión estable. Un load balancer o feature flag dirige un porcentaje pequeño del tráfico a la nueva versión.
3. Monitoreo y análisis: se observan las métricas durante un período definido. Cualquier anomalía activa una alerta.
4. Decisión: si todo está bien, se incrementa el porcentaje gradualmente hasta llegar al 100%. Si algo falla, se ejecuta el rollback, idealmente de forma automática.
Por qué esto obliga a invertir en automatización
El Canary Deployment no funciona bien si el monitoreo es manual. Necesitás que tus health checks, alertas y hasta el rollback estén automatizados. No podés tener a alguien mirando métricas a las 3 de la mañana para decidir si revertir.
Esto tiene una consecuencia directa: los equipos que adoptan Canary Deployment terminan priorizando la automatización de manera natural. No como una deuda técnica que se paga "cuando haya tiempo", sino como un prerequisito operativo.
Para QA, eso es una oportunidad. Tus scripts de automatización no son solo una red de seguridad pre-deploy, pasan a ser parte activa de la infraestructura productiva.
Los desafíos reales
No todo es perfecto. Hay dos problemas técnicos que aparecen seguido cuando se implementa Canary Deployment:
Consistencia de datos: si tenés usuarios en la versión vieja y en la nueva al mismo tiempo, y ambas versiones escriben en la misma base de datos, podés tener conflictos. Hace falta una estrategia de migración de datos que soporte ambas versiones en paralelo...y eso hay que testearlo explícitamente.
Latencia de la pipeline: el monitoreo y el deploy gradual agregan tiempo al proceso. Si tus pipelines de CI/CD tardan mucho, el Canary se convierte en un cuello de botella. Optimizar los tiempos de ejecución no es un nice-to-have.
Cuándo tiene sentido aplicarlo
El Canary Deployment encaja bien en equipos que ya tienen:
Una cultura de trabajo ágil consolidada
Automatización de pruebas en funcionamiento
Infraestructura que soporta múltiples versiones en paralelo
Capacidad de monitoreo en tiempo real
No es una solución universal. En sistemas con restricciones técnicas fuertes, equipos chicos sin cultura de automatización, o productos donde el costo de mantener dos versiones en paralelo es prohibitivo, puede no valer la pena.
Pero si tu equipo ya está en ese camino, el Canary Deployment es el paso siguiente lógico. Cambia la pregunta de "¿rezamos para que no explote?" por "¿cómo detectamos el problema antes de que escale?".
Y esa segunda pregunta es exactamente el tipo de pregunta que le corresponde responder a QA.
- Entrega gratuita por correo electrónico
La guía 2027 para conseguir trabajo en Testing de Software
- Descarga digital
- 1 archivo