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
Mark Wolfe
November 25, 2015
Programming
150
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Go kit - A Distributed Programming Toolkit
Presented at the microservices meetup in Melbourne, Australia
Mark Wolfe
November 25, 2015
More Decks by Mark Wolfe
See All by Mark Wolfe
IP Networking in AWS
wolfeidau
0
83
Getting Into Vue.js
wolfeidau
0
200
AWS Automation With Lambda
wolfeidau
1
100
Ansible and Cloudformation
wolfeidau
1
240
Docker Security
wolfeidau
0
200
Building a Proxy in Go
wolfeidau
2
410
Using JWT to Authenticate Microservices
wolfeidau
1
270
Managing Secrets IN AWS
wolfeidau
0
160
ESPlant Workshop Firmware Overview and Demos
wolfeidau
0
140
Other Decks in Programming
See All in Programming
【やさしく解説 設計編・中級 #1】一つの車に、運転手は一人 ~ある倉庫システムの事例から~
panda728
PRO
0
150
Generative UI & AI-Assistants for Your Angular Solutions
manfredsteyer
PRO
1
160
OSINT for SRE: 学術論文とポストモーテムから探る システム障害の共通パターン / SRE NEXT 2026
tomoyk
1
3.4k
Embedded SREと共に達成した会員管理システムのAWS移行 - SRE NEXT 2026 ランチスポンサーセッション
niftycorp
PRO
1
2.3k
エンジニアと一緒にテストコードの設計と実装を改善した話
mototakatsu
0
260
フィードバックで育てるAI開発
kotaminato
1
110
Signal Forms: Details & Live Coding @enterJS 2026 in Mannheim
manfredsteyer
PRO
0
220
スマートグラスで並列バイブコーディング
hyshu
0
290
act1-costs.pdf
sumedhbala
0
210
共通化で考えるべきは、実装より公開する型だった
codeegg
0
200
【やさしく解説 設計編 #1】「ドメイン駆動」と「実装駆動」ってなに? 〜設計の考え方を、たとえ話で学ぼう〜
panda728
PRO
1
110
なぜ関数型プログラミングで「型」と「証明」が語られるのか #fp_matsuri
kajitack
3
800
Featured
See All Featured
Exploring anti-patterns in Rails
aemeredith
3
440
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.6k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
10k
Designing Powerful Visuals for Engaging Learning
tmiket
1
450
sira's awesome portfolio website redesign presentation
elsirapls
0
300
How to build a perfect <img>
jonoalderson
1
5.8k
A designer walks into a library…
pauljervisheath
211
24k
Darren the Foodie - Storyboard
khoart
PRO
3
3.4k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
360
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
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