Desplegar aplicación Node.js a producción con Railway y PostgreSQL

Clase 34 de 35Curso de Backend con NestJS

Resumen

Llevar una aplicación Node.js a producción es una tarea clave para asegurarse de que todo funcione de manera estable, rápida y con la infraestructura adecuada. Aquí te mostramos cómo implementar tu backend con Railway y una base de datos PostgreSQL, manejando correctamente las variables de entorno y pruebas en ambiente productivo.

¿Qué infraestructura necesito para lanzar una app Node.js a producción?

Para lanzar una aplicación de este tipo, se requiere un servidor con Node.js como runtime y también una base de datos en la nube. Railway se presenta como una opción práctica que ofrece una capa gratuita para pruebas y simplifica el despliegue, permitiendo además la integración automática con repositorios (por ejemplo, con GitHub).

  • El servidor debe tener Node.js instalado.
  • Se necesita también una base de datos, como PostgreSQL, alojada en la nube.
  • Railway permite monitoreo y escalabilidad, como añadir réplicas fácilmente.

¿Cómo configuro Railway con mi base de datos y variables de entorno?

El flujo de despliegue comienza por crear la base de datos en Railway antes que el servicio. Esto garantiza la disponibilidad de la información para la aplicación. Al desplegar, Railway ofrece las URLs y variables de conexión necesarias, que deben configurarse en el entorno de producción.

  • Primero se despliega la base de datos PostgreSQL y se obtiene la URL de conexión.
  • Las variables necesarias suelen incluir: host, puerto, nombre de la base de datos, usuario y contraseña.
  • Railway genera estos datos tanto en formato de URL única como fragmentados.
  • Configura estas variables como variables de entorno en el servicio.
  • No olvides agregar llaves como JWT Secret y API keys necesarias.

¿Cómo se hace el deployment desde el repositorio usando Railway?

Después de crear la base de datos, se vincula el repositorio donde está el backend. Railway detecta la tecnología (como Next.js) y facilita el deployment si todo está correctamente configurado.

  • Se configuran variables de entorno en Railway para el backend.
  • Es fundamental definir los comandos de build, start y pre-deploy (para migraciones).
  • Ejemplo: npm run build para construir, npm start:prot para inicializar, y un comando para migraciones en pre-deploy.
  • Railway identifica la versión de Node desde el package.json; se recomienda usar una versión superior a la veinte.
  • Con los parámetros listos, solo queda lanzar el deployment y monitorizar logs para revisar posibles errores o el avance.

¿Cómo verificar que la aplicación y base de datos funcionan correctamente en producción?

Al finalizar el deployment, Railway proporciona una URL pública que puede usarse para testear el backend. Se recomienda usar herramientas como Postman para validar endpoints y operaciones como crear y consultar usuarios, categorías y posts.

  • Cambia la URL en Postman del entorno local al de producción para probar las rutas.
  • Los endpoints protegidos requieren un JWT token generado mediante el endpoint de login.
  • Es posible crear usuarios, categorías y posts, así como probar funcionalidades avanzadas como publicación con integración AI.
  • La consola de Railway muestra logs y métricas, incluyendo uso de CPU, memoria y almacenamiento.
  • Es posible visualizar las tablas y datos mediante el visualizador web de Railway o usando la URL pública en clientes como pgAdmin o dBeaver.

¿Has probado implementar tu backend en Railway o deseas compartir alguna experiencia? Tu opinión puede ser valiosa para quienes desean dar el siguiente paso y lanzar sus aplicaciones a producción.