Bienvenido al repositorio del Gateway. Este servicio actúa como el punto de entrada único (Single Entry Point) para nuestra arquitectura de microservicios, gestionando el tráfico, la seguridad y el enrutamiento inteligente hacia los servicios internos como facturasEditor.
Es el "portero" profesional que asegura que cada petición llegue a su destino correcto de forma segura, eficiente y centralizada.
Este Gateway no es solo un proxy inverso, ofrece servicios críticos para la infraestructura:
- 🚦 Enrutamiento Dinámico: Redirige las peticiones entrantes a los microservicios correspondientes basándose en la URL.
- 🛡️ Capa de Seguridad Centralizada: Maneja la validación de tokens y headers de seguridad antes de que el tráfico toque los servicios internos.
- ⚖️ Balanceo de Carga: (Opcional) Distribuye el tráfico entre múltiples instancias para asegurar alta disponibilidad.
- 🔍 Monitoreo y Logs: Centraliza el registro de accesos para un seguimiento y depuración más sencillos de toda la red.
- 🐳 Docker Ready: Completamente contenerizado para un despliegue rápido y consistente en cualquier entorno.
Diseñado para ser ligero y escalable:
- Core: Node.js & Express (Motor de enrutamiento de alto rendimiento).
- Proxy:
http-proxy-middleware/express-http-proxy. - Seguridad: Helmet & Rate Limiting.
- Contenerización: Docker.
- Configuración: Variables de entorno (
.env).
Para ejecutar este proyecto localmente, asegúrate de tener:
- Docker (Recomendado para producción/test).
- Node.js v16+ (Para desarrollo local).
- Acceso a los servicios destino (ej.
facturasEditor) corriendo en tu red.
-
Clona el repositorio:
git clone [https://github.com/DiLe0n/Gateway.git](https://github.com/DiLe0n/Gateway.git) cd Gateway -
Configura el entorno: Crea un archivo
.envbasado en el ejemplo:PORT=8080 FACTURAS_SERVICE_URL=[http://host.docker.internal:3000](http://host.docker.internal:3000)
-
Construye y corre el contenedor:
docker build -t app-gateway . docker run -p 8080:8080 --env-file .env app-gateway
-
Instala las dependencias:
npm install
-
Inicia el servidor en modo desarrollo:
npm run dev
El Gateway escuchará en
http://localhost:8080por defecto.
El Gateway expone las siguientes rutas públicas y privadas:
| Ruta Externa | Servicio Destino | Descripción | Autenticación |
|---|---|---|---|
/api/facturas/** |
facturasEditor |
Gestión y protección de Excel | ❌ Pública / ✅ Opcional |
/api/users/** |
UserService |
(Futuro) Gestión de usuarios | 🔒 Requerida |
/health |
Gateway |
Verificación de estado del sistema | ❌ Pública |
Gateway/
├── src/
│ ├── routes/ # Definición de rutas y proxies
│ ├── middlewares/ # Lógica de auth, logs y rate-limit
│ ├── config/ # Configuración del entorno
│ └── app.js # Punto de entrada de la aplicación
├── Dockerfile # Instrucciones de construcción Docker
├── .env.example # Plantilla de variables de entorno
└── package.json # Dependencias del proyecto
-
Haz un Fork del repositorio.
-
Crea tu rama (git checkout -b feature/MejoraSeguridad).
-
Haz Commit de tus cambios.
-
Haz Push a la rama.
-
Abre un Pull Request.
Este proyecto está bajo la licencia ISC. Siéntete libre de usarlo y adaptarlo a tu infraestructura.