En este módulo, aprenderás cómo desplegar una aplicación Node.js en Heroku, una plataforma como servicio (PaaS) que permite a los desarrolladores construir, ejecutar y operar aplicaciones completamente en la nube. Heroku es conocido por su simplicidad y facilidad de uso, lo que lo convierte en una excelente opción para desplegar aplicaciones Node.js.
Contenido
Introducción a Heroku
Heroku es una plataforma en la nube que permite a los desarrolladores desplegar, gestionar y escalar aplicaciones sin preocuparse por la infraestructura subyacente. Heroku soporta múltiples lenguajes de programación, incluyendo Node.js.
Ventajas de Usar Heroku
- Despliegue Rápido: Puedes desplegar tu aplicación con unos pocos comandos.
- Escalabilidad: Escala tu aplicación fácilmente añadiendo más dynos (unidades de computación).
- Add-ons: Amplía las capacidades de tu aplicación con servicios adicionales como bases de datos, monitoreo, etc.
- Integración Continua: Soporte para CI/CD para un flujo de trabajo de desarrollo más eficiente.
Preparación de la Aplicación
Antes de desplegar tu aplicación en Heroku, asegúrate de que tu aplicación Node.js esté lista para producción. Aquí hay algunos pasos que debes seguir:
-
Estructura del Proyecto: Asegúrate de que tu proyecto tenga una estructura clara y organizada. Un ejemplo básico de estructura de proyecto podría ser:
my-app/ ├── node_modules/ ├── public/ ├── src/ │ ├── index.js │ └── ... ├── .gitignore ├── package.json └── README.md
-
Archivo
package.json
: Asegúrate de que tu archivopackage.json
tenga un script de inicio definido. Heroku usará este script para arrancar tu aplicación.{ "name": "my-app", "version": "1.0.0", "main": "src/index.js", "scripts": { "start": "node src/index.js" }, "dependencies": { "express": "^4.17.1" } }
-
Archivo
.gitignore
: Asegúrate de tener un archivo.gitignore
para excluir archivos y directorios innecesarios del control de versiones.node_modules/ .env
Configuración de Heroku CLI
Para interactuar con Heroku desde la línea de comandos, necesitas instalar y configurar Heroku CLI.
Instalación de Heroku CLI
Sigue las instrucciones en la documentación oficial de Heroku para instalar Heroku CLI en tu sistema operativo.
Inicio de Sesión en Heroku
Una vez instalado, abre tu terminal y ejecuta el siguiente comando para iniciar sesión en tu cuenta de Heroku:
Esto abrirá una ventana del navegador donde podrás ingresar tus credenciales de Heroku.
Despliegue de la Aplicación
Inicializar un Repositorio Git
Heroku utiliza Git para gestionar el despliegue de aplicaciones. Si aún no has inicializado un repositorio Git en tu proyecto, hazlo ahora:
Crear una Aplicación en Heroku
Crea una nueva aplicación en Heroku con el siguiente comando:
Heroku asignará un nombre único a tu aplicación si no proporcionas uno.
Desplegar la Aplicación
Para desplegar tu aplicación, simplemente empuja tu código al repositorio remoto de Heroku:
Heroku detectará automáticamente que tu aplicación es una aplicación Node.js y ejecutará los pasos necesarios para desplegarla.
Manejo de Variables de Entorno
Las variables de entorno son esenciales para configurar tu aplicación en diferentes entornos (desarrollo, producción, etc.). Puedes configurar variables de entorno en Heroku usando el siguiente comando:
Para ver todas las variables de entorno configuradas, usa:
Escalado de la Aplicación
Heroku permite escalar tu aplicación añadiendo más dynos. Para escalar tu aplicación, usa el siguiente comando:
Esto añadirá un segundo dyno a tu aplicación, permitiendo manejar más tráfico.
Monitoreo y Logs
Heroku proporciona herramientas para monitorear y ver los logs de tu aplicación. Para ver los logs en tiempo real, usa:
Para acceder al panel de monitoreo, visita el dashboard de Heroku y selecciona tu aplicación.
Ejercicio Práctico
Objetivo
Desplegar una aplicación Node.js simple en Heroku.
Pasos
-
Crear una Aplicación Node.js Simple:
// src/index.js const express = require('express'); const app = express(); const PORT = process.env.PORT || 3000; app.get('/', (req, res) => { res.send('Hello, Heroku!'); }); app.listen(PORT, () => { console.log(`Server is running on port ${PORT}`); });
-
Inicializar un Repositorio Git:
git init git add . git commit -m "Initial commit"
-
Crear una Aplicación en Heroku:
heroku create my-simple-app
-
Desplegar la Aplicación:
git push heroku main
-
Verificar el Despliegue:
Abre el navegador y visita
https://my-simple-app.herokuapp.com
. Deberías ver el mensaje "Hello, Heroku!".
Solución
Si has seguido todos los pasos correctamente, tu aplicación debería estar desplegada y accesible en Heroku.
Conclusión
En este módulo, has aprendido cómo desplegar una aplicación Node.js en Heroku. Has cubierto desde la preparación de la aplicación hasta el manejo de variables de entorno, escalado y monitoreo. Ahora estás listo para desplegar tus propias aplicaciones en la nube usando Heroku. En el próximo módulo, exploraremos la integración y el despliegue continuos (CI/CD) para automatizar el proceso de despliegue.
Curso de Node.js
Módulo 1: Introducción a Node.js
Módulo 2: Conceptos Básicos
Módulo 3: Sistema de Archivos y E/S
Módulo 4: HTTP y Servidores Web
- Creando un Servidor HTTP Simple
- Manejo de Solicitudes y Respuestas
- Sirviendo Archivos Estáticos
- Enrutamiento
Módulo 5: NPM y Gestión de Paquetes
- Introducción a NPM
- Instalación y Uso de Paquetes
- Creación y Publicación de Paquetes
- Versionado Semántico
Módulo 6: Framework Express.js
- Introducción a Express.js
- Configuración de una Aplicación Express
- Middleware
- Enrutamiento en Express
- Manejo de Errores
Módulo 7: Bases de Datos y ORMs
- Introducción a las Bases de Datos
- Usando MongoDB con Mongoose
- Usando Bases de Datos SQL con Sequelize
- Operaciones CRUD
Módulo 8: Autenticación y Autorización
- Introducción a la Autenticación
- Usando Passport.js
- Autenticación JWT
- Control de Acceso Basado en Roles
Módulo 9: Pruebas y Depuración
- Introducción a las Pruebas
- Pruebas Unitarias con Mocha y Chai
- Pruebas de Integración
- Depuración de Aplicaciones Node.js
Módulo 10: Temas Avanzados
- Módulo Cluster
- Hilos de Trabajo
- Optimización del Rendimiento
- Construcción de APIs RESTful
- GraphQL con Node.js
Módulo 11: Despliegue y DevOps
- Variables de Entorno
- Usando PM2 para la Gestión de Procesos
- Desplegando en Heroku
- Integración y Despliegue Continuos