Buenas prácticas para migraciones en producción

Clase 26 de 27Curso de Backend con Node.js: Base de Datos con PostgreSQL

Resumen

¿Cómo manejar migraciones en producción?

En el entorno de desarrollo, manejar migraciones en la base de datos es sencillo, pero cuando se trata de producción, la situación se complica. Existen consideraciones críticas que debemos tener en cuenta para asegurar que nuestras migraciones se ejecuten sin problemas y no causen interrupciones en nuestros servicios. Este artículo aborda esos aspectos y provee recomendaciones prácticas para manejar las migraciones en producción de manera efectiva.

¿Qué problemas pueden surgir con los esquemas en migraciones?

Un error común al lidiar con las migraciones es usar un esquema global que pueda corromperse. Por ejemplo:

  • Inconsistencias en el esquema: Si se modifica un atributo o tabla en el esquema ya creado, crear una nueva migración o desplegar puede causar conflictos.
  • Problemas con migraciones repetitivas: Intentar correr una migración de una columna ya existente puede generar errores, como el problema de 'role' mencionado en el texto.

¿Cuál es la importancia de una migración inicial adecuada?

Una migración inicial bien planteada es crucial al transitar al entorno de producción. Antes del primer release, se recomienda tener un esquema base que contemple toda la estructura de la base de datos:

  • Crea una migración inicial eficiente: Conten con todas las tablas y configuraciones básicas antes de lanzar el sistema en producción.
  • Evita la necesidad de iniar de cero: Una vez la base de datos está en producción, reiniciar sin datos de respaldo puede ser desastroso.

¿Cómo gestionar la versión del esquema para evitar corrupción?

Una práctica recomendada es separar el esquema de base de datos usado para el desarrollo del esquema de migración. Esto puede parecer contraintuitivo, dado que se repite código, pero garantiza que las migraciones se ejecuten de manera ordenada y exacta.

  • Repetir código en migraciones: Añadir manualmente los atributos sobre cada método de creación para asegurar que las migraciones reflejen fielmente la versión deseada.
  • No confiar completamente en esquemas globales: Puede ser que un esquema global no esté completamente versionado, por lo tanto, se debe tratar cada migración de manera única y específica.

¿Cómo solucionar errores comunes en migraciones?

Cuando se enfrentan problemas durante las migraciones, a menudo es necesario realizar un rollback o revert que puede eliminar migraciones o datos actuales. Sin embargo, esta operación es extremadamente delicada y debe realizarse con cautela para evitar pérdidas de datos:

  • Rollback para resolver errores de esquema: Si algún error es serio y solo hay datos de prueba, puede ser seguro realizar un rollback, pero asegúrate de tener copias de seguridad antes de intentarlo.
  • Identificar errores específicos: Lee los logs de errores y ajusta el esquema de migración para corregir problemas como atributos únicos que pueden estar causando conflictos.

Conclusión y desafío

Finalmente, al trabajar con migraciones para proyectos que están en producción, es esencial entender el flujo de cómo se crean, despliegan y gestionan dichas migraciones. Manejar cada migración con su propio esquema único versionado puede prevenir errores constantes y garantizar un sistema sólido y fiable en producción. Para cimentar este entendimiento, te desafío a crear una única migración que contenga toda la estructura inicial de tu base de datos, asegurando así un primer lanzamiento limpio y estructurado al entorno productivo.