Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Go kit - A Distributed Programming Toolkit
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Mark Wolfe
November 25, 2015
Programming
0
150
Go kit - A Distributed Programming Toolkit
Presented at the microservices meetup in Melbourne, Australia
Mark Wolfe
November 25, 2015
Tweet
Share
More Decks by Mark Wolfe
See All by Mark Wolfe
IP Networking in AWS
wolfeidau
0
76
Getting Into Vue.js
wolfeidau
0
200
AWS Automation With Lambda
wolfeidau
1
94
Ansible and Cloudformation
wolfeidau
1
230
Docker Security
wolfeidau
0
200
Building a Proxy in Go
wolfeidau
2
390
Using JWT to Authenticate Microservices
wolfeidau
1
260
Managing Secrets IN AWS
wolfeidau
0
160
ESPlant Workshop Firmware Overview and Demos
wolfeidau
0
140
Other Decks in Programming
See All in Programming
コードレビューをしない選択 #でぃーぷらすトウキョウ
kajitack
3
890
Go1.26 go fixをプロダクトに適用して困ったこと
kurakura0916
0
360
PJのドキュメントを全部Git管理にしたら、一番喜んだのはAIだった
nanaism
0
250
最初からAWS CDKで技術検証してもいいんじゃない?
akihisaikeda
4
130
nilとは何か 〜interfaceの構造とnil!=nilから理解する〜
kuro_kurorrr
3
1.9k
「やめとこ」がなくなった — 1月にZennを始めて22本書いた AI共創開発のリアル
atani14
0
370
ふつうの Rubyist、ちいさなデバイス、大きな一年
bash0c7
0
820
AHC061解説
shun_pi
0
360
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
420
手戻りゼロ? Spec Driven Developmentとは@KAG AI week
tmhirai
1
190
Railsの気持ちを考えながらコントローラとビューを整頓する/tidying-rails-controllers-and-views-as-rails-think
moro
5
390
エラーログのマスキングの仕組みづくりに役立ったASTの話
kumoichi
0
180
Featured
See All Featured
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.6k
4 Signs Your Business is Dying
shpigford
187
22k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8k
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
190
Designing for Performance
lara
611
70k
WENDY [Excerpt]
tessaabrams
9
36k
Product Roadmaps are Hard
iamctodd
PRO
55
12k
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
380
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.7k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
How to train your dragon (web standard)
notwaldorf
97
6.6k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
Transcript
Go kit A Distributed Programming Toolkit
Intro • Mark Wolfe • DevOps at Versent • IoT
& Distributed Systems
go-kit?! • Composable • Opinionated • Service Orientated • Simple
to Deploy
Server Package • Go interfaces • Provides: • Encoding/Decoding •
Tracing and Health • Transport, Rate Limiting and Throttling • Discovery
Client Package • Go interfaces • Provides: • Encoding/Decoding •
Transport, Pooling, Rate Limiting & Circuit Breaker • Tracing
!Important • Circuit Breaker • Stops thundering herds • prevents
sending requests that are likely to fail • Rate Limiter • Enforce upper thresholds on request throughput
Logging • Levels, e.g. Info, Error • Stdout, Stderr •
Keyvals or JSON // Output: // foo=123 // level=info // level=info msg=hello // level=info msg=hello a=1 b=2
Discovery • Inbuilt Service Discovery • DNS Srv Record •
Etcd • Consul
Metrics! • Runtime, Application, Business • Counter, Histogram and Gauges
• Stdout, StatsD or Prometheus import "github.com/go-kit/kit/metrics/expvar" func main() { myCount := expvar.NewCounter("my_count") myCount.Add(1) }
Example Code!
Questions • @wolfeidau on Twitter • https://github.com/wolfeidau •
[email protected]
Links • Go Kit • Circuit Breaker Pattern • Dapper,
a Large-Scale Distributed Systems Tracing Infrastructure • The Zipkin distributed tracing project