Concepto clave
Las migraciones en entornos de staging son como los ensayos generales antes del estreno de una obra de teatro. En producción, un error en una migración puede causar downtime o pérdida de datos críticos. Staging es un entorno idéntico a producción donde probamos cambios de base de datos de forma segura antes de implementarlos en el entorno real.
Imagina que eres un arquitecto que va a remodelar un edificio ocupado. No empezarías a demoler paredes sin antes crear una maqueta exacta para probar tus planos. De la misma forma, las migraciones en staging te permiten validar que tus cambios en el schema.prisma funcionarán correctamente con los datos reales, sin afectar a los usuarios finales.
Cómo funciona en la práctica
El flujo típico sigue estos pasos:
- Desarrollas localmente y generas una migración con
prisma migrate dev - Subes los archivos de migración a tu repositorio de control de versiones
- Despliegas los cambios en el entorno de staging
- Ejecutas la migración en staging con
prisma migrate deploy - Verificas que la aplicación funciona correctamente con los nuevos cambios
- Si todo está bien, repites el proceso en producción
Este proceso garantiza que cualquier problema se detecte en staging, donde puedes corregirlo sin consecuencias para los usuarios.
Código en acción
Veamos un ejemplo real de migración que añade un índice a una tabla existente:
// 1. Primero, modificamos nuestro schema.prisma
// Antes:
model User {
id Int @id @default(autoincrement())
email String @unique
name String?
createdAt DateTime @default(now())
}
// Después de añadir el índice:
model User {
id Int @id @default(autoincrement())
email String @unique
name String?
createdAt DateTime @default(now())
@@index([createdAt]) // Nuevo índice añadido
}# 2. Generamos la migración en desarrollo
prisma migrate dev --name add_createdat_index_to_user
# 3. En staging, aplicamos la migración
prisma migrate deploy
# 4. Verificamos que la migración se aplicó correctamente
prisma migrate statusErrores comunes
- No probar con datos reales en staging: Muchos desarrolladores prueban migraciones solo con datos de prueba. Usa un snapshot de la base de producción en staging para detectar problemas con datos reales.
- Olvidar los rollbacks: Siempre ten un plan para revertir la migración. Prisma no genera rollbacks automáticos para todas las operaciones.
- Ignorar el tiempo de ejecución: En producción, una migración que tarda 2 horas puede ser inaceptable. Mide el tiempo en staging y optimiza si es necesario.
- No verificar dependencias: Si tu migración depende de datos existentes, valida que esos datos estén presentes y en el formato esperado.
Checklist de dominio
- ¿Has probado la migración en un entorno idéntico a producción?
- ¿Has medido el tiempo de ejecución y confirmado que es aceptable?
- ¿Tienes un backup de la base de datos antes de aplicar la migración?
- ¿Has verificado que la aplicación funciona correctamente después de la migración?
- ¿Has probado el rollback de la migración en caso de problemas?
- ¿Has comunicado el mantenimiento a los equipos afectados?
- ¿Has documentado los cambios para futuras referencias?
Implementar una migración segura en entorno de staging
En este ejercicio, implementarás una migración en un entorno de staging que simula producción. Sigue estos pasos:
- Crea una copia de tu base de datos de desarrollo y configúrala como entorno de staging
- Modifica el schema.prisma para añadir un campo 'lastLogin' de tipo DateTime al modelo User
- Genera la migración localmente con un nombre descriptivo
- Aplica la migración en el entorno de staging usando prisma migrate deploy
- Verifica que la migración se aplicó correctamente ejecutando una consulta que use el nuevo campo
- Crea un script que valide que todos los usuarios existentes tienen un valor válido en el nuevo campo
Entrega: Un archivo con el código de la migración generada y capturas de pantalla mostrando la aplicación exitosa en staging.
Pistas- Usa prisma db push para probar rápidamente en desarrollo antes de generar la migración formal
- Considera usar un valor por defecto para el nuevo campo para evitar problemas con registros existentes
- Verifica los permisos de la base de datos en staging, pueden diferir de desarrollo
Evalua tu comprension
Completa el quiz interactivo de arriba para ganar XP.