My 4th Year Project at University: Advanced Microservices Architecture
I thoroughly enjoyed working on this project, where I had the opportunity to acquire a wealth of knowledge. Throughout the process, I engaged in extensive research and put into practice the valuable insights I gained from our dedicated instructor and supervisor, Abdelhamid Malki, over the course of two semesters, encompassing Advanced Databases and Microservices modules.
Supervisor: Abdelhamid Malki
Team:
- Sidali Assoul - Backend Developer, Project Manager
- Manaa Anouar - UI/UX Designer
- Ilyes Alili - Frontend Developer
- Beloufa Soufiane - Backend Developer
- University: ECOLE SUPERIEURE EN INFORMATIQUE 08 MAI 1945, SIDI BEL ABBES
Microservices Architecture
-
Auth Microservice: Acts as an identity provider, handling authorization and authentication.
-
API Gateway Microservice: Manages request routing, client-side load balancing, and calls the "auth microservice." It injects necessary headers after validating the JWT payload.
-
Eureka Server Microservice: Functions as a discovery service, allowing microservice instances to self-register.
-
Worker Microservice: Manages data within the worker bounded context.
-
Company Microservice: Manages data within the company bounded context.
-
Interaction Microservice: Collects statistics about company interactions with workers, including click events, impressions, and views.
-
Storage Microservice: Stores media in storage buckets.
-
Recommendation Microservice: This FastAPI microservice utilizes data collected by the "interaction microservice" to generate recommendations for clients (companies) using a matrix factorization strategy (items: workers, users: companies).
-
Payment Microservice: Manages payment-related functionalities within the company payments bounded context.
-
Hiring Microservice: Manages the workers hiring process.
-
Chat Microservice: Manages real-time messages between companies and their hired workers.
Kafka Integration Message Broker: Acts as a message broker, facilitating asynchronous communication between microservices and managing transactions between them.