Slide 1

Slide 1 text

Go kit A Distributed Programming Toolkit

Slide 2

Slide 2 text

Intro • Mark Wolfe • DevOps at Versent • IoT & Distributed Systems

Slide 3

Slide 3 text

go-kit?! • Composable • Opinionated • Service Orientated • Simple to Deploy

Slide 4

Slide 4 text

Server Package • Go interfaces • Provides: • Encoding/Decoding • Tracing and Health • Transport, Rate Limiting and Throttling • Discovery

Slide 5

Slide 5 text

Client Package • Go interfaces • Provides: • Encoding/Decoding • Transport, Pooling, Rate Limiting & Circuit Breaker • Tracing

Slide 6

Slide 6 text

!Important • Circuit Breaker • Stops thundering herds • prevents sending requests that are likely to fail • Rate Limiter • Enforce upper thresholds on request throughput

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

Discovery • Inbuilt Service Discovery • DNS Srv Record • Etcd • Consul

Slide 9

Slide 9 text

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) }

Slide 10

Slide 10 text

Example Code!

Slide 11

Slide 11 text

Questions • @wolfeidau on Twitter • https://github.com/wolfeidau • [email protected]

Slide 12

Slide 12 text

Links • Go Kit • Circuit Breaker Pattern • Dapper, a Large-Scale Distributed Systems Tracing Infrastructure • The Zipkin distributed tracing project