Skip to content
/ kit Public
forked from go-kit/kit

A standard library for microservices.

License

Notifications You must be signed in to change notification settings

make-bin/kit

This branch is 115 commits behind go-kit/kit:master.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

8480b28 · Sep 16, 2020
Feb 28, 2020
Jan 6, 2020
Feb 4, 2017
Oct 3, 2019
Jun 18, 2018
Sep 16, 2020
Jul 10, 2020
Sep 15, 2020
Oct 9, 2017
Sep 13, 2020
Feb 17, 2020
Sep 4, 2020
May 15, 2020
Feb 10, 2017
Aug 23, 2016
Feb 3, 2015
Jun 10, 2020
Mar 8, 2020
Feb 28, 2020
Jan 6, 2020
Jan 6, 2020
Jun 7, 2016
Oct 6, 2019

Repository files navigation

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

Click on 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

  • Operate in a heterogeneous SOA — expect to interact with mostly non-Go-kit services
  • RPC as the primary messaging pattern
  • Pluggable serialization and transport — not just JSON over HTTP
  • Operate within existing infrastructures — no mandates for specific tools or technologies

Non-goals

  • Supporting messaging patterns other than RPC (for now) — e.g. MPI, pub/sub, CQRS, etc.
  • Re-implementing functionality that can be provided by adapting existing software
  • Having opinions on operational concerns: deployment, configuration, process supervision, orchestration, etc.

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.

Related projects

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

Service frameworks

  • gizmo, a microservice toolkit from The New York Times ★
  • go-micro, a distributed systems development framework ★
  • gotalk, async peer communication protocol & library
  • Kite, a micro-service framework
  • gocircuit, dynamic cloud orchestration

Individual components

Web frameworks

Additional reading

About

A standard library for microservices.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Go 99.8%
  • Shell 0.2%