Skip to content

Distributed microservices system in Go using gRPC, RPC, and RabbitMQ for service communication, with PostgreSQL and MongoDB for data storage. Containerized and orchestrated services using Docker and Kubernetes, with MailHog for email testing and Make for automated builds

License

Notifications You must be signed in to change notification settings

amirhasanpour/microservice-event-driven-platform

Repository files navigation

Microservice Event-Driven Platform

Distributed microservices architecture in Go using gRPC and RPC for inter-service communication. Integrated RabbitMQ for asynchronous message brokering and PostgreSQL/MongoDB for persistent data storage. Containerized all services with Docker and orchestrated deployments using Kubernetes for scalability and resilience. Utilized MailHog for email testing and Make for streamlined build and deployment automation.


System Design Diagram

System Design Diagram


Features and Tools

  • JSON-based communication between frontend and backend for simple and structured API interaction
  • Authentication and authorization service for managing users and secure access to resources
  • Centralized broker service acting as the API gateway and router between all microservices using Chi
  • Event-driven microservice architecture enabling independent, scalable, and modular service design
  • gRPC communication for fast, type-safe inter-service messaging
  • RPC mechanism for synchronous communication between microservices
  • Asynchronous messaging and task handling using RabbitMQ as the message broker
  • Background listener service that consumes RabbitMQ events and triggers business workflows
  • Logging service for collecting and storing application logs in MongoDB for observability
  • Mail service for handling transactional emails and notifications using MailHog in development
  • PostgreSQL as the main relational database for authentication and persistent data storage
  • MongoDB as the NoSQL database for structured logging and analytics
  • Docker for containerizing all microservices ensuring isolated and reproducible environments
  • Kubernetes for orchestration, scaling, and management of all containerized services
  • Makefile for automating build, test, and deployment processes across services

How to run?

Using Docker and Make

cd to the project directory and run this command:

make up_build

this will brings up all services, after that used this command to start the front end:

make start

if you want to stop the project, down all services using this command:

make down

after that, to stop the front end, use this command:

make stop

Using Kubernetes

cd to the project directory and run this command:

kubectl apply -f kubernetes

About

Distributed microservices system in Go using gRPC, RPC, and RabbitMQ for service communication, with PostgreSQL and MongoDB for data storage. Containerized and orchestrated services using Docker and Kubernetes, with MailHog for email testing and Make for automated builds

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published