¿Por Qué Probar en Producción?
En la lección anterior aprendiste sobre shift-left testing — comenzar actividades de calidad más temprano. Shift-right testing es su complemento: extender actividades de calidad al entorno de producción.
¿Por qué? Porque ningún entorno de prueba puede replicar perfectamente producción:
- Patrones de tráfico reales son impredecibles y diversos
- Datos reales tienen casos límite que nunca imaginaste
- Infraestructura real se comporta diferente bajo carga
- Usuarios reales interactúan con tu software de formas inesperadas
Shift-right testing reconoce que algunos defectos solo pueden encontrarse en producción — y proporciona técnicas para encontrarlos de forma segura.
Importante: Shift-right NO significa saltarse el testing pre-producción. Significa complementar un testing pre-producción exhaustivo con validación a nivel de producción.
Técnicas Shift-Right
1. Canary Deployments
Un canary deployment libera una nueva versión a un porcentaje pequeño de usuarios antes de desplegarla para todos.
Estable] LB -->|5%| V2[Versión 1.1
Canary] end V2 -->|Métricas OK?| EXPAND[Expandir a 25% → 50% → 100%] V2 -->|Métricas malas?| ROLLBACK[Rollback a 1.0] style V1 fill:#4CAF50,color:#fff style V2 fill:#FF9800,color:#fff style ROLLBACK fill:#F44336,color:#fff
Cómo funciona:
- Desplegar versión 1.1 al 5% de servidores/usuarios
- Monitorear métricas clave: tasa de errores, latencia, tasa de conversión
- Si las métricas están sanas después de 15-30 minutos, expandir al 25%
- Continuar expandiendo hasta 100%
- Si alguna métrica degrada, revertir instantáneamente a versión 1.0
Rol de QA en canary deployments:
- Definir las métricas que deben monitorearse
- Establecer umbrales para rollback automático (ej: tasa de errores > 1%)
- Revisar resultados del canary antes de aprobar despliegue completo
- Diseñar escenarios de prueba específicos para canary
2. Feature Flags (Feature Toggles)
Feature flags permiten habilitar o deshabilitar features sin desplegar código nuevo. El feature está desplegado pero oculto detrás de un flag.
if feature_flag.is_enabled("new_checkout_flow", user):
show_new_checkout()
else:
show_old_checkout()
Usos para testing:
- Despliegue gradual: Habilitar para 10% de usuarios, luego 25%, 50%, 100%
- Beta testing: Habilitar para grupos específicos de usuarios
- Kill switch: Deshabilitar instantáneamente un feature problemático
- A/B testing: Comparar dos versiones con diferentes grupos
Rol de QA:
- Probar ambos estados del flag (encendido y apagado)
- Verificar que cambios de flag no requieran despliegue
- Probar el kill switch — asegurar que los features pueden deshabilitarse rápido
- Planificar estrategia de testing para cada porcentaje de despliegue
3. A/B Testing
A/B testing divide usuarios en grupos que ven diferentes versiones de un feature, y mide cuál funciona mejor.
| Aspecto | Grupo A (Control) | Grupo B (Variante) |
|---|---|---|
| Usuarios | 50% del tráfico | 50% del tráfico |
| Feature | Checkout original | Nuevo diseño de checkout |
| Métrica | Tasa de conversión | Tasa de conversión |
| Duración | 2 semanas | 2 semanas |
Rol de QA en A/B testing:
- Verificar que la asignación de usuarios sea aleatoria y consistente
- Probar ambas variantes por corrección
- Validar que las métricas se rastrean con precisión
- Verificar requisitos de tamaño de muestra (significancia estadística)
4. Blue-Green Deployments
Dos entornos de producción idénticos (Blue y Green) intercambian tráfico:
v1.0 - Actual] LB -.->|STANDBY| GREEN[Entorno Green
v1.1 - Nuevo] GREEN -->|Cambiar| LB BLUE -->|Se vuelve standby| BLUE2[Blue
Standby] style BLUE fill:#2196F3,color:#fff style GREEN fill:#4CAF50,color:#fff
Cómo funciona:
- Blue está en vivo (sirviendo todo el tráfico)
- Desplegar v1.1 en Green
- Probar v1.1 en Green (con datos similares a producción)
- Cambiar tráfico de Blue a Green
- Si hay problemas, cambiar de vuelta a Blue instantáneamente
Rol de QA:
- Validar la nueva versión en Green antes del cambio de tráfico
- Ejecutar smoke tests inmediatamente después del cambio
- Monitorear tasas de error durante y después del cambio
- Verificar capacidad de rollback
5. Monitoreo y Observabilidad
El monitoreo no se considera tradicionalmente “testing,” pero en shift-right es tu herramienta de calidad más importante.
Qué monitorear:
- Tasas de error: Errores HTTP 4xx y 5xx, excepciones no manejadas
- Latencia: Tiempos de respuesta P50, P95, P99
- Métricas de negocio: Tasa de conversión, registros, transacciones
- Infraestructura: CPU, memoria, disco, red
- Experiencia de usuario: Core Web Vitals, errores del lado del cliente
Rol de QA:
- Definir alertas relacionadas con calidad (ej: tasa de errores > 0.5%, latencia P95 > 2s)
- Crear dashboards de calidad
- Analizar errores en producción para identificar brechas de testing
- Correlacionar despliegues con cambios en métricas
6. Chaos Engineering
Chaos engineering introduce deliberadamente fallas en producción para verificar que el sistema las maneje correctamente.
Experimentos de chaos comunes:
- Matar una instancia de servidor — ¿hay failover?
- Agregar 500ms de latencia de red — ¿funcionan los timeouts?
- Llenar un disco al 100% — ¿la aplicación lo maneja?
- Corromper conexión a base de datos — ¿funciona la lógica de retry?
- Tumbar una zona de disponibilidad — ¿el sistema es resiliente?
Rol de QA:
- Participar en el diseño de experimentos de chaos
- Definir criterios de éxito (degradación graceful, no crash)
- Verificar que el monitoreo y alertas detecten la falla
- Documentar hallazgos y asegurar que los problemas se corrijan
¿Cuándo Es Apropiado Shift-Right?
| Escenario | Por Qué Shift-Right Ayuda |
|---|---|
| Alta variabilidad de tráfico | Pre-producción no puede simular patrones reales |
| Integraciones complejas | Servicios de terceros se comportan diferente en producción |
| Rendimiento a escala | El rendimiento real requiere carga de producción |
| Incertidumbre de comportamiento de usuario | Usuarios reales interactúan diferente que scripts de prueba |
| Infraestructura compleja | Microservicios, CDN, capas de cache solo funcionan bien en producción |
Shift-right NO es apropiado cuando:
- No hay monitoreo o alertas implementados
- No existe capacidad de rollback
- El equipo no puede responder a incidentes rápidamente
- Requisitos regulatorios prohíben testing en producción
- El feature maneja datos sensibles sin salvaguardas adecuadas
Riesgos y Salvaguardas
Riesgos
| Riesgo | Impacto |
|---|---|
| Usuarios experimentan bugs | Insatisfacción, pérdida de clientes |
| Corrupción de datos | Pérdida de datos de producción |
| Degradación de rendimiento | Sistema lento afecta a todos |
| Exposición de seguridad | Vulnerabilidades visibles en producción |
| Violaciones de compliance | Multas o sanciones regulatorias |
Salvaguardas
- Feature flags: Siempre desplegar detrás de un flag con kill switch
- Canary deployments: Nunca desplegar al 100% de una vez
- Rollback automático: Establecer umbrales que disparen rollback automático
- Monitoreo: Tener dashboards y alertas antes de desplegar
- Runbooks: Documentar procedimientos paso a paso para escenarios de falla
- Limitación del radio de impacto: Limitar usuarios afectados por cualquier experimento
- Protección de datos: Nunca usar testing en producción para manipular datos reales
Ejercicio: Diseñar una Estrategia Shift-Right para una Aplicación Web
Eres QA lead de una plataforma de redes sociales con 2 millones de usuarios activos diarios. El equipo está lanzando un rediseño mayor del feature de mensajería. El nuevo sistema:
- Usa conexiones WebSocket para mensajería en tiempo real
- Incluye compartir archivos (imágenes, documentos hasta 25MB)
- Tiene un nuevo sistema de notificaciones
- Se integra con API de traducción de terceros para auto-traducir mensajes
Tu tarea:
Diseña una estrategia shift-right que incluya:
- Enfoque de despliegue (canary, blue-green o híbrido)
- Estrategia de feature flags (qué flags, qué grupos, qué cronograma)
- Plan de monitoreo (qué métricas, qué umbrales, qué dashboards)
- Experimentos de chaos engineering post-lanzamiento
- Plan de rollback para cada componente
Pista
Considera:
- Conexiones WebSocket son stateful — canary es más difícil que con HTTP stateless
- Límites de rate de API de traducción requieren testing gradual a escala
- Subidas de 25MB pueden impactar almacenamiento y ancho de banda
- Actualizaciones de apps móviles no pueden revertirse tan fácil como web
Solución de Ejemplo
Estrategia Shift-Right para Rediseño de Mensajería
1. Enfoque: Canary Híbrido + Feature Flags
Despliegue por fases:
- Fase 1 (Día 1): 2% de usuarios (empleados internos) — features completos
- Fase 2 (Día 3): 5% — mensajería básica (sin traducción, sin archivos)
- Fase 3 (Semana 1): 20% — mensajería + archivos
- Fase 4 (Semana 2): 50% — todos los features incluyendo traducción
- Fase 5 (Semana 3): 100% — despliegue completo
2. Feature Flags:
| Flag | Descripción | Estado Inicial |
|---|---|---|
new_messaging_ui | Nueva interfaz de mensajería | OFF |
file_sharing | Subir/descargar archivos | OFF |
auto_translate | Auto-traducción | OFF |
websocket_v2 | Nuevo formato WebSocket | OFF |
3. Monitoreo:
| Métrica | Umbral | Nivel Alerta |
|---|---|---|
| Errores de conexión WebSocket | > 0.5% | Crítico |
| Latencia entrega mensaje P95 | > 500ms | Advertencia |
| Tasa de fallo subida archivos | > 2% | Advertencia |
| Rate limit API traducción | > 10/min | Crítico |
4. Chaos Engineering (Semana 4-6):
| Experimento | Comportamiento Esperado |
|---|---|
| Matar 1 servidor WebSocket | Reconexión en < 5s, sin pérdida de mensajes |
| Timeout API traducción | Degradación graceful, mensajes sin traducir |
| Llenar almacenamiento al 95% | Subida rechazada con error amigable |
| Pico 10x de tráfico | Auto-scaling maneja carga |
5. Rollback:
| Componente | Método | Tiempo | Impacto Datos |
|---|---|---|---|
| Frontend web | Deshabilitar flag | < 1 min | Ninguno |
| Backend WebSocket | Canary rollback | < 5 min | Mensajes en vuelo necesitan re-entrega |
| Archivos | Deshabilitar flag | < 1 min | Archivos subidos permanecen accesibles |
| Traducción | Deshabilitar flag | < 1 min | Mensajes se muestran sin traducir |
El Modelo Shift-Left + Shift-Right
Shift-left y shift-right no son opuestos — son complementos:
Probar temprano] --> CT[Testing Core
Pre-producción] --> SR[Shift-Right
Probar en producción] style SL fill:#4CAF50,color:#fff style CT fill:#2196F3,color:#fff style SR fill:#FF9800,color:#fff
- Shift-left detecta 80% de defectos temprano y barato
- Testing core valida el sistema integrado antes del release
- Shift-right detecta los defectos restantes que solo aparecen en producción
Consejos Pro para Shift-Right Testing
Monitoreo primero, features después. Antes de lanzar cualquier estrategia shift-right, asegura monitoreo comprensivo. No puedes probar lo que no puedes observar.
Comienza con feature flags. Son la técnica shift-right más segura — cero riesgo si puedes deshabilitar instantáneamente.
Practica rollbacks regularmente. Un plan de rollback que nunca se ha probado no es un plan — es una esperanza.
Trata incidentes de producción como resultados de tests. Cada bug en producción es un caso de prueba que tu testing pre-producción no cubrió.
Comunica a stakeholders. Shift-right puede alarmar a personas no familiarizadas. Explica las salvaguardas antes de experimentar en producción.