A production-style Spring Boot microservices backend for an Ecommerce platform, designed using real-world architecture patterns such as service discovery, centralized configuration, event-driven communication, observability, and containerized deployment.
This project represents the backend of a modern ecommerce system built using a microservices architecture. Core business capabilities are separated into independent services such as User, Product, Order, Cart, and Notification, allowing scalability, independent deployments, and fault isolation.
The primary goal of this project is to demonstrate real backend engineering practices rather than simple CRUD APIs. It focuses on service communication, resilience, observability, security, and cloud-ready design.
- User Service – User management, authentication integration, and profile data
- Product Service – Product catalog, pricing, and inventory data
- Order Service – Order creation, order lifecycle, and event publishing
- Cart Service – User cart and checkout preparation
- Notification Service – Asynchronous event-driven notifications
- API Gateway (Spring Cloud Gateway)
- Service Registry (Eureka)
- Config Server (centralized configuration)
- RabbitMQ & Kafka (asynchronous messaging)
- PostgreSQL & MongoDB (polyglot persistence)
- Keycloak (OAuth2 / JWT authentication)
- Zipkin, Prometheus, Grafana (observability & monitoring)
Java 17 · Spring Boot · Spring Cloud (Gateway, Eureka, Config Server) · Spring Data JPA · MongoDB · PostgreSQL · Kafka · RabbitMQ · Resilience4j · Keycloak OAuth2 · OpenFeign · RestTemplate · Docker · Prometheus · Grafana · Zipkin · Maven
flowchart TB
Client[Web / Mobile Clients]
Gateway[API Gateway<br/>Routing · Security · Filters]
User[User Service<br/>MongoDB]
Product[Product Service<br/>PostgreSQL]
Order[Order Service<br/>PostgreSQL]
Cart[Cart Service<br/>Redis / DB]
Notification[Notification Service]
Eureka[Eureka<br/>Service Discovery]
Config[Config Server<br/>Centralized Config]
Kafka[Kafka]
RabbitMQ[RabbitMQ]
Zipkin[Zipkin]
Prometheus[Prometheus]
Grafana[Grafana]
Client --> Gateway
Gateway --> User
Gateway --> Product
Gateway --> Order
Gateway --> Cart
Order --> Kafka
Kafka --> Notification
User -.-> Eureka
Product -.-> Eureka
Order -.-> Eureka
Cart -.-> Eureka
User -.-> Config
Product -.-> Config
Order -.-> Config
Cart -.-> Config
User --> Zipkin
Product --> Zipkin
Order --> Zipkin
Prometheus --> Grafana
All services are fully containerized using Docker and orchestrated using Docker Compose. Environment-specific configuration is externalized using environment variables and a centralized Config Server. The system is designed to be cloud-ready and easily portable across environments.
- Clear separation of business domains using microservices
- Centralized configuration and service discovery
- Event-driven communication with Kafka and RabbitMQ
- Resilience patterns using circuit breakers
- OAuth2 security with Keycloak
- Full observability with metrics, tracing, and dashboards
- Production-style Dockerized setup
Rahul Agarwal
Backend Developer · Java · Spring Boot · Microservices
GitHub: https://github.com/Rahu0909