// the find
go-kit/kit
A standard library for microservices.
Go kit is a toolkit for building microservices in Go, providing primitives for service discovery, load balancing, circuit breaking, rate limiting, distributed tracing, and transport (HTTP, gRPC, AMQP, NATS). It's designed for teams building production Go services that need these cross-cutting concerns handled consistently. The target is engineers who want composable middleware rather than an opinionated framework.
The endpoint/middleware model is genuinely well-designed — you wrap your business logic once and get logging, metrics, tracing, and rate limiting as composable decorators with no framework lock-in. Transport layer is pluggable and symmetric: server and client share the same encode/decode interfaces, so switching from HTTP to gRPC doesn't require rewriting your service logic. Service discovery covers the real options people actually use in 2024 (Consul, etcd, Eureka, DNS SRV, Zookeeper) with a consistent instancer/endpointer interface. Test coverage is solid throughout and the integration tests hit real infrastructure rather than mocks.
Last meaningful commit was mid-2024 and the project has been in maintenance mode for years — the author openly said he considers it largely done, which means no OpenTelemetry-native tracing (the opencensus and opentracing integrations are both deprecated upstream). The logging package predates slog and is now dead weight; anyone adopting this today will immediately want to swap it out. Boilerplate per endpoint is genuinely painful — every new endpoint needs encode/decode functions, a request/response struct, and middleware wiring, which is why half the related projects in the README are code generators. No built-in context propagation helpers for things like tenant IDs or request IDs — you wire that yourself through the middleware chain.