A secure, scalable, and microservices-based online banking platform built using Spring Boot 3.5, Java 21, PostgreSQL, RabbitMQ, and Apache Kafka.
Neptune Bank provides a complete digital banking solution with user onboarding, KYC verification, account management, secure fund transfers, transaction tracking, OTP-based verification, and JWT-based authentication.
π IEEE Research: This project also serves as the experimental testbed for an IEEE journal paper evaluating the performance of event-driven banking microservices. See Research Section below.
- User Registration with KYC verification
- Profile Management (CRUD Operations)
- Soft Delete Support
- Contact & Nominee Management
- Employee-based KYC Verification
- Savings Account
- Current Account
- Fixed Deposit Account
- Branch Association
- Balance Management
- Optimistic Locking Support
- Account-to-Account Transfers
- Multi-paradigm Processing (REST / RabbitMQ / Kafka)
- Automatic Rollback on Failures
- Transaction Tracking
- Complete Audit Trail
- Account-wise History
- Chronological Ordering
- Status Tracking
- JWT Authentication (RS256)
- RSA Key Pair Signing
- BCrypt Password Hashing
- Spring Security Integration
- Role-Based Access Control (RBAC)
- SMS OTP via TextBee API
- Email OTP via SMTP
- OTP Expiry Management
- Verification Tracking
| Category | Technology |
|---|---|
| Language | Java 21 |
| Framework | Spring Boot 3.5.5 |
| Build Tool | Gradle |
| Database | PostgreSQL 16 |
| ORM | Spring Data JPA / Hibernate |
| Messaging | RabbitMQ, Apache Kafka (KRaft) |
| Authentication | JWT (RS256) |
| Security | Spring Security |
| Password Hashing | BCrypt |
| Mail Service | Spring Mail |
| SMS Gateway | TextBee API |
| Containerization | Docker, Docker Compose |
| Monitoring | Prometheus, Grafana, cAdvisor |
| Benchmarking | Apache JMeter 5.6 |
The system consists of seven independent microservices.
| Service | Port | Responsibility |
|---|---|---|
| Auth Service | 8086 | Authentication & JWT |
| User Service | 8080 | User Profiles & KYC |
| OTP Service | 8082 | OTP Generation & Verification |
| Account Service | 8083 | Account Management |
| Transaction Service | 8084 | Fund Transfers & Transactions |
| Notification Service | 8087 | Event-driven Transaction Notifications |
| Audit Service | 8088 | Transaction Audit Trail |
βββββββββββββββββββ
β Client β
ββββββββββ¬βββββββββ
β
βΌ
βββββββββββββββββββββββ
β Auth Service β
β Port 8086 β
ββββββββββ¬βββββββββββββ
β JWT
βΌ
βββββββββββββββββββ REST/RabbitMQ/Kafka βββββββββββββββββββ
β User Service βββββββββββββββββββββββΊβ Account Service β
β Port 8080 β β Port 8083 β
βββββββββββββββββββ ββββββββββ¬βββββββββ
β
βΌ
βββββββββββββββββββ
βTransaction Svc β
β Port 8084 β
βββββ¬βββββββββ¬ββββ
β β
ββββββββββββββββββ ββββββββββββββββββ
βΌ βΌ
βββββββββββββββββββ βββββββββββββββββββ
β OTP Service β βNotification Svc β
β Port 8082 β β Port 8087 β
βββββββββββββββββββ βββββββββββββββββββ
β
βββββββββ
βΌ
βββββββββββββββββββ
β Audit Service β
β Port 8088 β
βββββββββββββββββββ
The core architectural feature is a profile-switchable communication pattern that enables the same business logic to run over three different paradigms:
--spring.profiles.active=rest # Synchronous HTTP
--spring.profiles.active=rabbitmq # RabbitMQ RPC
--spring.profiles.active=kafka # Kafka event streaming
TransactionService
β
βββ @Profile("rest") β RestCommunicationStrategy β HTTP POST β AccountRestController
βββ @Profile("rabbitmq") β AccountValidationClient β RabbitMQ β AccountValidationListener
βββ @Profile("kafka") β KafkaCommunicationStrategy β Kafka β KafkaAccountEventListener
β
AccountService (shared)
β
AccountRepository
β
PostgreSQL DB
| Queue Name | Producer | Consumer |
|---|---|---|
| user-validation-queue | account-service | user-service |
| account-validation-queue | transaction-service | account-service |
| account-debit-queue | transaction-service | account-service |
| account-credit-queue | transaction-service | account-service |
| Topic | Producer | Consumer |
|---|---|---|
| account.validation | transaction-service | account-service |
| account.debit | transaction-service | account-service |
| account.credit | transaction-service | account-service |
| transaction.events | transaction-service | notification-service, audit-service |
| notification.events | notification-service | β |
| audit.events | audit-service | β |
Client Login
β
βΌ
Auth Service
β
βΌ
Validate Credentials
β
βΌ
Generate JWT Token
β
βΌ
Return JWT
β
βΌ
Use JWT for API Requests
{
"sub": "john_doe",
"role": "USER",
"iat": 1718150400,
"exp": 1718161200
}| Role | Access |
|---|---|
| ADMIN | Full System Access |
| EMPLOYEE | KYC Verification & Customer Management |
| USER | Banking Operations |
Backend/
βββ account-service/ # Account CRUD, balance, Kafka/RabbitMQ/REST listeners
βββ auth-service/ # JWT authentication, login
βββ transaction-service/ # Fund transfers, communication strategy pattern
βββ user-service/ # User profiles, KYC
βββ otp-service/ # OTP generation & verification
βββ notification-service/ # Kafka event-driven notifications
βββ audit-service/ # Kafka transaction audit trail
β
βββ docker-compose.yml # Base orchestration (all services + DBs + monitoring)
βββ docker-compose.kafka.yml # Kafka experiment overlay
βββ docker-compose.rabbitmq.yml # RabbitMQ experiment overlay
βββ docker-compose.rest.yml # REST experiment overlay
β
βββ monitoring/
β βββ prometheus/prometheus.yml
β βββ grafana/provisioning/
β
βββ benchmarks/
β βββ jmeter/fund_transfer.jmx
β βββ chaos/fault-injection.sh
β βββ scripts/
β βββ Run-Experiment.ps1
β βββ run-experiment.sh
β βββ run-full-matrix.sh
β βββ analyze_results.py
β
βββ docs/IEEE/
βββ paper/main.tex # IEEE manuscript
βββ paper/references.bib # 25 verified citations
βββ literature-review/ # Annotated bibliography
# Start with RabbitMQ (default mode)
docker compose -f docker-compose.yml -f docker-compose.rabbitmq.yml up -d --build
# Start with Kafka
docker compose -f docker-compose.yml -f docker-compose.kafka.yml up -d --build
# Start with REST (synchronous)
docker compose -f docker-compose.yml -f docker-compose.rest.yml up -d --build| Service | URL | Credentials |
|---|---|---|
| Prometheus | http://localhost:9090 | β |
| Grafana | http://localhost:3000 | admin / neptune |
| RabbitMQ Management | http://localhost:15672 | neptune / ankit |
| cAdvisor | http://localhost:8089 | β |
Title: Performance Evaluation of Event-Driven Banking Microservices Using Apache Kafka and Spring Boot Under High-Concurrency Workloads
Author: Ayshi Shannidhya Panda Institution: Silicon Institute of Technology, Sambalpur, Odisha, India
| ID | Research Question |
|---|---|
| RQ1 | How does throughput scale across REST, RabbitMQ, and Kafka under increasing concurrency? |
| RQ2 | What are the latency distributions (p50, p95, p99) for each paradigm? |
| RQ3 | How does each paradigm utilize CPU and memory resources? |
| RQ4 | How does each paradigm respond to infrastructure faults? |
- 3 paradigms Γ 6 user levels (100, 500, 1K, 5K, 10K, 20K) Γ 5 runs = 90 experiments
- Statistical analysis: ANOVA, Shapiro-Wilk, Kruskal-Wallis, Cohen's d, 95% CI
# Single experiment (Windows)
.\Backend\benchmarks\scripts\Run-Experiment.ps1 -Paradigm kafka -Users 1000 -RunNumber 1
# Full matrix (Bash / WSL)
./Backend/benchmarks/scripts/run-full-matrix.sh
# Analyze results
python Backend/benchmarks/scripts/analyze_results.py --input-dir results/ --output-dir analysis/cd Backend/docs/IEEE/paper
pdflatex main.tex && bibtex main && pdflatex main.tex && pdflatex main.texβ Microservice Architecture (7 services)
β Multi-paradigm Communication (REST / RabbitMQ / Kafka)
β Strategy Pattern for Runtime Paradigm Switching
β JWT Authentication (RS256)
β BCrypt Security
β OTP Verification (SMS + Email)
β KYC Document Management
β Saga-Based Transaction Rollback
β Role-Based Access Control
β Docker Compose with Monitoring (Prometheus + Grafana)
β IEEE Research Paper with LaTeX Manuscript
β Automated Benchmarking Suite (JMeter + Statistical Analysis)
β Chaos Engineering (5 Fault Injection Scenarios)
β Scalable Architecture
Ayshi Shannidhya Panda
B.Tech. CSE, Silicon Institute of Technology, Sambalpur, Odisha, India
GitHub: https://github.com/ayshishannidhya
LinkedIn: https://www.linkedin.com/in/ayshishannidhya/
Email: asp45624@gmail.com
Copyright Β© 2025-2026 Ayshi Shannidhya Panda.
This project is distributed under a Proprietary License. Unauthorized copying, modification, distribution, or commercial use is prohibited without explicit permission from the author.
A modern microservices-based banking platform designed for security, scalability, reliability, and enterprise-grade banking operations β with IEEE-quality research infrastructure for empirical performance evaluation.