Skip to content
/ minion Public template

A little minion (i.e microservice) that can be replicated to create more minions.

License

Notifications You must be signed in to change notification settings

mgjules/minion

Repository files navigation

minion

Go Doc Conventional Commits License

A little minion (i.e microservice) that can be replicated to create more minions.

Contents

Requirements

Architecture

Architecture

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.

The why

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.

License

Minion is Apache 2.0 licensed.

Stability

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.

About

A little minion (i.e microservice) that can be replicated to create more minions.

Topics

Resources

License

Stars

Watchers

Forks