This project is a production-ready Microservices Banking Application built using Java, Spring Boot, and Spring Cloud. It demonstrates the transition from monolithic to cloud-native architecture, strictly adhering to the 15-Factor App methodology.
🚀 Kubernetes Version:
To see the Kubernetes and Helm implementation of this project, please switch to the k8s-implementation branch.
This project implements a complete microservices landscape including:
- Accounts Microservice: Manages customer bank accounts.
- Cards Microservice: Handles credit and debit card operations.
- Loans Microservice: Manages loan processing and data.
- Config Server: Centralized configuration management backed by Git.
- Service Discovery: Netflix Eureka for dynamic service registration.
- API Gateway: Spring Cloud Gateway for routing, filtering, and cross-cutting concerns.
- Resilience4j: Implementation of Circuit Breaker, Retry, and Rate Limiter patterns.
- Prometheus & Grafana: For metrics collection and visualization.
- Loki & Alloy: For distributed log aggregation.
- Tempo: For distributed tracing.
- OAuth2 & OpenID Connect: Secured using Keycloak and Spring Security.
- Event-Driven: Async communication using RabbitMQ and Spring Cloud Stream.
- Java 21
- Spring Boot 3.0 (with Spring BOM)
- Spring Cloud 2022.0
- Docker & Docker Compose
- Maven
-
Build the Project:
mvn clean install -DskipTests
(This creates the Docker images using the Jib plugin)
-
Run with Docker Compose:
docker-compose up -d
-
Access Services:
- Eureka Dashboard:
http://localhost:8070 - Gateway Server:
http://localhost:8072 - Grafana:
http://localhost:3000
- Eureka Dashboard:
Divyanshu Pandey