Skip to content

RuthalaKiran/BankApplicationMicroservices

Repository files navigation

Bank Application – Microservices Architecture

A fully functional Banking System built using Spring Boot Microservices, Eureka Service Registry, API Gateway, MongoDB, Docker, and Resilience4j Circuit Breakers.

This system supports:

  • Creating bank accounts
  • Deposits, Withdrawals, Transfers
  • Storing transaction history
  • Sending notifications
  • Service discovery & load balancing
  • Fault tolerance with circuit breakers

📌 Microservices Included

Service Port Description
Eureka Server 8761 Service registry & discovery
API Gateway 8080 Routes incoming client requests
Account Service 8081 Manages account creation & balance updates
Transaction Service 8082 Handles deposit/withdraw/transfer
Notification Service 8083 Sends transaction notifications
MongoDB 27017 Shared database container

Architecture Diagram

Architecture Diagram

🛠 Tech Stack

  • Java 17
  • Spring Boot 3
  • Spring Cloud Netflix Eureka
  • Spring Cloud Gateway
  • MongoDB
  • RestTemplate
  • Resilience4j Circuit Breaker
  • Docker & Docker Compose
  • SLF4J + Logback Logging
  • JUnit + Mockito

📂 Project Structure

BankApp-Microservices/
 ├── Eureka-Server/
 ├── ApiGateway/
 ├── Account-Service/
 ├── Transaction-Service/
 ├── Notification-Service/
 ├── docker-compose.yml
 └── README.md

⚙️ How to Run the Project

1️⃣ Run Locally (Without Docker)

Step 1: Start Eureka Server

cd Eureka-Server
mvn spring-boot:run

Step 2: Start other services

Run each

cd Account-Service       → mvn spring-boot:run
cd Transaction-Service   → mvn spring-boot:run
cd Notification-Service  → mvn spring-boot:run
cd ApiGateway            → mvn spring-boot:run

Step 4: Open Eureka Dashboard

http://localhost:8761

2️⃣ Run with Docker Compose (Recommended)

Step 1: Build all services

Every service should include a Dockerfile:

FROM eclipse-temurin:17-jdk
COPY ./target/*.jar app.jar
ENTRYPOINT ["java","-jar","app.jar"]

Step 2: Run Docker Compose

Step 2: Run Docker Compose

Step 3: Verify services

docker ps

📮 API Endpoints

🏦 Account Service

Create Account

POST /api/accounts

Update Balance

PUT /api/accounts/{accNo}/balance

Activate/Deactivate Account

PUT /api/accounts/{accNo}/status

Get Account

GET /api/accounts/{accNo}


💸 Transaction Service

Deposit

POST /api/transactions/deposit

Withdraw

POST /api/transactions/withdraw

Transfer

POST /api/transactions/transfer

List Transactions

GET /api/transactions/{accNo}


🔔 Notification Service

Send Notification

POST /api/notifications/send


🛡️ Fault Tolerance (Circuit Breakers)

Used in TransactionService:

  • If Account-Service is down → fallback creates a FAILED transaction.
  • If Notification-Service is down → fallback logs a warning.
  • Ensures the system remains stable and never fully crashes.

🧪 Testing

Each service includes:

  • Unit tests using JUnit + Mockito
  • Mock service tests
  • Circuit breaker fallback tests
  • REST controller tests using RestTemplate

Run all tests:

mvn test

📝 Logging

  • All services use SLF4J + Logback
  • API Gateway logs every incoming request
  • Transaction Service logs every deposit, withdrawal, and transfer
  • Notification Service logs every message sent

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors