Guía de Heroku: despliega tu primera app en Node.js sin preocuparte por la infraestructura

·

·

Guía de Heroku: despliega tu primera app en Node.js sin preocuparte por la infraestructura

Heroku es una plataforma como servicio (PaaS) que permite a desarrolladores desplegar, escalar y operar aplicaciones sin gestionar servidores físicos. Gracias a su filosofía git push = deploy, puedes centrarte en el código y olvidar la infraestructura. En esta guía aprenderás paso a paso cómo crear y desplegar una aplicación básica de Node.js en Heroku.

1. Ventajas de usar Heroku

  • Despliegue rápido: con un solo comando.
  • Escalado sencillo: aumenta o disminuye dynos al instante.
  • Complementos: bases de datos, colas, servicios de terceros.
  • Logs centralizados: acceso unificado a registros de la app.

2. Requisitos previos

Preparando tu aplicación Node.js

2.1 Inicialización del proyecto

mkdir mi-app-heroku
cd mi-app-heroku
npm init -y

Esto crea un package.json básico con valores por defecto. Luego instalaremos Express como ejemplo de framework HTTP.

npm install express

2.2 Estructura de archivos recomendada

  • index.js: punto de entrada de la app.
  • package.json: dependencias y scripts.
  • Procfile: instrucción de arranque para Heroku.

2.3 Configurando index.js

const express = require(express)
const app = express()

app.get(/, (req, res) => {
nbspnbspres.send(¡Hola, Heroku desde Node.js!)
})

const PORT = process.env.PORT 3000
app.listen(PORT, () => {
nbspnbspconsole.log(Servidor corriendo en puerto {PORT})
})

2.4 Definiendo scripts en package.json

Modifica package.json para incluir:

scripts: {
nbspnbspstart: node index.js
}

2.5 Creando el Procfile

Heroku detecta automáticamente aplicaciones de Node.js, pero es buena práctica definir el Procfile:

web: npm start

Despliegue en Heroku

3.1 Instalación y autenticación con Heroku CLI

heroku login

Sigue las instrucciones en el navegador para autenticarte. Una vez listo, vuelve al terminal.

3.2 Inicializando Git y creando la app en Heroku

git init
git add .
git commit -m Primer commit: app Node.js para Heroku
heroku create nombre-de-tu-app

El comando heroku create genera una URL única (https://nombre-de-tu-app.herokuapp.com) y un remote Git llamado heroku.

3.3 Push y despliegue automático

git push heroku main

Si tu rama principal se llama master, reemplaza main por master. Tras unos segundos, Heroku instalará dependencias, ejecutará build y lanzará tu app.

3.4 Accediendo a tu aplicación

Abre en tu navegador https://nombre-de-tu-app.herokuapp.com y verás el mensaje ¡Hola, Heroku desde Node.js!

Configuración avanzada

4.1 Variables de entorno

Para añadir credenciales o configuraciones sensibles utiliza heroku config:set:

Comando Descripción
heroku config:set NODE_ENV=production Define el entorno de ejecución.
heroku config:set MONGO_URI=mongodb://… Agrega cadena de conexión a base de datos.

4.2 Logs y monitoreo

heroku logs –tail

Con –tail obtienes un stream en tiempo real de logs. Para métricas y alertas, revisa el dashboard.

4.3 Escalado de dynos

Aumenta la capacidad de cómputo con:

heroku ps:scale web=2

Esto levanta 2 dynos web. Útil para soportar mayor tráfico. Puedes volver a 1 dyno para ahorrar recursos.

Buenas prácticas y consejos

  • Procfile explícito: evita detecciones inciertas.
  • Archivos estáticos: usa servicios CDN o complementos como Heroku Static.
  • Entornos separados: crea apps de staging y producción.
  • Complementos gestionados: Postgres, Redis, Mailgun, etc.
  • Revisión de costos: dynos adicionales y complementos pueden generar facturación.

Conclusión

Heroku simplifica el ciclo de vida de tus aplicaciones Node.js. Con una configuración mínima y comandos intuitivos, podrás concentrarte en crear valor y olvidarte de mantener servidores. Explora su ecosistema de complementos, monitoreo y escalado para llevar tus proyectos al siguiente nivel.

Artículo elaborado como referencia rápida. Para más detalles visita la documentación oficial de Heroku Dev Center.



Leave a Reply

Your email address will not be published. Required fields are marked *