# Canary release

> Lanzar una versión nueva primero a pocos usuarios y ampliar solo si anda bien.

- Nivel: Intermedio
- Temas: Cloud
- URL: https://tidbit.legios.com.ar/es/canary-release/
- En inglés: [Canary release](https://tidbit.legios.com.ar/canary-release/)

Un **canary release** (o despliegue canario) es una forma de poner en producción una versión nueva de un software de a poco. En vez de pasar a todos los usuarios de una, mandás una parte chica del tráfico, por ejemplo el 1% o el 5%, a la versión nueva, mientras el resto sigue en la actual. Y mirás: tasa de errores, tiempos de respuesta, registros, lo que te diga que el sistema está sano.

Si los números dan tan bien como los de la versión vieja, vas ampliando la porción de a pasos, por ejemplo al 25%, después al 50% y después a todos. Si algo sale mal, mandás todo el tráfico de vuelta a la versión vieja, y el problema solo lo vio un grupo chico de usuarios. Muchos equipos automatizan todo el ciclo: una herramienta va moviendo el tráfico según un cronograma y vuelve atrás sola si una métrica pasa un umbral. En AWS, CodeDeploy y Lambda pueden mover tráfico así; en Kubernetes lo hacen herramientas como Argo Rollouts y Flagger.

El nombre viene de los canarios que los mineros llevaban bajo tierra: el pájaro reaccionaba al gas tóxico antes que las personas y les daba tiempo de salir. Comparado con un blue-green deployment, que pasa todo el tráfico de un entorno completo a otro, el canario limita a cuánta gente puede afectar un lanzamiento fallado. El costo es más complejidad: hay dos versiones corriendo a la vez, así que tienen que ser compatibles con los mismos datos, y hace falta buen monitoreo para saber si el canario está bien.

## Una analogía

Un restaurante que prueba un plato nuevo en algunas mesas antes de sumarlo a la carta. Si a esos comensales les encanta, sale para todos; si lo devuelven, se enteraron unas pocas mesas.

## Para quedarse

- Una parte chica del tráfico real va primero a la versión nueva.
- Las métricas deciden si se amplía el lanzamiento o se vuelve atrás.
- Un lanzamiento fallado solo llega a un grupo chico de usuarios.
- Las dos versiones corren a la vez, así que tienen que funcionar con los mismos datos.

## Para seguir leyendo

- [Canary release (Martin Fowler, en inglés)](https://martinfowler.com/bliki/CanaryRelease.html)
- [Canarying releases (libro de SRE de Google, en inglés)](https://sre.google/workbook/canarying-releases/)

## Términos relacionados

- [AWS Lambda](https://tidbit.legios.com.ar/es/aws-lambda/): Correr un pedazo de código solo cuando pasa algo, sin ningún servidor que administrar.
- [Kubernetes](https://tidbit.legios.com.ar/es/kubernetes/): El sistema que corre y cuida contenedores en muchas máquinas a la vez.
- [Despliegue blue-green](https://tidbit.legios.com.ar/es/blue-green-deployment/): Publicar una versión nueva al lado de la vieja y pasar el tráfico de un saque.
