Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Spring Boot Microservices Architecture System

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.


System Overview

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

Architectural Style

  • 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)

Technology Stack

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

System Architecture

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)


Microservices Breakdown

Product-service:

  • Stateful service
  • MongoDB Atlas integration
  • CRUD operations
  • Product catalog management
  • Logging and tracing enabled

Order-service:

  • Stateful service
  • MongoDB Atlas integration
  • CRUD operations
  • Circuit Breaker pattern
  • Order workflow management

Pay-service:

  • Stateful service
  • MongoDB Atlas integration
  • Circuit Breaker enabled
  • REST communication via RestTemplate
  • Two instances for load balancing across zones

Notification-service:

  • Stateless service
  • RabbitMQ consumer
  • Event-driven notifications
  • Distributed tracing support

Gateway-service:

  • API Gateway (single entry point)
  • Request routing layer
  • Eureka integration for service discovery

Eureka Server (Multi-Zone):

  • Service registry
  • Multi-zone discovery
  • Fault tolerance layer

Communication Patterns

Synchronous:

  • REST APIs
  • RestTemplate

Asynchronous:

  • RabbitMQ event streaming

Resilience

  • Circuit Breaker pattern
  • Fallback methods
  • Failure isolation

Observability

  • ELK centralized logging
  • Zipkin distributed tracing
  • Spring Actuator monitoring

Load Balancing Strategy

  • Eureka-based discovery
  • Multiple Pay-service instances
  • Zone-based distribution

Deployment Model

  • Docker-based deployment

  • Two availability zones:

    • Zone A: Product-service + Pay-service (Instance A)
    • Zone B: Order-service + Pay-service (Instance B)

Design Principles

  • Loose coupling
  • High cohesion per service
  • Fault isolation
  • Event-driven decoupling
  • Observability-first design

Project Purpose

Academic demonstration of distributed systems architecture using Spring Cloud ecosystem, focusing on scalability, resilience, observability, and real-world microservices communication patterns.


Future Enhancements

  • Kubernetes orchestration
  • Spring Cloud Config Server
  • JWT / OAuth2 security
  • Kafka event streaming
  • Prometheus + Grafana
  • Service mesh (Istio)

Architecture Diagram

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


License

Educational / Academic Project

Releases

Packages

Contributors

Languages