Built a robust and scalable financial back-end system utilizing a microservices architecture. The platform simulates core banking operations, handling everything from user onboarding to processing financial transactions between accounts, all tied together with asynchronous event-driven logging.
Architecture & Core Services
To ensure scalability and separation of concerns, the system was decoupled into several independent microservices:
- User Service: Dedicated to the onboarding and management of users. This service acts as the central source of truth for user identities.
Account Service: Responsible for provisioning and managing multiple types of bank accounts (e.g., checking, savings) linked to specific users.
Transaction Service: The financial engine of the platform, orchestrating secure deposits, withdrawals, and peer-to-peer money transfers between different accounts.
Backend for Frontend (BFF): An aggregation layer and API Gateway that streamlines client-side communication. It provides a cohesive, unified interface to showcase the system’s backend functionalities.
Logging & Auditing Service: An event-driven microservice powered by Apache Kafka. It asynchronously intercepts and logs inter-service messages and system events, ensuring high traceability without blocking core transactional workflows.
Technologies Used
Backend & Frameworks: Java, Spring Boot (Assuming Spring based on Maven structure)
Architecture: Microservices, API Gateway / BFF Pattern
Message Broker: Apache Kafka (Event-driven logging)
Build & Dependency Management: Maven
Key Features & Highlights
Decoupled Architecture: Allowed individual services to scale and deploy independently.
Asynchronous Communication: Leveraged Kafka to decouple logging and auditing from the main transaction paths, reducing latency on financial operations.
Unified Client Interface: The BFF pattern mitigated over-fetching by aggregating data from the User, Account, and Transaction services into a single optimized response for the front end.