Skip to content

adrian0511/distributed-ecommerce-platform

Repository files navigation

🏗 DISTRIBUTED ECOMMERCE PLATAFORM

Proyecto basado en una arquitectura de microservicios utilizando Spring Boot y Spring Cloud, implementando descubrimiento de servicios, API Gateway y tolerancia a fallos mediante Circuit Breaker.

El objetivo principal es demostrar comunicación entre microservicios de forma resiliente, aplicando buenas prácticas de separación de responsabilidades y utilizando PostgreSQL como base de datos relacional.


🚀 Tecnologías Utilizadas

  • Java 25
  • Spring Boot
  • Spring Cloud Eureka (Service Discovery)
  • Spring Cloud Gateway (API Gateway)
  • OpenFeign (Comunicación entre microservicios)
  • Resilience4j (Circuit Breaker)
  • PostgreSQL
  • Spring Data JPA
  • Maven

🧩 Descripción de los Servicios

🔹 discovery-server

Servidor Eureka encargado del registro y descubrimiento dinámico de los microservicios.

🔹 api-gateway

Punto de entrada único para las solicitudes del cliente.
Centraliza el enrutamiento hacia los servicios registrados en Eureka.

🔹 user-service

Microservicio encargado de la gestión de usuarios.
Persiste la información en PostgreSQL utilizando Spring Data JPA.

🔹 order-service

Microservicio encargado de la creación de órdenes.
Se comunica con otros servicios mediante OpenFeign y está protegido con Circuit Breaker para evitar fallos en cascada.


🏛 Flujo General de la Arquitectura

Cliente

API Gateway

Microservicios (descubiertos dinámicamente mediante Eureka)

  • El Gateway enruta las peticiones al servicio correspondiente.
  • Los microservicios se registran automáticamente en Eureka.
  • La comunicación entre servicios se realiza mediante OpenFeign.
  • Las llamadas remotas están protegidas con Circuit Breaker (Resilience4j).

🛡 Estrategia de Resiliencia

Se implementa Circuit Breaker para proteger la comunicación entre microservicios y evitar que un fallo en un servicio afecte a los demás.

Comportamiento esperado

Escenario Resultado
Error de negocio (ej. usuario no encontrado) 404
Servicio no disponible 503
Error de conexión / timeout Se ejecuta fallback

Se realiza una separación clara entre:

  • Excepciones de negocio (404, validaciones)
  • Fallos de infraestructura (timeout, conexión rechazada, servicio caído)

De esta manera, el circuito no se abre incorrectamente ante errores funcionales.


🗄 Base de Datos

Cada microservicio se conecta de forma independiente a PostgreSQL.

Ejemplo de configuración:

spring:
  datasource:
    url: jdbc:postgresql://localhost:5432/service_db
    username: tu_usuario
    password: tu_password

Se utiliza Spring Data JPA para la persistencia de datos.


🧪 Cómo Ejecutar el Proyecto

1️⃣ Iniciar PostgreSQL

Asegurarse de que PostgreSQL esté en ejecución y que las bases de datos necesarias estén creadas.

2️⃣ Iniciar Eureka Server

cd eureka-server
mvn spring-boot:run

3️⃣ Iniciar los Microservicios

Ejecutar cada servicio individualmente:

mvn spring-boot:run

4️⃣ Acceder a través del Gateway

http://localhost:8080

🎯 Conceptos Demostrados

  • Descubrimiento de servicios con Eureka
  • Enrutamiento centralizado con API Gateway
  • Comunicación entre microservicios con OpenFeign
  • Tolerancia a fallos con Circuit Breaker
  • Separación adecuada entre errores de negocio e infraestructura
  • Integración con PostgreSQL usando JPA
  • Arquitectura distribuida básica con Spring Cloud

👨‍💻 Autor

Adrian Garces


⭐ Objetivo del Proyecto

Demostrar una arquitectura de microservicios funcional aplicando patrones reales de Spring Cloud, enfocándose en descubrimiento de servicios, gateway y resiliencia ante fallos mediante Circuit Breaker, utilizando PostgreSQL como base de datos relacional.

About

Microservicios con Spring Boot usando Eureka, API Gateway y Circuit Breaker (Resiliece4j) con PostgreSQL

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages