Despliegue de API Express con PostgreSQL en Railway

Clase 29 de 30Curso de Backend con ExpressJS

Resumen

Implementar una API desde nuestro entorno local hasta un servicio en la nube es un paso esencial para cualquier desarrollo web moderno. En este contenido, aprenderás exactamente cómo desplegar fácilmente tu API Express utilizando Railway, una plataforma sencilla y efectiva, utilizando una base de datos PostgreSQL. Conocerás todos los pasos para configurar correctamente el entorno, validar conexiones y preparar tus datos para producción.

¿Qué es Railway y cómo puede ayudarte con tu proyecto Express?

Railway es un servicio en la nube que facilita el despliegue rápido de aplicaciones y bases de datos. Con él puedes:

  • Desplegar bases de datos PostgreSQL con pocos clics.
  • Obtener fácilmente la URL de conexión para integrarla con tu proyecto.
  • Realizar seguimiento visual del contenido y estructura de tu base de datos.
  • Asegurar costos accesibles que suelen rondar los 5 dólares mensuales.

Esto lo convierte en una opción ideal para proyectos personales o de pequeña y mediana escala.

¿Cómo crear una base de datos PostgreSQL en Railway?

Generar una base de datos con Railway es un proceso muy sencillo que se ejecuta de la siguiente manera:

  1. Ingresa al dashboard después de crear tu cuenta.
  2. Selecciona crear nuevo proyecto y escoge PostgreSQL.
  3. Railway ejecutará automáticamente todas las configuraciones necesarias.
  4. Obtendrás una URL de conexión lista para ser usada.

Con la URL que recibiste, actualiza tu archivo .env en Visual Studio Code asegurándote de ocultar adecuadamente tus credenciales para mantener seguras las conexiones a la base de datos. Recuerda siempre incluir este archivo .env en el archivo .gitignore de tu proyecto.

¿Qué comandos usar con Prisma para conectar y validar tu base de datos remota?

Utilizando Prisma, la validación y configuración de tu base de datos puede gestionarse fácilmente usando:

  • npx prisma db push para sincronizar el esquema.
  • npx prisma generate para generar el cliente Prisma actualizado.
  • npx prisma db pull valida la correcta conexión realizando comprobaciones adicionales sobre los modelos existentes.
  • Ejecuta el script de semilla usando node ruta_al_script_semilla para insertar datos iniciales en la nueva base de datos.

¿Cómo validar y gestionar datos visualmente en Railway?

Railway no solo ofrece conexión sencilla, sino también una interfaz web amigable para consultar, editar y actualizar tu información directamente. Puedes verificar si tus datos semilla se guardaron adecuadamente revisando la información que muestra Railway en tiempo real.

Puedes realizar acciones tales como:

  • Listar usuarios almacenados en la tabla.
  • Modificar datos existentes como roles, nombres y contraseñas.
  • Visualizar cambios inmediatamente luego de cualquier operación.

Este acceso visual te permitirá inspeccionar de manera dinámica y práctica la base de datos que soporta tu proyecto.

¿Cómo verificar el funcionamiento de tu API en producción desde local?

Una vez que tu API esté configurada correctamente, prueba su funcionamiento desde tu entorno local:

  • Ejecuta localmente tu servidor con npm run dev.
  • Usa Postman o herramientas similares para registrar nuevos usuarios o realizar autentificación.
  • Comprueba desde la interfaz web de Railway que la nueva información ha sido correctamente ingresada o modificada.

Recuerda que la lentitud inicial es normal, debido a la conexión remota en la nube entre tu aplicación local y la base de datos alojada en Railway.

¿Qué sigue después del MVP?

Aunque este MVP ya es una implementación funcional, aún quedan mejoras relevantes por hacer. Para esto tienes un RFC (Request For Comments) donde puedes explorar:

  • Mejoras o funcionalidades adicionales.
  • Cambios en la arquitectura de la API.
  • Implementación de características como registro profesional de médicos, pacientes, gestión de citas médicas y más.

Tu aportación y propuestas son bienvenidas, especialmente para expandir y optimizar este proyecto basado en Express.