This source code was developed for Java based microservices tutorial series from javatodev.com.
In this article series I’m going to explain using internet banking API concept with spring boot based microserices architecture. Initially I’ll develop the core API which will evolve as a full fledged REST API collection until deployments.
- 1.0.0 - Initial release with Java 11 and Spring Boot 2.
- 2.0.0 - Updated version with Java 21, Spring Boot 3.2.4 , Spring Cloud 2023.0.0
- Clone the repository:
$ git clone https://github.com/JavatoDev-com/internet-banking-concept-microservices.git
- Navigate to the docker-compose folder:
$ cd internet-banking-concept-microservices/docker-compose
- Start application using docker-compose:
$ docker-compose up -d
Container | IP | Port Mapping |
---|---|---|
openzipkin_server | 172.25.0.12 | 9411 |
keycloak_web | 172.25.0.11 | 8080 |
keycloak_postgre_db | 172.25.0.10 | 5432(Closed Port) |
mysql_javatodev_app | 172.25.0.9 | 3306 |
internet-banking-config-server | 172.25.0.8 | 8090 |
internet-banking-service-registry | 172.25.0.7 | 8081 |
internet-banking-api-gateway | 172.25.0.6 | 8082 |
internet-banking-user-service | 172.25.0.5 | 8083 |
internet-banking-fund-transfer-service | 172.25.0.4 | 8084 |
internet-banking-utility-payment-service | 172.25.0.3 | 8085 |
core-banking-service | 172.25.0.2 | 8092 |
Whole suite related postman collection can be sync using this URL.
Clone this postman collection and switch to the LOCAL_DOCKER_SETUP
Environment.
By default we have dummy accounts details with user details under core-banking-database. Also the keycloak instance will deployed with default dataset matched to the application with all the realm, client and user data sets.
Proceed the testings with AUTHENTICATION
API request under BANKING_CORE_MICROSERVICES COLLECTION.
Test Credentials : ib_admin@javatodev.com / 5V7huE3G86uB
Here this project consist of mainly 6 microservices and those are,
- User service (banking-core-user-service) – This service includes all the operations under the User such as registrations and retrieval. Additionally, this API consumes keycloak REST API to register and manage the user base while using the local PostgreSQL database as well.
- Fund transfer service (banking-core-fund-transfer-service) – This is the service that handles all the fund transfers between accounts and this API will push messages to a centralized RabbitMQ queue to use from the Notification service.
- Payment service (banking-core-payments-service) – This service will include all the API endpoints to process Utility payments in this project and that will push notification messages to RabbitMQ as well.
- Notification service – This API is registered under the service registry but consumes all the messages from RabbitMQ and pushes necessary notifications to the end users. - PENDING Development
- Banking core service – This is the banking core service that acts as a dummy banking core with accounts, users, transaction details, and processors for banking transactions.
- Java 21
- Spring Boot 3.2.4
- Spring Cloud 2023.0.0
- Netflix Eureka Service Registry
- Netflix Eureka Service Client
- Spring Cloud API Gateway
- Spring Cloud Config Server
- Zipkin
- Spring Cloud Sleuth
- Open Feign
- RabbitMQ
- Prometheus
- MySQL
- Keycloak
- Docker / Docker Compose
- Kubernetes
- Keycloak
Article series
1. Building Microservices With Spring Boot – Free Course With Practical Project
2. Microservices – Service Registration and Discovery With Spring Cloud Netflix Eureka
3. Microservices – Setup API Gateway Using Spring Cloud Gateway
4. Microservices – Authentication, and Authorization With Keycloak
5. Microservices – Core Banking Service Implementation
6. Microservices – User Service Implementation
7. Microservices – Fund Transfer Service Implementation
8. Microservices – Utility Payment Service Implementation
9. Microservices – Communication With Spring Cloud OpenFeign
10. Microservices – Exception Handling
11. Microservices – Centralized Configurations With Spring Cloud Config