Volver al blog

Por qué staging funciona y producción falla

El mismo commit puede comportarse de forma distinta cuando cambian datos, permisos, tráfico y dependencias. Un diagnóstico para dejar de usar staging como amuleto.

“En staging funcionaba” no es una explicación. Es una señal de que dos entornos que se suponían comparables están validando realidades diferentes.

El mismo commit puede fallar en producción por datos, permisos, carga, configuración, orden de despliegue o comportamiento de una dependencia externa. Cuanto más artesanal es la infraestructura de cada cliente, más difícil resulta saber cuál de esas diferencias importa.

La falsa tranquilidad de un entorno verde

Staging aporta valor cuando reduce incertidumbre. Pierde valor cuando solo confirma que una versión arranca con poco tráfico y datos de prueba.

Un pase correcto no demuestra necesariamente:

  • que la migración soporta el volumen real;
  • que las identidades tienen los mismos permisos;
  • que las variables obligatorias están presentes;
  • que las integraciones aceptan tráfico desde producción;
  • que el rollback conserva compatibilidad con los datos;
  • que las alertas llegarán a alguien;
  • que el sistema resistirá reintentos y concurrencia.

La pregunta no es si staging es idéntico. Casi nunca puede serlo. La pregunta es si reproduce las condiciones que podrían invalidar el cambio.

Las diferencias que más suelen doler

Datos

Los datos ficticios son pequeños, limpios y coherentes. Los reales contienen registros antiguos, campos vacíos, documentos enormes, codificaciones inesperadas y estados que ya nadie recuerda.

Una migración debería probarse con volumen y distribución representativos, sin copiar información personal de manera indiscriminada.

Identidad y permisos

En staging puede existir una credencial demasiado amplia. Producción utiliza una identidad restringida y el cambio falla al escribir en un bucket, leer un secreto o invocar una API.

Las políticas deberían generarse con la misma plantilla y variar mediante parámetros explícitos.

Tráfico y concurrencia

Una prueba manual confirma un camino. Cien peticiones simultáneas descubren carreras, límites de conexión, timeouts y operaciones no idempotentes.

No hace falta reproducir siempre el pico completo. Sí conviene probar el supuesto de carga que justifica la arquitectura.

Dependencias externas

Sandboxes de pagos, modelos de IA o APIs de terceros pueden tener límites y respuestas distintas. Además, producción introduce listas de IP, dominios, certificados y cuotas reales.

Cada dependencia necesita una comprobación previa y un comportamiento definido cuando no responde.

Secuencia de cambio

Código y base de datos no siempre pueden actualizarse de forma atómica. Si una versión nueva requiere un esquema que la anterior no entiende, el rollback puede dejar de ser posible.

Los cambios compatibles hacia atrás y los despliegues por fases reducen ese riesgo.

Paridad no significa duplicar costes

Mantener un clon permanente de producción puede ser innecesario. La paridad útil se concentra en:

  • mismo método de aprovisionamiento;
  • mismas versiones principales;
  • misma forma de desplegar;
  • mismo modelo de identidades;
  • mismas políticas críticas;
  • observabilidad equivalente;
  • diferencias documentadas y revisables.

El tamaño puede variar. El proceso no debería hacerlo.

Un registro de diferencias

Una tabla sencilla evita que las excepciones se vuelvan invisibles:

Dimensión Staging Producción Riesgo Control
Datos muestra sintética volumen completo migración lenta ensayo con volumen
Acceso VPN interna tráfico público reglas distintas prueba de conectividad
Capacidad mínima autoescalado límites ocultos prueba de carga
Integración sandbox cuenta real cuotas y permisos smoke test

Si una diferencia no tiene motivo, debería eliminarse. Si lo tiene, necesita un control que compense el riesgo.

El despliegue también debe validar producción

Staging no sustituye a una entrega segura. Producción necesita sus propias defensas:

  1. comprobaciones antes del cambio;
  2. despliegue gradual cuando el riesgo lo justifique;
  3. smoke tests automáticos;
  4. métricas comparadas con el baseline;
  5. criterio explícito de rollback;
  6. una persona responsable de decidir.

Un cambio pequeño y observable suele ser más seguro que una gran validación previa seguida de un salto ciego.

La prueba para una agencia

Escoge el último despliegue fallido y anota qué diferencia entre entornos lo causó. Después pregunta:

  • ¿la diferencia era necesaria?;
  • ¿estaba documentada?;
  • ¿podía detectarla el pipeline?;
  • ¿afecta a otros clientes?;
  • ¿la solución puede convertirse en una plantilla común?

Cuando cada cliente tiene un staging distinto y un procedimiento distinto, el problema no se resuelve añadiendo otra checklist. Se resuelve creando una forma común de incorporar y operar clientes.