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.
- 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
cd to the project directory and run this command:
make up_buildthis will brings up all services, after that used this command to start the front end:
make startif you want to stop the project, down all services using this command:
make downafter that, to stop the front end, use this command:
make stopcd to the project directory and run this command:
kubectl apply -f kubernetes