README.md reflecting gokit.io
Peter Bourgon
9 years ago
0 | 0 | # gokit |
1 | 1 | |
2 | gokit is a working name for a **distributed programming toolkit** to serve the | |
3 | needs of the modern service-oriented enterprise. | |
2 | **gokit** is a working name for a **distributed programming toolkit** to serve the needs of the modern service-oriented enterprise. | |
4 | 3 | |
5 | - Visit [gokit.io](http://gokit.io) for an overview of the project. | |
6 | - Join [the mailing list](https://groups.google.com/forum/#!forum/go-kit) for discussion. | |
7 | - File [issues](https://github.com/peterbourgon/gokit/issues) for concrete ideas and feature requests. | |
4 | - [GitHub repository](https://github.com/peterbourgon/gokit) -- RFCs, issues, PRs, etc. | |
5 | - [go-kit mailing list](https://groups.google.com/forum/#!forum/go-kit) | |
6 | - #gokit on [Freenode](https://freenode.net) | |
7 | ||
8 | ## Motivation | |
9 | ||
10 | See [the motivating blog post](http://peter.bourgon.org/go-kit) and, eventually, the video of the talk. | |
11 | ||
12 | ## Goals | |
13 | ||
14 | - Operate in a heterogeneous SOA -- expect to interact with mostly non-gokit services | |
15 | - RPC as the messaging pattern | |
16 | - Pluggable serialization and transport -- not just JSON over HTTP | |
17 | - Zipkin-compatible request tracing | |
18 | - _more TODO_ | |
19 | ||
20 | ## Non-goals | |
21 | ||
22 | - Having opinions on deployment, orchestration, process supervision | |
23 | - Having opinions on configuration passing -- flags vs. env vars vs. files vs. ... | |
24 | - _more TODO_ | |
25 | ||
26 | ## Related projects | |
27 | ||
28 | ### Service frameworks | |
29 | ||
30 | - [Kite](https://github.com/koding/kite), a micro-service framework | |
31 | - [go-micro](https://github.com/asim/go-micro), a microservices client/server library | |
32 | - [gocircuit](https://github.com/gocircuit/circuit), dynamic cloud orchestration | |
33 | - [gotalk](https://github.com/rsms/gotalk), async peer communication protocol & library | |
34 | ||
35 | ### Individual components | |
36 | ||
37 | - [afex/hystrix-go](https://github.com/afex/hystrix-go), client-side latency and fault tolerance library | |
38 | - [streadway/handy](https://github.com/streadway/handy), net/http handler filters | |
39 | - [rubyist/circuitbreaker](https://github.com/rubyist/circuitbreaker), circuit breaker library | |
40 | - [spacemonkeygo/monitor](https://github.com/spacemonkeygo/monitor), data collection, monitoring, instrumentation, and Zipkin client library | |
41 | - [mattheath/phosphor](https://github.com/mattheath/phosphor), distributed system tracing | |
42 | - [codahale/lunk](https://github.com/codahale/lunk), structured logging in the style of Google's Dapper or Twitter's Zipkin | |
43 | - [sourcegraph/apptrace](https://github.com/sourcegraph/apptrace), application tracing system based on Google's Dapper | |
44 | - [eapache/go-resiliency](https://github.com/eapache/go-resiliency), resiliency patterns | |
45 | - [FogCreek/logging](https://github.com/FogCreek/logging), a tagged style of logging | |
46 | - [Sirupsen/logrus](https://github.com/Sirupsen/logrus), structured, pluggable logging for Go | |
47 | ||
48 | ### Web frameworks | |
49 | ||
50 | - [Gorilla](http://www.gorillatoolkit.org) | |
51 | - [Revel](https://revel.github.io/) | |
52 | - [Gin](https://gin-gonic.github.io/gin/) | |
53 | - [Martini](https://github.com/go-martini/martini) | |
54 | - [Negroni](https://github.com/codegangsta/negroni) | |
55 | - [Goji](https://github.com/zenazn/goji) | |
56 | - [Beego](http://beego.me/) | |
57 | ||
58 | ## Additional reading | |
59 | ||
60 | - [Dapper, a Large-Scale Distributed Systems Tracing Infrastructure](http://research.google.com/pubs/pub36356.html) -- Google | |
61 | - [Your Server as a Function](http://monkey.org/~marius/funsrv.pdf) (PDF) -- Twitter | |
62 | - [Architecting for the Cloud](http://fr.slideshare.net/stonse/architecting-for-the-cloud-using-netflixoss-codemash-workshop-29852233) -- Netflix |