A utility module, largely taken from the go-micro patterns (and a good amount of code too...) with pure gRPC ecosystem modules.
Principles:
- Pluggable
- No singleton
Features:
- simple configuration with options
- simple TLS configuration
- TLS auth
- client connection pool
- registry / resolver resolution
- mdns
- kubernetes
- default interceptors implementation:
- context request id
- defaulter
- validation
- health
- context logger
- sentry
- rate-limiting
- ban
- auth claim in context
- recovery (server side only)
- tracing (open-tracing)
- metrics (prometheus)
- retries
- context DB / transaction
- ...
- grpc web / api gateway with middleware:
- auth
- cors
- logging
- tracing
- metrics
- broker, based on nats-streaming
- https://github.com/grpc-ecosystem/go-grpc-middleware
- https://github.com/grpc-ecosystem/grpc-opentracing
- https://github.com/grpc-ecosystem/go-grpc-prometheus
- https://github.com/grpc-ecosystem/grpc-gateway
- https://github.com/jaredfolkins/badactor
- https://github.com/johnbellone/grpc-middleware-sentry
- https://github.com/improbable-eng/grpc-web