This project involves the development of a comprehensive eCommerce microservices architecture. It includes the following services:
- Product Service: Manages the creation and viewing of products, serving as the product catalog.
- Order Service: Handles the ordering of products.
- Inventory Service: Checks the stock availability of products.
- Notification Service: Sends notifications to users after an order is placed. This service is stateless and does not use a database.
- Order Service, Inventory Service, and Notification Service interact with each other.
- The system supports both synchronous and asynchronous communication between services.
- Product Service: Interacts with MongoDB.
- Order Service: Uses MySQL for database interactions.
- Inventory Service: Also uses MySQL.
- Notification Service: Stateless, does not use a database.
An API Gateway is used to route requests to the appropriate services. It acts as a gatekeeper, handling requests and interactions with the various microservices, without exposing internal hostnames or IP addresses.
The application is secured using Keycloak, which serves as the authorization server.
To ensure comprehensive monitoring and observability, the following tools are utilized:
- Grafana: For visualizing metrics and performance data.
- Grafana Loki: Aggregates logs from microservices.
- Grafana Tempo: Provides distributed tracing to track request flows.
- Prometheus: Collects and stores metrics data.
All services are containerized using Docker. Docker Compose is used to manage multi-container applications. The Docker Compose setup will eventually be migrated to Kubernetes for advanced orchestration and scaling.