Alejandría

Busca en Alejandría

Técnicas

1% canary

Expón una versión a una cohorte pequeña antes de ampliar su alcance.

01

En pocas palabras

Variante de despliegue progresivo que empieza con una fracción pequeña y representativa de usuarios, tráfico o dispositivos, por ejemplo el 1 %, para observar el comportamiento real antes de ampliar la exposición.

Qué problema resuelve

Fallos que solo aparecen en producción y afectan a una población grande cuando una versión se publica de una sola vez.

Cuándo utilizarlo

Servicios con mucho tráfico, aplicaciones móviles y flotas de dispositivos. Ejemplo: activar una versión para una cohorte que incluya distintos sistemas operativos y regiones, medir resultados y ampliar por etapas.

02

De la idea a la práctica

Funcionamiento, ejemplos y decisiones para pasar al siguiente nivel.

En el Radar compartido: Adopt (valoración de la edición aportada).

Cómo funciona

Se mantienen una versión estable y una candidata. Una regla de enrutamiento o un feature flag asigna una cohorte estable a la candidata. La observabilidad compara fallos, latencia y resultados del negocio entre ambas, segmentados por contexto.

Ejemplo: ampliar con evidencia

Etapa ilustrativa Qué comprobar antes de continuar
1 % Tráfico suficiente y ausencia de regresiones relevantes
5 % y 25 % Estabilidad sostenida y cobertura de segmentos
100 % Criterios acordados satisfechos durante la observación

Los porcentajes y ventanas deben adaptarse a la carga. Un servicio con pocas solicitudes puede necesitar más tiempo para producir evidencia útil.

Comparar contra una línea base, no contra el pasado

Compara la canary con instancias de la versión estable en el mismo momento y con el mismo tipo de tráfico, no con la semana anterior. Algunas plataformas despliegan además un baseline nuevo de la versión estable del mismo tamaño que la canary, para que diferencias por instancias recién arrancadas (cachés frías) no se atribuyan a la versión.

Señales a vigilar

Tipo Ejemplos
Técnicas Tasa de errores 5xx, latencia p95/p99, reinicios, memoria
Dependencias Errores y latencia hacia base de datos y servicios externos
Negocio Solicitudes completadas, pagos exitosos, tasa de aprobación
Cliente Errores de JavaScript, caídas de la app móvil

Las métricas de negocio detectan errores funcionales que no producen excepciones (un cálculo de cuota incorrecto que el sistema procesa «con éxito»).

Análisis automático

apiVersion: argoproj.io/v1alpha1
kind: AnalysisTemplate
metadata:
  name: tasa-errores
spec:
  metrics:
    - name: errores-5xx
      interval: 1m
      count: 10
      failureLimit: 2
      successCondition: result[0] < 0.01
      provider:
        prometheus:
          address: http://prometheus.monitoring:9090
          query: |
            sum(rate(http_server_requests_total{app="api-pagos",track="canary",status=~"5.."}[5m]))
            /
            sum(rate(http_server_requests_total{app="api-pagos",track="canary"}[5m]))

Herramientas similares: Flagger, Kayenta (análisis estadístico de canaries) o la división de tráfico de Cloud Run controlada desde el pipeline.

Poco tráfico, poca evidencia

Con un 1 % de un servicio que recibe 100 peticiones por minuto, la canary ve una petición por minuto: en 10 minutos no hay base estadística. Opciones:

  • Ampliar la duración de la primera fase.
  • Empezar con un porcentaje mayor (5–10 %) en servicios con poco tráfico.
  • Dirigir primero tráfico interno o de empleados (dogfooding).
  • Complementar con pruebas sintéticas sobre la canary.

Canary en aplicaciones móviles

No se puede revertir una app instalada. Las tiendas ofrecen lanzamientos graduales: Google Play permite elegir el porcentaje de usuarios, y App Store ofrece phased release durante siete días. Combínalo con feature toggles para desactivar funciones sin publicar otra versión y con monitorización de crashes por versión.

Antipatrones frecuentes

  • Canary sin criterios de aborto definidos: alguien mira un panel y decide «parece bien».
  • Cohortes que cambian en cada petición: un usuario ve alternativamente las dos versiones.
  • Canary de código con migración de datos incompatible: el retroceso no deshace los datos.

Criterios de implementación

Elige cohortes representativas y conserva su asignación entre sesiones. Define umbrales de aborto antes de empezar. Asegura compatibilidad de datos y una estrategia de recuperación; una migración destructiva no se revierte simplemente desviando tráfico.

Continúa en las fuentes

Documentación oficial para verificar detalles y explorar más.