This is a project consisting of 6 different microservices written in GoLang. This is an End-to-End Distributed System that uses different protocols like rpc, GRPC , REST API's and Queueing Systems for communication between the services.
The main goal of this project is to provide a clear and concise understanding of the communication mechanisms utilized by this microservice architecture-based distributed system. By doing so, users can gain a comprehensive understanding of how the system operates and how these communication mechanisms enable seamless integration between different software services, leading to a more efficient and scalable application..
This project can be deployed either via a docker swarm (also via minikube cluster in future).
Screencast.from.01-05-24.11.14.35.AM.IST.webm
- authentication-service for Authenticating users. Stores the users data in a Postgres Container.
- Broker Service is the central node point for handling each request from the client and rendering a response to the client. This Service calls the right service(authentication, listener, logger and mailer ) when a request is called from the front-end
- logger-service receives and accepts the data from the authentication, listener and mailer service ,when each service has been called through the broker service . The data from each service is stored in a MongoDb database.It also handles the gRPC and RPC actions when called by the broker service.
- mail-service Handles sending of mails
- listener-service This service consumes messages in RabbitMQ (running in a different container) and initiates a process.
- front-end just displays outputs for each action performed internally
- Caddy-service acts as a reverse proxy. It forwards requests coming to http://localhost to the front-end service.
-
Ensure you have docker installed and running on your system.
-
In your terminal ,type
sudo nano /etc/hosts
and enter your password. -
In the file ,add a line
127.0.0.1 backend
. The updated file should look something like this :
-
Clone this repo
-
From inside the repo, cd into
/project
directory. -
Type command
make deploy_swarm
in the terminal. -
The project will be deployed on docker swarm.