About The Project • Project Architecture • Built With • Usage • Contact • Report Bug • Request Feature
Microservice Architecture Human Resource Management System application built with Spring Boot and Node JS.
This is a HRMS Backend application that combines many human resources functions
.It provides opportunities for the HR agents of a company to manage employees
, departments
, jobs
and job seekers
. The HR agent can view the list of all employees using filters, for example viewing a list of employees of a particular department. Create, delete or edit employee records in the system. Manage the company position, such as creating, updating, or deleting job offers. Manage payrolls of the employee.
Our backend is powered by 5 microservices, all of which happen to be written in java using Spring Boot and JavaScript using NodeJS.
- Employees Service: Provides PIM (Personal information management for employees and candidates). Provides employees information like hiring date, email, role, date of birth etc.
- Recruitment Service: Provides recruitment information like Job Postings, Job Applicants etc.
- Position Service: Provides postion information like designation, department name, employees etc.
- Payroll Service: Provides payroll information like salaries etc.
- Holiday/Leave Service: Provides holiday or leave information. Managing leave and defining holidays.
Our sample microservices-based system consists of the following modules:
- gateway-service : a module for running Spring Boot application that acts as a proxy/gateway in our architecture.
- config-service : a module that uses Spring Cloud Config Server for running configuration server in the
native
mode. The configuration files are placed on the classpath. - discovery-service : a module thats Spring Cloud Eureka as an embedded discovery server.
- employee-service : a module containing the 1st microservice that allows to perform CRUD operation on in-memory repository of employee.
- payroll-service : a module containing the 2nd microservice that allows to perform CRUD operation on in-memory repository of payrolls. It communicates with account-service.
- recruitement-service : a module containing the 3rd microservices that allows to perform CRUD operation on in-memory repository of recruitements.
- position-service : a module containing the 4th microservices that allows to perform CRUD operation on in-memory repository of positions.
- leave/holiday-service : a module containing the 5th microservices that allows to perform CRUD operation on in-memory repository of leave and holidays.
The following picture illustrates the architecture described above.
Netflix Oss Components:
Service | Description |
---|---|
Discovery Service | Netflix Eureka Server |
Gateway Service | Netflix Zuul Server |
Dynamic Routing and Load Balancing Service | Netflix Ribbon Server |
Circuit Breaker | Netflix Hystrix Server |
Centrelized Configuration | Spring Cloud Config Server |
- Each service is a
separate
microservice. - Eureka: is a discovery server, all the other microservices register to it.
- Gateway: entry point for other services. Protects other routes and validates tokens.
- Auth: authentication server, used for signing up and issuing tokens.
- So, you should register with Auth first, request a token, and use it for every request for which you need to be authenticated. Every request will hit the Gateway first, if need be, it will validate the token and grant you access to the service.
You may find below the list of the frameworks/libraries that we used to build this demo project :
To get a local copy up and running follow these simple example steps.
You may find below the list of things you need to use this project :
- You need to have Maven, JDK8+.
- You will need to install docker in order to use the
docker-compose
.
In order to install the app you need to follow the instructions below :
-
Clone the repo
git clone https://github.com/ahlem-phantom/microservice-project.git
-
Create an executable jar file for each microservice under the target directory
mvn clean package
-
Build and run the docker containers of the application :
docker-compose up
-
Open localhost:8761 in the browser and that's it you can use our application's microservices 🎉!
Use this space to show useful examples of how a project can be used. Additional screenshots, code examples and demos work well in this space. You may also link to more resources.
-
Phase 1 : Implementation of Discovery and Gateway services
- Implementation of Eureka as a discovery server
- Implementation of Zull as a gateway or proxy server
- Implementation of config server
-
Phase 2 : Implementation of the main application microservices
- Employees Service
- Recruitment Service
- Position Service
- Payroll Service
- Leave/Holiday Service
-
Phase 3 : Deployement of microservices using Docker
If you have a suggestion that would make this project better, please fork the repo and create a pull request. Any contributions you make are greatly appreciated. Don't forget to give the project a star! Thanks again!
- Fork the Project
- Create your Feature Branch (
git checkout -b Yourbranch
) - Commit your Changes (
git commit -m 'Add some features to project'
) - Push to the Branch (
git push origin Yourbranch
) - Open a Pull Request
Project Members :
Ahlem Laajili |
Skander Turki |
Syrine Zahras |
Hichem Ben Zammal |
Nesrine Ben Mahmoud |
---|---|---|---|---|
Developed with 💕 by AlphaCoders.