Portafolio · Java · Microservicios

EMPRESA_JOSESAID

Un ecosistema de once microservicios Spring Boot para las operaciones centrales de una empresa: ventas, compras, inventario, facturación, contabilidad, cumplimiento y reportes ejecutivos.

Spring Boot 4 · Java 21 · Docker Compose

Qué hace

Once servicios

Nueve servicios de negocio, más un registro de servicios (Eureka) y un solo API gateway. Cada servicio de negocio tiene su propia base de datos y usuario en PostgreSQL.

Seguridad desde el diseño

Los tokens de acceso se firman con RS256. Los servicios los validan con la clave pública de un endpoint JWKS, así que no comparten ningún secreto. Los endpoints internos no son visibles desde fuera del gateway.

Escrituras idempotentes

Encabezado opcional Idempotency-Key en pedidos, pagos, pólizas, movimientos de inventario y órdenes de compra. Una petición repetida devuelve la respuesta original; las respuestas completadas se conservan 24 horas; una clave interrumpida se retoma pasados 2 minutos.

Datos sensibles cifrados

Cifrado AES-256 para los datos fiscales de proveedores y los documentos legales, con un índice HMAC para seguir encontrando registros sin exponer los valores originales.

Observable

Métricas con Prometheus, tableros en Grafana, trazas entre servicios con Jaeger e interfaz de Kafka para revisar topics y mensajes.

Servicios

ServicioResponsabilidadAcceso
clientes-msAPI de gestión de clientesPor el gateway
usuarios-accesos-msUsuarios, roles, emisión de tokens RS256 y JWKSSolo interno
facturacion-pagos-msComprobantes, pagos y cancelacionesPor el gateway
contabilidad-msLibro contable, pólizas, cierre de periodos y balanza de comprobaciónPor el gateway
inventario-operaciones-msExistencias, reservas, lotes y órdenes de operaciónPor el gateway
compras-proveedores-msProveedores con datos fiscales cifrados, órdenes de compra y recepcionesPor el gateway
pedidos-ventas-msCotizaciones, pedidos de venta, devoluciones y métricas de ventasPor el gateway
documentos-cumplimiento-msDocumentos legales con versiones, cifrado, vencimientos y retenciónPor el gateway
reportes-ejecutivos-msKPI por periodo, cierre de reportes y exportaciónPor el gateway
discovery-msRegistro de servicios EurekaPuerto 8761
gateway-msPunto de entrada único que enruta a los servicios registradosPuerto 8080

Arquitectura

Arquitectura general de la plataforma EMPRESA_JOSESAID
Arquitectura general de la plataforma

Documentos

Ejecutarlo localmente

Requisitos: Docker 24+ y Docker Compose 2.20+. Puertos libres: 5432, 8080 y 9092.

docker network create empresa-net          # red externa compartida, una sola vez
cp .env.example .env                       # completa las contraseñas y claves
cp clientes-ms/.env.example clientes-ms/.env
docker compose up -d --build

Genera contraseñas con openssl rand -base64 24 y claves de cifrado con openssl rand -base64 32. La lista completa de variables de entorno está en el README.

HerramientaPuerto
Gateway (punto de entrada)8080
Panel de Eureka8761
Grafana3000
Prometheus9090
Jaeger16686
Kafka UI8090
PostgreSQL 175432
Kafka 4.0 (acceso desde el host)9092