Platform Overview
High-level overview of the Arya Banking microservices platform.
What is Arya Banking?
Arya Banking is an event-driven microservices platform modelling the core backend of a digital banking application. It is built around a service mesh of independently deployable Spring Boot services coordinated through Spring Cloud infrastructure.
Stack: Spring Boot 3.5.4 · Spring Cloud 2025.0.0 · Java 17 · MongoDB · Confluent Cloud Kafka (SASL_SSL) + Schema Registry · Keycloak · HashiCorp Vault · Eureka · BOM/common 2.0.2
✨ What's New (Sep 06 → Sep 14)
- Confluent Cloud migration — broker + Schema Registry moved from local Docker to Confluent Cloud (
SASL_SSL,USER_INFO); creds via Vaultconfluent.kafka.*. See Config Server and Kafka & Avro. - Common/BOM
2.0.1→2.0.2—2.0.1: SASL/SSL + basic-auth support, local compose removed;2.0.2:core:ResponseDto+TopicCreationException. See Common Overview and Maven Registry. - Admin Kafka Admin API (
kafka-ops) — list/create/describe topics viaAdminClient; Vault secrets now batchList<VaultSecret>. See Admin API Reference. - Auth/User hardening —
spring-cloud-starter-vault-config+BOM 2.0.1+, localspring.kafka.*removed. See Auth Config and User Config. - Gateway Swagger fix —
/swagger-ui.html+/swagger-ui/index.htmlnowpermitAll. See Gateway Security.
🏗️ Core Architecture & Guides
Explore the foundational principles and technical guides that power the Arya Banking platform:
| Guide | Description |
|---|---|
| System Architecture | Component roles, data flow patterns, and network layout. |
| Inter-service Communication | Details on Feign, OAuth2 (M2M), and Kafka event flows. |
| Security Model | Comprehensive overview of Keycloak, Vault, and JWT processing. |
| Infrastructure Stack | Docker orchestration, networking, and platform setup. |
| Local Development Setup | Step-by-step guide to running the full platform locally. |
| Outbox Pattern | Transactional outbox library for reliable Kafka publishing. |
| Maven Registry | Publishing and consuming internal artifacts via GitHub Packages. |
🧩 Microservice Documentation
Each service has its own dedicated documentation covering its specific logic, APIs, and configuration:
| Service | Description | Docs |
|---|---|---|
| Common Library | Shared domain models, Kafka/Avro schemas, and exceptions (5 modules: core, mongo, kafka, feign, oauth2 — 2.0.2) | View Docs → |
| BOM | Centralized dependency version management for all common modules (2.0.2) | View Docs → |
| Metadata Loader | Standalone schema versioning tool | View Docs → |
| API Gateway | Reactive entry point, JWT validation, and request routing | View Docs → |
| User Service | Multi-step registration and profile management | View Docs → |
| Auth Service | Identity bridge and Keycloak user management | View Docs → |
| Admin Service | Infrastructure + Kafka topic administration, Vault/Keycloak provisioning | View Docs → |
| Config Server | Centralized Spring Cloud configuration layer | View Docs → |
| Service Registry | Eureka service discovery server | View Docs → |
| Outbox Service | Transactional outbox pattern starter library | View Docs → |
| Maven Registry | GitHub Packages artifact registry | View Docs → |
Repository Map
The platform is distributed across 11 interconnected repositories:
Event-Based-Banking-Application/
│
├── arya-banking/ ← Documentation site (Next.js)
├── arya-banking-infra/ ← Docker Compose infra (Kafka, Keycloak, Vault)
├── arya-banking-configs/ ← Centralized Git-backed configuration
│
├── arya-banking-common/ ← Shared Maven library (5 modules: core, mongo, kafka, feign, oauth2)
├── arya-banking-bom/ ← Bill of Materials (centralized dependency versions)
├── arya-banking-common-metadata-loader/ ← Standalone metadata schema versioning tool
├── arya-banking-outbox-service/ ← Outbox pattern starter library
├── arya-banking-maven-registry/ ← GitHub Packages Maven registry anchor
│
├── arya-banking-service-registry/ ← Eureka Server (Discovery)
├── arya-banking-config-server/ ← Spring Cloud Config Server
├── arya-banking-api-gateway/ ← Reactive entry point
│
├── arya-banking-user-service/ ← User domain
├── arya-banking-auth-service/ ← Identity bridge
└── arya-banking-admin-service/ ← Infrastructure admin
Quick Reference
| Service | Port | Description |
|---|---|---|
| API Gateway | 8085 | Primary entry point (Docker) |
| User Service | 8086 | User domain (Host) |
| Auth Service | 8087 | Identity bridge (Host) |
| Admin Service | 8089 | Infrastructure admin (Host) |
| Config Server | 8090 | Centralized configuration (Docker) |
| Vault | 8091 | Secrets management + UI (Docker) |
| Eureka | 8761 | Service discovery dashboard (Docker) |
| Kafka | pkc-41p56.asia-south1.gcp.confluent.cloud:9092 | Confluent Cloud (SASL_SSL, Vault confluent.kafka.api.*) |
| Schema Registry | https://psrc-81q7m7.asia-south1.gcp.confluent.cloud | Confluent Cloud (USER_INFO, Vault confluent.kafka.schema.*) |
| Kafka Connect | 8083 | Kafka Connect REST API (Docker) |
| Kafka UI (Kafbat) | 8080 | Kafka web UI (Docker) |
| Keycloak | 5433 | IAM admin + auth (Docker) |
| PostgreSQL | 5432 | Keycloak database (Docker) |
- Shared Network:
arya-banking-net - Infrastructure Runs In: Docker containers via
arya-banking-infra(Keycloak, Vault, Eureka, Config Server); Kafka + Schema Registry run on Confluent Cloud - Business Services Run On: Host via
mvn spring-boot:run - Secrets: HashiCorp Vault with AppRole authentication (local
vault-credentials.yml) — Mongo, OAuth2, and Confluentconfluent.kafka.api/schema.*keys - Docs Site: https://event-based-banking-application.github.io/arya-banking/
- Maven Registry:
https://maven.pkg.github.com/Event-Based-Banking-Application/arya-banking-maven-registry