Go Microservice is a collection of microservices built using Golang and follows a hexagonal microservice architecture with Go kit. It provides a scalable and modular foundation for building distributed systems.
- 💠 Hexagonal microservice architecture using Go kit.
- 💬 Communication between microservices using Protocol Buffers.
- 🔌 Separation of business logic from connection, logging, and tracing.
- 🚀 Independent deployment and scaling of microservices on Kubernetes.
- 📈 Integration with popular monitoring and tracing tools like Jaeger, Prometheus, LogDNA, Graphana, ELK, etc.
These instructions will help you set up the project and get it running on your local machine for development and testing purposes. Please refer to the individual microservice directories for microservice-specific instructions.
- Golang (version X.X.X)
- Docker (version X.X.X)
- Kubernetes (version X.X.X)
- Protocol Buffers (protoc) (version X.X.X)
-
Clone the repository:
git clone https://github.com/your-username/your-repository.git
-
Install the project dependencies:
go mod download
-
Build the project:
go build ./...
The project follows a modular structure with separate directories for each microservice. The overall directory structure is as follows:
cmd
: Entry point for each microservice.internal
: Contains the internal packages for each microservice, including the domain, use case, and repository.pkg
: Contains the reusable packages, such as API handlers and Protocol Buffers.scripts
: Contains the scripts for building, running, and testing the project.
Please refer to the individual microservice directories for microservice-specific usage instructions.
The project includes comprehensive test coverage for each microservice. To run the tests, use the following command:
go test ./...
Each microservice can be deployed independently on a Kubernetes cluster. Refer to the individual microservice directories for microservice-specific deployment instructions.
The project integrates with popular monitoring and logging tools, including Jaeger, Prometheus, LogDNA, Graphana, and ELK. Refer to the individual microservice directories for microservice-specific monitoring and logging instructions.
Contributions are welcome! Please follow the guidelines in the CONTRIBUTING.md file.
This project is licensed under the MIT License.
- LinkedIn: Mayukh Sarkar
- GitHub: MayukhSobo