kit README

The project's README from github.com/go-kit/kit. As one markdown file: README.md.

Go kit

GitHub Workflow Status GoDev codecov Go Report Card Sourcegraph

Go kit is a programming toolkit for building microservices (or elegant monoliths) in Go. We solve common problems in distributed systems and application architecture so you can focus on delivering business value.

Sponsors

encore icon Encore – the platform for building Go-based cloud backends.

Click here or Sponsor, above, for more information on sponsorship.

Motivation

Go has emerged as the language of the server, but it remains underrepresented in so-called "modern enterprise" companies like Facebook, Twitter, Netflix, and SoundCloud. Many of these organizations have turned to JVM-based stacks for their business logic, owing in large part to libraries and ecosystems that directly support their microservice architectures.

To reach its next level of success, Go needs more than simple primitives and idioms. It needs a comprehensive toolkit, for coherent distributed programming in the large. Go kit is a set of packages and best practices, which provide a comprehensive, robust, and trustable way of building microservices for organizations of any size.

For more details, see the website, the motivating blog post and the video of the talk. See also the Go kit talk at GopherCon 2015.

Goals

Non-goals

Contributing

Please see CONTRIBUTING.md. Thank you, contributors!

Dependency management

Go kit is modules aware, and we encourage users to use the standard modules tooling. But Go kit is at major version 0, so it should be compatible with non-modules environments.

Code generators

There are several third-party tools that can generate Go kit code based on different starting assumptions.

Projects with a ★ have had particular influence on Go kit's design (or vice-versa).

Service frameworks

Individual components

Web frameworks

Additional reading

kit (go-kit/kit)

Searching Database…

27.4K ·GitHub
What is this?Go kit is a programming toolkit (a set of packages and best practices) for building microservices or well-structured monoliths in Go, solving common distributed-systems and architecture problems so you can focus on business logic.
Is this a framework or just a library of helper packages?It's described as a toolkit of composable packages rather than a rigid framework: it expects you to interact with non-Go-kit services, use RPC as the main pattern, and doesn't dictate deployment or orchestration tools.
How do I add it to a Go project?Go kit is Go-modules aware, so you add it like any other module dependency; being at major version 0, it should also still work in non-modules environments.
Do I need gRPC or a specific serialization format to use it?No specific transport or format is mandated; Go kit supports pluggable serialization and transport (not just JSON over HTTP) and is meant to operate within your existing infrastructure.
Does it support pub/sub or other messaging patterns besides RPC?No, Go kit currently focuses only on RPC-style messaging and explicitly does not aim to support other patterns like pub/sub or CQRS, nor does it have opinions on deployment or orchestration.
Who is this aimed at?It's aimed at Go teams and organizations of any size building service-oriented architectures, especially those wanting JVM-ecosystem-style microservice tooling but in Go.
Can code be generated automatically for Go kit services?Yes, several third-party generators exist, like sagikazarmark/protoc-gen-go-kit and metaverse/truss, that scaffold Go kit code from different starting points.
Why would I use Go kit instead of go-micro or gizmo?Go kit specifically targets heterogeneous SOA environments where most peer services aren't Go kit based, favors RPC as the primary pattern, and avoids opinions on deployment/orchestration, unlike more opinionated full frameworks.
Is Go kit still actively evolving its API?It's still at major version 0 according to the README, meaning its API isn't yet guaranteed stable.
What are similar projects?grpc-go, kratos, go-zero, chi, encore, graftcode, grpc, fiber
Creator
go-kit
Size
7.2 MB
Stars
27.4K
Age
11y
Commits · 90 Days