Este proyecto implementa un conjunto de microservicios desarrollados en Java utilizando Spring Boot y Spring Cloud. Cada microservicio cumple un rol específico y se conecta a través de herramientas como Eureka, OAuth2 y un Gateway. El objetivo principal es mostrar una arquitectura basada en microservicios, altamente escalable, modular y desacoplada.
La arquitectura consta de los siguientes componentes:
- Config Server: Servidor centralizado de configuración.
- Eureka Server: Servidor de descubrimiento de servicios.
- Gateway Server: Servidor para enrutar peticiones a los microservicios.
- OAuth2 Server: Servidor de autenticación y autorización con OAuth2.
- Microservicios de dominio:
- Usuarios
- Ítems
- Productos
- Docker Compose: Orquestador para el despliegue local.
Cada componente del proyecto está alojado en un repositorio independiente:
Contiene el archivo docker-compose.yml y configuraciones relacionadas para desplegar todos los servicios en contenedores Docker.
- Implementa un servidor de configuración centralizado usando Spring Cloud Config.
- Las configuraciones se obtienen desde el repositorio microservicio-config-files.
- Servidor de registro y descubrimiento de servicios basado en Netflix Eureka.
- Permite que los microservicios se registren dinámicamente y se descubran entre sí.
- Implementa un API Gateway con Spring Cloud Gateway.
- Se encarga de enrutar las peticiones hacia los diferentes microservicios y aplicar reglas de seguridad.
5. Auth2 Server
- Servidor de autenticación y autorización.
- Implementa OAuth2 para gestionar accesos seguros a los microservicios.
- Gestiona la información de los usuarios.
- Incluye endpoints para operaciones CRUD.
- Gestiona la información de ítems.
- Se conecta al microservicio de productos para obtener detalles adicionales.
- Gestiona la información de productos.
- Incluye operaciones CRUD.
9. Libs Commons
- Biblioteca de código reutilizable para los microservicios.
- Contiene clases comunes como modelos y utilidades.
- Repositorio centralizado que almacena los archivos de configuración utilizados por el Config Server.
- Desacoplamiento: Cada microservicio es independiente y cumple un rol específico.
- Escalabilidad: Arquitectura basada en Eureka para escalar servicios según la demanda.
- Seguridad: Integración de OAuth2 para gestionar la autenticación y autorización.
- Configuración Centralizada: Uso de Spring Cloud Config para mantener configuraciones en un solo lugar.
- Despliegue con Docker: Los servicios pueden ejecutarse fácilmente en contenedores Docker con Docker Compose.
- Java 21.
- Maven 3.8 o superior.
- Docker y Docker Compose instalados.
- Postman (opcional) para probar los servicios.
- Clona cada repositorio de este proyecto.
- Levantar una base de datos Oracle SQL por medio de docker.
- Configura las variables de entorno en el archivo
application.propertiesoapplication.ymlsegún corresponda. - Navega al repositorio
microservicio-docker-composey ejecuta:
$ sudo docker-compose up --build-
Accede a los siguientes servicios:
- Eureka Dashboard: http://localhost:8761
- Gateway Server: http://localhost:8080