System Design:
- VaultSystem is a backend aggregator tool
- Banks like Axis, ICICI, HDFC are real external banks, and they each have their own databases (which VaultSystems does't control).
- VaultSystem platform is aggregating all the bank's data that a particular user has — so it must have it;s own internal system to manage links.
Database Design for Vault System:
-
aggregator-db (Vault System's database)
├── customer (table) <-- All the customer's data resides in this db who have registered to use VaultSystems ├── banks (table) <-- available banks to link that VaultSystems front end shows ├── user_bank_mapping (table) <-- user's linked banks mappings. Once user links all banks from the application, next time user should not be prompted again and again. The data should be loaded next time he logs in to the app. So, we have to keep track of all the banks the user is affiliated to in the database. -
axis-db (external database)
├── real customer data of Axis bank ├── real accounts, transactions, loans, cards, branches the account is linked to -
icici-db (external database)
├── real customer data of ICICI bank ├── real accounts, transactions, loans, cards -
hdfc-db (external database)
├── real customer data of HDFC bank ├── real accounts, transactions, loans, cards
Dev Smoke Test Results
Microservices Registered in Netflix Eureka Server:
API Gateway server: One way entry to all the microservices with retry Pattern added upon failures
Scenario-1: Customer has created an account, cards, loans microservices are down
Scenario-2: Customer has account in the bank, has a home loan, and a credit card
Scenario-3: Customer has account, a home loadn and no card
Integrated all microservices logging to Grafana
Integrated all microservices to Prometheus - which states metrics and graphs of microservice health Example: Metrics via Prometheus: System CPU Usage Metrics
Integration of microservices with Micrometer
Skills:
Building Microservices:
- Spring Boot - REST APIs - Spring Data JPA - Open API Documentation and Swagger - Generate Docker Images with DockerFile, Buildpacks, Google Jib - 12 Factor and 15 Factor Methodologies
Centrailzed Configuration Management for Spring Microservices
- Spring Boot Profiles - Spring Cloud Config - Spring Cloud Bus - Spring Cloud Monitor - Liveness and Readiness Probes - MySQL
Spring Microservices Registration and Discovery:
- Service Discovery and Service Registration using Netflix Eureka Client
Spring Cloud API Gateway:
- Load Balancing - Spring Cloud Gateway - Cross Cutting Concerns, Tracing, Logging using Gateway server - Resiliency using Circuit Breaker Pattern - Implementing Retry Pattern in Gateway server
- Implementing Redis Rate Limiter in Gateway server - Bulkhead Pattern
Observability and Monitoring of Microservices:
Logging using Grafana Loki and Promtail. - Metrics monitoring using Actuator, Micrometer, Prometheus and Grafana - Creating and sending Alert notifications using Grafana
- Distributed Tracing using OpenTelemetry, Grafana and Tempo
Microservices Security:
- Oauth2 and OpenID - IAM and KeyCloak - Securing Gateway as a resource service - Authentication and Authorization Code Grant type inside Gateway server
Event Driven Asynchronous Communication:
- Pub Sub Model - RabbitMq - Spring Cloud Functions - Spring Cloud Streams - Async communication using Apache Kafka







