Deployment de Postgres en Heroku: Configuración y Migraciones

Clase 25 de 27Curso 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:

  1. 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.
  2. Conexión del proyecto a Heroku:

    • Si tu proyecto no está enlazado con Heroku, utiliza el comando:
      heroku git:remote -a nombre-del-proyecto
      
  3. Agregar el complemento de Postgres:

    • Incorpora Postgres a tu aplicación con el comando:
      heroku addons:create heroku-postgresql:hobby-dev
      
      Este comando crea una nueva base de datos y provee acceso a la URL de conexión mediante variables de entorno.

¿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:

  1. 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.
  2. Despliegue del código a Heroku:

    • Confirma tus cambios y asegúrate de que la rama sea compatible.
    • Usa:
      git push heroku main
      
  3. 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.