Este modulo contiene la infraestructura base de la plataforma:
- Config Server
- Registry Server/Eureka
- Gateway
config-repo- red compartida
ms-net
Kafka, observabilidad y microservicios viven en modulos separados, pero se integran con esta infraestructura.
| Componente | Rol |
|---|---|
config-server |
Sirve configuracion centralizada desde infra/config-repo |
registry-server |
Eureka para registro y descubrimiento |
gateway |
Punto unico de entrada HTTP y validacion JWT en el borde |
config-repo |
Configuracion por servicio y perfil |
ms-net |
Red Docker compartida de produccion |
| Servicio | DEV | PROD |
|---|---|---|
| Config Server | 7071 | 7072 |
| Registry Server | 7081 | 7082 |
| Gateway | 7091 | 7092 |
En Docker prod, los servicios se comunican por nombre interno:
config-server:7071
registry-server:7081
gateway:7091
infra/docker-compose.yml crea la red:
ms-net
La consumen como red externa:
authcatalogoproductoorden-mspago-mskafkaobservability
infra debe levantarse primero en prod para crear ms-net.
cliente -> gateway -> microservicios
-> Eureka
-> Config Server -> config-repo
microservicios -> kafka
observability -> metricas/logs de infra y services
Contiene la configuracion externa por servicio y perfil.
Archivos principales:
auth-dev.yml
auth-prod.yml
catalogo-dev.yml
catalogo-prod.yml
producto-dev.yml
producto-prod.yml
orden-ms-dev.yml
orden-ms-prod.yml
pago-ms-dev.yml
pago-ms-prod.yml
gateway-dev.yml
gateway-prod.yml
registry-server-dev.yml
registry-server-prod.yml
Los microservicios importan Config Server desde su application.yml:
spring:
config:
import: "optional:configserver:${CONFIG_SERVER_URL:http://localhost:7071}"| Servicio | Config centralizada | Eureka | Gateway | Observability |
|---|---|---|---|---|
auth |
si | si | si | si |
catalogo |
si | si | si | si |
producto |
si | si | si | si |
orden-ms |
si | si | si | si |
pago-ms |
si | si | si | si |
Rutas principales:
| Ruta | Servicio |
|---|---|
/auth/** |
auth |
/api/v1/categorias/** |
catalogo |
/api/v1/productos/** |
producto |
/ordenes/** |
orden-ms |
/pagos/** |
pago-ms |
En dev tambien se exponen rutas Swagger para los servicios que lo tienen habilitado.
La seguridad principal esta centralizada en Gateway:
/auth/**es publico.- Actuator basico del Gateway queda publico para health/info/prometheus.
- Swagger dev queda publico.
- El resto de rutas requiere JWT.
Esto significa que /ordenes/** y /pagos/** quedan protegidos cuando se accede por Gateway.
Nota: los puertos directos de los microservicios se mantienen para laboratorio y pruebas. Para una produccion mas estricta, se pueden dejar sin publicar y consumirlos solo por ms-net.
En dev normalmente se ejecutan los componentes Java con Maven.
Config Server:
cd C:\ms1\ProyectosMS2026\infra\config-server
mvn spring-boot:runRegistry Server:
cd C:\ms1\ProyectosMS2026\infra\registry-server
.\mvnw.cmd spring-boot:runGateway:
cd C:\ms1\ProyectosMS2026\infra\gateway
.\mvnw.cmd spring-boot:runValidaciones:
http://localhost:7071/catalogo/dev
http://localhost:7071/orden-ms/dev
http://localhost:7071/pago-ms/dev
http://localhost:7081
http://localhost:7091/actuator/health
Primero infra:
cd C:\ms1\ProyectosMS2026\infra
docker compose up -dLuego Kafka:
cd C:\ms1\ProyectosMS2026\kafka
docker compose up -dLuego microservicios, por ejemplo:
cd C:\ms1\ProyectosMS2026\services\auth
docker compose up -d
cd C:\ms1\ProyectosMS2026\services\catalogo
docker compose up -d
cd C:\ms1\ProyectosMS2026\services\producto
docker compose up -d
cd C:\ms1\ProyectosMS2026\services\orden-ms
docker compose up -d
cd C:\ms1\ProyectosMS2026\services\pago-ms
docker compose up -dFinalmente observability:
cd C:\ms1\ProyectosMS2026\observability
docker compose up -dValidaciones:
http://localhost:7072/orden-ms/prod
http://localhost:7072/pago-ms/prod
http://localhost:7082
http://localhost:7092/actuator/health
infra no levanta Prometheus, Loki ni Grafana. Eso vive en observability.
La plataforma expone:
- Actuator en Gateway.
- Actuator/Prometheus en microservicios.
- Logs de Gateway en
infra/gateway/logs.
observability consume metricas y logs desde:
gatewaycatalogoproductoorden-mspago-mskafka-exporter
Revisar:
- que Config Server este arriba
- que
CONFIG_SERVER_URLapunte ahttp://config-server:7071en Docker - que exista el archivo
{spring.application.name}-{profile}.ymlenconfig-repo
Revisar:
- dev:
http://localhost:7081/eureka - prod:
http://registry-server:7081/eureka - que el servicio tenga dependencia Eureka Client
Revisar:
- que el servicio aparezca en Eureka
- que la ruta exista en
gateway-dev.ymlogateway-prod.yml - que el JWT sea valido si la ruta no es publica
Dentro de Docker no usar localhost para otros contenedores.
Usar:
config-serverregistry-serverkafka- nombre del servicio en
ms-net
- Config Server
- Registry Server/Eureka
- Gateway con
lb:// - Config centralizada para
auth,catalogo,producto,orden-ms,pago-ms - Red compartida
ms-net - Seguridad JWT en Gateway
- Integracion Kafka para
orden-msypago-ms - Configuracion Eureka dev con
localhostestable - Rutas Gateway para
/api/v1/ordenes/**y/api/v1/pagos/** - Actuator/Prometheus en servicios integrados
- Logs centralizados consumibles por observability
- Politicas avanzadas de trafico en Gateway
- Seguridad por microservicio como defensa en profundidad
- Integracion con frontend
git tag -a vs09-kafka -m "eda con vs09-kafka"
git push origin vs09-kafka