Eazy Bank is a modern financial application designed to demonstrate the implementation of microservices architecture using Java, Spring Boot, Spring Cloud, and various other cloud-native technologies. It consists of several services such as loan-service, card-service, account-service, and infrastructure components like config-server and gateway, orchestrated using Kubernetes and Helm.
- loan-service, card-service, account-service: Individual microservices for handling different banking capabilities.
- config-server: Centralized configuration management for microservices.
- gateway: API Gateway for request routing, composition, and protocol translation.
- helm: Package manager for Kubernetes, simplifying deployment scripts.
- kubernetes: Container orchestration platform for automating deployment, scaling, and operations.
Microservices are documented using Open API Specification and Swagger to provide a clear contract and interactive API docs.
The microservices are sized and bounded contextually to ensure a domain-driven design. Docker plays a crucial role in containerization, creating lightweight, portable, self-sufficient containers from any application.
Used for defining and running multi-container Docker applications, it allows us to manage the lifecycle of containers running our microservices.
The application adheres to cloud-native principles and the comprehensive 15-factor methodology for building software-as-a-service apps.
Resilience is built into the microservices using the RESILIENCE4J framework, providing fault tolerance and handling.
Implemented using the Prometheus stack with Loki, Promtail, Tempo, and Grafana for deep insights and real-time monitoring of microservices.
Microservices are secured with OAuth2, OpenID Connect, and Spring Security, ensuring robust authentication and authorization.
Event-driven microservices with RabbitMQ, Kafka, Spring Cloud Functions, and Spring Cloud Stream provide asynchronicity and decoupled communication.
Kubernetes is used for container orchestration, and GCP's Google Kubernetes Engine (GKE) provides a managed environment for deploying, managing, and scaling applications.
Helm simplifies Kubernetes application deployment by managing Kubernetes manifest files.
A list of most commonly used Docker, Kubernetes, and Helm commands is provided to manage the lifecycle of the application.
Instructions on setting up the project, building, and deploying the microservices.
- Java JDK 17
- Spring Boot 3.2.2
- Maven
- Docker & Docker Compose
- Kubernetes & Helm
- GCP Account for GKE (Optional)
Step-by-step guide on how to install and run the services locally or on a cloud provider.
Details on configuring the services and infrastructure components.
Commands and scripts for running the application locally or deploying it to a Kubernetes cluster.
Guidelines for contributing to the project, including coding standards, code reviews, and pull requests.
Specify the type of license the project is released under.
Contact information for the project maintainers.
Credits to any third-party services or tools used in the project.
This README provides a comprehensive guide that aligns with the course content and the technologies used in the Eazy Bank project.