This repository contains a demo project showcasing a microservices-based application, designed to provide a hands-on understanding of microservices architecture and implementation. The project consists of an API Gateway, Config Server, Discovery Server, and two microservices: Student and School.
- Getting Started
- Project Components
- Inter-Service Communication
- Distributed Tracing
- Contributing
- License
- Contact
- Acknowledgements
Follow the instructions below to set up the project on your local machine for development and testing purposes.
Ensure you have the following software installed on your system before proceeding:
- Java Development Kit (JDK) 21 or later
- Maven
- Git
- IntelliJ IDEA (recommended, but not required)
- Postman (optional, for testing the API endpoints)
- Postgres
- Angular Cli 17 or later
- Node 20 or later
- Docker (optional, for containerization)
- Clone the repository:
git clone git remote add origin git@github.com:ali-bouali/springboot-3-micro-service-demo.git
- Navigate to the project directory:
- Build and package each component with Maven:
The Angular Frontend is a single-page application (SPA) that consumes the microservices' RESTful APIs, providing a user-friendly interface for interacting with the application.
The API Gateway serves as the single entry point for all client requests, managing and routing them to the appropriate microservices.
The Config Server centralizes configuration management for all microservices, simplifying application maintenance and consistency across environments.
The Discovery Server provides service registration and discovery, enabling seamless service-to-service communication within the microservices ecosystem.
The Auth Microservice is responsible for user authentication and authorization, including user registration, login, and logout.
The School Microservice manages school-related data and operations, including adding, updating, and retrieving school records.
This project demonstrates inter-service communication using OpenFeign, a declarative REST client that simplifies service-to-service communication within the microservices ecosystem.
The project showcases the use of Zipkin for distributed tracing, enhancing application observability and enabling the visualization and troubleshooting of latency issues.
Contributions are welcome! Please read our CONTRIBUTING.md for details on how to contribute to this project.
This project is licensed under the MIT License.
[Ali Bouali] - [contact@aliboucoding.com]
[Website] - [https://aliboucoding.com/courses]
Project Link: https://github.com/ali-bouali/springboot-3-micro-service-demo