During my internship at EJADA, I had the chance to design and implement a Virtual Banking System using a fully microservices-based architecture. It was a challenging and rewarding experience that deepened my understanding of scalable backend development and distributed systems.
Tech Stack:
Java | Spring Boot | Eureka Server | Kafka | Docker | WSO2 API Gateway | MySQL | Feign | Swagger | Postman
? Microservices Overview
User Service – User registration, authentication, and profile management with secure password handling
Account Service – Account creation, balance tracking, and scheduled deactivation for idle accounts
Transaction Service – Processes money transfers and ensures consistency across services
BFF (Backend-for-Frontend) – Aggregates user/account/transaction data using WebClient calls
Logging Service – Collects structured logs from all services via Kafka for monitoring and auditing
WSO2 API Gateway – Manages and secures external API traffic using OAuth2, API keys, and service discovery with Eureka
? What I Learned:
Built RESTful APIs with secure, modular design
Containerized and deployed services using Docker
Used Eureka for service discovery and load balancing
Logged system-wide events using Kafka
Secured APIs with WSO2 API Gateway
Created a BFF layer to optimize frontend integration
Attached is a short demo video where I test key APIs and show The APIs created in WSO2 .