A little minion (i.e microservice) that can be replicated to create more minions.
- Go 1.20+
- Mage - replacement for Makefile in Go.
- Golangci-lint - Fast Go linters runner.
- Ginkgo - Esspressive testing framework.
- Docker - Containerization.
- Docker-compose - Orchestration of containers.
Inter-microservice communication is handled using gRPC instead of REST due to its higher performance, smaller payload size and tighter API contract.
Both Go services are instrumented using OpenTelemetry and use environment variables for configuration. Traces, metrics and logs are sent using gRPC to an OpenTelemetry collector, which batches and exports them to a Jaeger and Prometheus service.
Minion was created to simplify the creation of microservices. It is lightweight and opinionated.
Some of technologies used in this project are:
- urfave/cli - Command line interface.
- swag - Generate REST API documentation.
- alexliesenfeld/health - Simple and flexible health check library.
- jsoniter - High-performance drop-in replacement of
encoding/json
. - zap - Blazing fast, structured, leveled logging in Go.
- opentelemetry - Open source distributed tracing and metrics.
- watermill - Event messaging.
- gin - HTTP web framework.
- resty - HTTP client.
Minion is Apache 2.0 licensed.
This project follows SemVer strictly and is not yet v1
.
Breaking changes might be introduced until v1
is released.
This project follows the Go Release Policy. Each major version of Go is supported until there are two newer major releases.