Deployment de Postgres en Heroku: Configuración y Migraciones
Clase 25 de 27 • Curso de Backend con Node.js: Base de Datos con PostgreSQL
Resumen
¿Cómo lanzar una base de datos en producción con Heroku?
Llevar tu aplicación a producción requiere configuraciones cuidadosas, especialmente si deseas incorporar una base de datos. Hacerlo de manera segura y eficiente asegura que tu aplicación funcione de manera óptima con datos en tiempo real. Heroku ofrece una solución robusta, simplificada y gestionada para implementar bases de datos Postgres en la nube. Vamos a adentrarnos en los pasos necesarios para configurar tu base de datos en Heroku y lanzar tu aplicación a producción de manera exitosa.
¿Cómo gestionar bases de datos con Heroku?
Heroku es una opción atractiva para gestionar bases de datos debido a sus servicios de seguridad, copias de seguridad automáticas y una integración fluida con aplicaciones en la nube. Antes de lanzar una base de datos en producción, ten en cuenta los siguientes aspectos:
- Proveedores existentes: Hay múltiples proveedores de bases de datos, cada uno con características específicas. Heroku es solo uno de ellos, pero también puedes considerar Amazon o DigitalOcean según tus necesidades.
- Planes de precios: Heroku ofrece un plan gratuito para el desarrollo y planes pagos a partir de $9 al mes para producción. Elige según el nivel de seguridad y capacidad que tu proyecto requiere.
¿Cómo configurar la base de datos en Heroku?
Para integrar Postgres con tu aplicación en Heroku, sigue estos pasos prácticos:
-
Configuración inicial:
- Asegúrate de tener el cliente de comandos de Heroku instalado y configurado.
- Crea o selecciona un proyecto existente en Heroku al que quieras implementar.
-
Conexión del proyecto a Heroku:
- Si tu proyecto no está enlazado con Heroku, utiliza el comando:
heroku git:remote -a nombre-del-proyecto
- Si tu proyecto no está enlazado con Heroku, utiliza el comando:
-
Agregar el complemento de Postgres:
- Incorpora Postgres a tu aplicación con el comando:
Este comando crea una nueva base de datos y provee acceso a la URL de conexión mediante variables de entorno.heroku addons:create heroku-postgresql:hobby-dev
- Incorpora Postgres a tu aplicación con el comando:
¿Cómo configurar variables de conexión en el código?
Una vez la base de datos está configurada, ajusta tu código para que pueda conectarse a la base de datos de producción. Esto implica crear las condiciones para que tu aplicación lea variables de entorno necesarias, como el DATABASE_URL
, que Heroku proporciona automáticamente.
- Configuración del entorno: Identifica si estás en un entorno de producción o desarrollo usando una variable
isProd
. - Lectura de la URL de conexión: Define cómo tu aplicación leerá la URL en producción, usualmente almacenada como
process.env.DATABASE_URL
.
¿Cómo realizar despliegues adecuados en Heroku?
El despliegue correcto implica tanto la actualización del código como la migración de datos:
-
Realizar cambios en el código:
- Modifica tu archivo de configuración para apuntar a la base de datos de producción usando las variables adecuadas.
- Configura SSL si es necesario para la conexión segura habilitando el parámetro
requireSSL
.
-
Despliegue del código a Heroku:
- Confirma tus cambios y asegúrate de que la rama sea compatible.
- Usa:
git push heroku main
-
Ejecución de migraciones:
- Asegúrate de correr todas las migraciones de la base de datos para que tu aplicación pueda crear las tablas necesarias.
- Ejecuta el comando en el entorno de producción:
heroku run npm run migrations:run
¿Cómo solucionar problemas comunes en migraciones con Heroku?
En ocasiones, podrías enfrentar problemas de conexión o migración por configuraciones incorrectas. Verifica los siguientes aspectos para solucionarlos:
- Errores de SSL: Asegúrate de que la configuración de SSL esté habilitada correctamente, cambiando el valor del parámetro
rejectUnauthorized
. - Instalación de dependencias: Heroku por defecto instala solo las dependencias de producción. Si una herramienta de migración está en tus dependencias de desarrollo, trasládala a las de producción para garantizar que esté disponible.
Adoptar estas prácticas asegura un entorno más robusto y preparado para los desafíos del lanzamiento en producción. Mantente siempre atento a la documentación y recomendaciones específicas de Heroku para optimizar tus despliegues y gestión de datos en la nube.