Hoy en día, hasta se habla de la "programación por vibra".
Si le hablas a un agente de IA, el código del servicio web aparece rápidamente.

Sin embargo, hay algo que no ha cambiado.

  • ¿Cómo dividir el servidor?

  • ¿Dónde desplegar?

  • ¿Cómo gestionar y hacer rollback?

Esto sigue siendo responsabilidad de las personas.
La IA puede generar “código”, pero no se ocupa de “los problemas operativos”.

En este artículo, centraré particularmente en la importancia del entorno de staging y revisaré qué es imprescindible verificar en el staging.

Imagen de la cadena dev-staging-prod


1. Aunque la IA genere el código, el despliegue sigue existiendo



Si le dices esto a un agente de IA:

"Crea una simple app web TODO con Next.js"
"Conéctame esta API a PostgreSQL"

El código aparece rápidamente.
Sin embargo, la IA no se adelanta a decir:

"Ahora subamos esto no al servidor dev, sino al servidor de staging,
y verifiquemos la configuración de la base de datos/caché/variables de entorno como en producción".

Porque si la persona que pregunta e indica no tiene esa experiencia,
la IA tampoco piensa en esa dirección.

Como resultado, muchos desarrolladores novatos:

  1. Solo ven que funciona en el servidor dev

  2. Lo suben directamente al servidor prod,

  3. y explotan por problemas en la configuración de base de datos/caché/variables de entorno/dominio 💣

y luego se dan cuenta: "Ah... esto era el staging".


2. ¿Por qué es peligroso ir directamente de dev a prod?

"El código se empaquetó como una imagen de Docker, entonces, ¿no debería ser el mismo en cualquier lugar?"
A primera vista parece correcto, pero en la operación real, esto es muy diferente.

  • ¿Qué base de datos se está utilizando?

    • dev: dev-db, prod: prod-db

    • Las cadenas de conexión, configuraciones de seguridad, permisos de cuentas y cantidades de datos son diferentes.

  • Caché/cola de mensajes

    • Direcciones, autenticaciones y capacidades específicas de cada entorno: Redis, RabbitMQ, Kafka, etc.
  • Variables de entorno

    • NODE_ENV, API_BASE_URL, PAYMENT_PROVIDER_KEY, …

    • En dev pueden ser vacías o dummy, pero en prod se utilizan las claves reales.

  • Integraciones externas

    • Pagos, mensajes, correos electrónicos, SSO, API externas, etc.

    • Dev es un sandbox, prod es un entorno real.

El hecho de que la imagen de Docker sea la misma no significa que los “entornos” sean iguales.
Incluso si se completa una aplicación web,
no es exagerado decir que el despliegue y la operación son territorios completamente diferentes.

Por lo tanto, ir directamente de dev a prod
no es más que decir "he hecho la prueba de funciones localmente, así que probemos directamente con clientes reales".


3. ¿Por qué es imprescindible el staging?



El staging se puede describir de manera sencilla como:

"Un escenario de ensayo configurado lo más parecido posible al entorno de producción"

Es.

  • Una aplicación de la misma versión que en prod

  • Una infraestructura casi idéntica a la de prod

  • Pero utilizando datos, dominios y cuentas de prueba.

Sin staging:

  • El código que funcionaba bien en dev puede fallar en prod,

  • y al buscar la causa, la mayoría de las veces es la “diferencia de entorno”,

  • y cada vez se repite el mal bucle de: parches urgentes → re-despliegue a prod → otro problema…

En cambio, si se utiliza bien el staging:

  • Es posible verificar anticipadamente “cómo se verá este cambio en el entorno de producción real”.

  • Se puede simular el ensayo de configuraciones de infraestructura, configuraciones de seguridad, migraciones de datos.

  • QA, planificación, diseñadores y personal de negocios pueden prever visualmente las pantallas y funciones antes de la operación.

Particularmente para desarrolladores novatos:

  • Se deben desarrollar habilidades para ver “todo el entorno de operación” y no solo su código,

  • y esa formación se lleva a cabo precisamente en el staging.


4. Cosas que deben comprobarse en el staging

Entonces, ¿qué se debe mirar en el entorno de staging?
Vamos a organizarlo por ítems.

4.1 Variables de entorno y configuraciones

  • DATABASE_URL

  • REDIS_URL / CACHE_URL

  • API_BASE_URL

  • SECRET_KEY, JWT_SECRET_KEY

  • Claves de API externas, URL de webhook, etc.

Se debe documentar "cómo son diferentes las configuraciones de dev y prod" y verificar
que el staging siga el mismo patrón que prod.

Puntos de verificación

  • Ver si los archivos env o configuraciones del staging tienen
    la misma estructura que prod

  • Comprobar que la información sensible esté bien oculta en variables de entorno/herramientas de gestión de secretos.

  • Verificar que los valores de configuración no estén codificados de forma estática.

4.2 Base de datos y migraciones de datos

  • Asegurarse de que los scripts de migración (prisma migrate, django migrate, migration.sql, etc.) funcionen correctamente
    en un esquema de datos que sea parecido al de prod.

  • Ver que no haya errores relacionados con índices, restricciones únicas, o restricciones de clave foránea.

  • Verificar que los datos de prueba no causen problemas en el flujo real de las pantallas.

Puntos de verificación

  • Ver si hay una cantidad adecuada de datos de prueba en la base de datos de staging
    (probar solo en bases de datos vacías es poco significativo).

  • También es recomendable practicar la estrategia de rollback en el staging una vez.

4.3 Autenticación, permisos y sesiones

  • Flujo de inicio de sesión/registro

  • Integración con OAuth/SSO (Google, Kakao, etc.)

  • Interacciones de pantallas/API diferentes según el rol y permisos

Puntos de verificación

  • Verificar si en el staging se puede iniciar sesión de manera igual que en producción
    (asegurarse de que no haya lógica de bypass solo para desarrolladores).

  • Ver si las acciones/menús/botones funcionan correctamente para cuentas con permisos diferentes (administradores, usuarios normales, etc.).

4.4 Integraciones externas: pagos, mensajes, correos electrónicos, alertas, etc.

  • Pagos (gateway) → modo sandbox/prueba

  • Mensajes/notificaciones de Kakao → canal de prueba

  • Envío de correos → correos de prueba, asegurándose de que no se envíen a clientes reales.

Puntos de verificación

  • Comprobar que en el staging se use las rutas reales de integración externa
    (aunque sea con cuentas de prueba y no con clientes reales).

  • También verificar cómo se manejan los errores (errores en pagos, timeouts, etc.).

4.5 Integración del frontend y backend

Aunque en local el frontend y el backend funcionen bien por separado,
cuando el staging incluye dominio real/proxy inverso/SSL, pueden surgir otros problemas.

  • Configuración de CORS

  • Mezcla de HTTPS/HTTP

  • Configuración de dominio/seguridad de cookies

  • Problemas de enrutamiento en el proxy inverso (Nginx, Traefik, etc.)

Puntos de verificación

  • Verificar que todas las páginas funcionen basándose en la URL de staging
    (asegurándote de que no haya URLs locales ocultas).

  • En la pestaña de red de las herramientas de desarrollo del navegador, verificar
    que no haya errores de CORS, 301/302 o errores 4xx/5xx.

4.6 Rendimiento y uso de recursos

Al principio, puede no parecer haber problemas de rendimiento,
pero al realizar alguna prueba de carga en staging se pueden detectar problemas anticipadamente.

  • Tiempo de respuesta de la API

  • Número de consultas a la base de datos, ver si hay consultas N+1

  • Rendimiento en caso de un cache miss

  • Uso de memoria/CPU

No es necesario contar con herramientas de carga extensas.

  • En staging, se pueden probar simultáneamente varios roles de usuario y observar logs para verificar si hay secciones lentas,
    lo cual será un"mini test de carga" muy significativo.


5. ¿Cómo empezar a configurar el entorno de staging?

No es necesario ser perfecto desde el principio.
Para un servicio a pequeña escala, se podría comenzar de esta forma.

5.1 Ejemplo de configuración mínima

  • dev

    • Entorno de desarrollo local (Docker compose, base de datos local, etc.)
  • staging

    • Despliegue en un cloud/plataforma igual que prod.

    • Dominio: staging.example.com

    • Base de datos/caché/almacenamiento separados.

  • prod

    • Entorno de operación que utilizan los clientes reales.

El flujo de despliegue también se puede simplificar:

  1. Fusión en main → despliegue automático a staging

  2. QA/revisión por uno mismo en staging.

  3. Al presionar una etiqueta específica (v1.0.0) → despliegue a prod

Con esto es suficiente para:

  • Evitar que “dev → prod” ocurra,

  • y fomentar el hábito de siempre pasar por staging.


6. Cuanto más novato, más se debe aprovechar el staging

La mayoría de los desarrolladores principiantes descuidan el staging.

  • “Funciona bien en dev, ¿y qué más?”

  • “No sé qué debería verificar en staging...”

Sin embargo, la verdadera diferencia de habilidades radica más en cómo se maneja la operación y el despliegue de manera estable que en la calidad del código.

  • Es importante que la funcionalidad funcione correctamente y

  • es aún más importante que el servicio no se detenga.

El staging es un dispositivo de seguridad que conecta ambas cosas y
es el mejor lugar para que un desarrollador aprenda desde la perspectiva de la “operación del servicio”.

Cuando crees un nuevo servicio web en el futuro, intenta hacerlo así:

  1. Desde el diseño, visibiliza tanto prod como staging

  2. Automatiza el despliegue de forma que vaya de staging a prod

  3. Para funcionalidades importantes, asegúrate de hacer clic varias veces en staging
    “como en la operación real” antes de subirlo a prod.

Cuanto más presente esté la IA haciendo el código por nosotros,
la capacidad de diseñar y responsabilizarse por el despliegue y la operación será una gran diferenciación.
El staging es la herramienta más realista para desarrollar esta habilidad.