A distributed, cloud-native microservices system built using Spring Boot and Spring Cloud, demonstrating enterprise-grade distributed system design principles including service discovery, API gateway routing, synchronous and asynchronous communication, resilience patterns, and full observability stack integration.
This system is composed of multiple independently deployable microservices that collectively implement a complete distributed business workflow.
The architecture simulates a real-world production-grade system with:
- Microservices decomposition
- Fault-tolerant communication
- Event-driven messaging
- Distributed tracing and centralized logging
- Multi-zone deployment strategy with load balancing
- Microservices Architecture
- Domain-driven design (DDD-inspired decomposition)
- API Gateway pattern
- Service Discovery (Eureka)
- Event-driven architecture (RabbitMQ)
- Synchronous REST communication (RestTemplate)
- Client-side load balancing
- Resilience engineering (Circuit Breaker + Fallback)
Backend:
- Java 17+
- Spring Boot
- Spring Cloud Netflix Eureka
- Spring Cloud Gateway
- Spring Web (REST APIs)
- RestTemplate
Messaging:
- RabbitMQ (asynchronous communication)
Resilience:
- Circuit Breaker + Fallback mechanisms
Data Layer:
- MongoDB Atlas (cloud-hosted NoSQL databases)
Observability:
- Spring Boot Actuator
- ELK Stack (Elasticsearch, Logstash, Kibana)
- Zipkin (distributed tracing)
Infrastructure:
- Docker
- Multi-zone deployment design
Client → API Gateway → Eureka Service Discovery → Microservices
Product-service ↔ MongoDB Atlas Order-service ↔ MongoDB Atlas Pay-service (2 instances for load balancing across zones) Notification-service (RabbitMQ consumer)
- Stateful service
- MongoDB Atlas integration
- CRUD operations
- Product catalog management
- Logging and tracing enabled
- Stateful service
- MongoDB Atlas integration
- CRUD operations
- Circuit Breaker pattern
- Order workflow management
- Stateful service
- MongoDB Atlas integration
- Circuit Breaker enabled
- REST communication via RestTemplate
- Two instances for load balancing across zones
- Stateless service
- RabbitMQ consumer
- Event-driven notifications
- Distributed tracing support
- API Gateway (single entry point)
- Request routing layer
- Eureka integration for service discovery
- Service registry
- Multi-zone discovery
- Fault tolerance layer
Synchronous:
- REST APIs
- RestTemplate
Asynchronous:
- RabbitMQ event streaming
- Circuit Breaker pattern
- Fallback methods
- Failure isolation
- ELK centralized logging
- Zipkin distributed tracing
- Spring Actuator monitoring
- Eureka-based discovery
- Multiple Pay-service instances
- Zone-based distribution
-
Docker-based deployment
-
Two availability zones:
- Zone A: Product-service + Pay-service (Instance A)
- Zone B: Order-service + Pay-service (Instance B)
- Loose coupling
- High cohesion per service
- Fault isolation
- Event-driven decoupling
- Observability-first design
Academic demonstration of distributed systems architecture using Spring Cloud ecosystem, focusing on scalability, resilience, observability, and real-world microservices communication patterns.
- Kubernetes orchestration
- Spring Cloud Config Server
- JWT / OAuth2 security
- Kafka event streaming
- Prometheus + Grafana
- Service mesh (Istio)
Client → API Gateway → Eureka → Microservices Cluster
Product Service → MongoDB Atlas Order Service → MongoDB Atlas Pay Service (A/B instances across zones) Notification Service ← RabbitMQ Events
Educational / Academic Project