- Java 21
- Spring Boot
- Spring Cloud (Eureka Discovery,Eureka Server, Gateway)
- Spring Data, Hibernate
- Maven
- RabbitMQ
- Kafka
- PostgreSql
- Feign Client
- MongoDB
- Redis
- Docker
- JUnit
- Swagger
Environment-centric configuration was implemented. Each microservice has both application.yml and application-docker.yml files. All components have been Dockerized. Running it in a Docker environment ensures the application-docker.yml configurations are applied.
- KredinBizde Service:
-
Supports auditable entity classes.
-
Utilizes caching to improve performance by storing frequently accessed data in memory.
-
Utilizes Feign Client for communicating with the Garanti Service to create applications.
-
Implements asynchronous notification using RabbitMQ to send notifications.
-
Implements logging with Kafka to collect exceptions and stores them in MongoDB for further analysis and monitoring.
-
Implements custom exception classes to handle various error scenarios
-
Includes unit tests to ensure the correctness and reliability of the codebase.
All unit tests successfully run:
-
-
Garanti Service:
- KredinBizde Service integrates with the Garanti Service for synchronously communicating applications from KredinBizde Service to the Garanti Bank.
- Implements custom exception classes to handle various error scenarios
-
Notification Service:
- Implements the Strategy Pattern to provide a flexible and extensible way of sending notifications.
- The Strategy Pattern allows to support multiple notification strategies (e.g., email, SMS, mobile) and switch between them dynamically at runtime.
-
Log Service:
- Responsible for generating exception logs and storing them in MongoDB using Kafka for message queuing.
- All above services should Register them with this Registry
- All Services should be accessible with single gateway
All Kredinbizde microservices and related components are collected in docker-compose.yml. Applications were containerized.
This build can be easily started with the docker-compose up
command. Once all services start running in Docker, you can access Swagger from here.