BY OUR POWERS COMBINED: OBSERVABILITY FOR DEVELOPERS @CrayZeigh — #abstractionscon

HI, ABSTRACTIONS!

! $ ” : theelasticast.com : @CrayZeigh : aaron.aldrich@elastic.co : noti.st/crayzeigh

!

OBSERVABILITY @CrayZeigh — #abstractionscon

DEVOPS @CrayZeigh — #abstractionscon

DEVOPS @CrayZeigh — #abstractionscon

@CrayZeigh — #abstractionscon

@CrayZeigh — #abstractionscon

DEVOPS > Wave 1: Ops learns code & automation 1 > Wave 2: Dev owns code through production 1 https://vimeo.com/341142053 @CrayZeigh — #abstractionscon

*Simon Wardley: https://twitter.com/swardley/status/1014883354481741825?lang=en

https://dev.to/molly_struve/making-on-call-not-suck-490

SHARED LANGUAGE @CrayZeigh — #abstractionscon

SHARED TOOLS @CrayZeigh — #abstractionscon

SHARED SOURCE OF TRUTH @CrayZeigh — #abstractionscon

OBSERVABILITY A system is observable when you can ask arbitrary questions about it and receive meaningful answers without having to resort to writing new code or command line tools. It lets you discover unknown-unknowns and debug in production. @CrayZeigh — #abstractionscon

Isn’t it just Monitoring with better SEO? — You @CrayZeigh — #abstractionscon

YOU’RE NOT WRONG.. @CrayZeigh — #abstractionscon

@CrayZeigh — #abstractionscon

@CrayZeigh — #abstractionscon

Software is inherently opaque, we have to instrument it to output meaningful information @CrayZeigh — #abstractionscon

THE THREE PILLARS OF OBSERVABILITY 1. Logs 2. Metrics 3. APM @CrayZeigh — #abstractionscon

THE THREE PILLARS OF OBSERVABILITY 1. Logs Events 2. Metrics 3. APM @CrayZeigh — #abstractionscon

THE THREE PILLARS OF OBSERVABILITY 1. Logs Events 2. Metrics 3. APM 4. Distributed Tracing @CrayZeigh — #abstractionscon

THE THREE PILLARS OF OBSERVABILITY 1. Logs Events 2. Metrics 3. APM & Distributed Tracing 4. Distributed Tracing @CrayZeigh — #abstractionscon

@CrayZeigh — #abstractionscon

LOGS/METRICS/APM ARE THE MEDIA WE WORK IN @CrayZeigh — #abstractionscon

METRICS @CrayZeigh — #abstractionscon

@CrayZeigh — #abstractionscon

EVENTS @CrayZeigh — #abstractionscon

CARDINALITY & YOU @CrayZeigh — #abstractionscon

EXISTING LOGS 66.249.65.159 - - [06/Nov/2014:19:10:38 +0600] “GET /news/53f8d72920ba2744fe873ebc.html HTTP/1.1” 404 177 “-” “Mozilla/5.0 (iPhone; CPU iPhone OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version /6.0 Mobile/10A5376e Safari/8536.25 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)” 66.249.65.3 - - [06/Nov/2014:19:11:24 +0600] “GET /?q=%E0%A6%AB%E0%A6%BE%E0%A7%9F%E0%A6%BE%E0%A6%B0 HTTP/ 1.1” 200 4223 “-” “Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)” 66.249.65.62 - - [06/Nov/2014:19:12:14 +0600] “GET /?q=%E0%A6%A6%E0%A7%8B%E0%A7%9F%E0%A6%BE HTTP/1.1” 200 4356 “-” “Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)” @CrayZeigh — #abstractionscon

STRUCTURED LOGGING { “@timestamp”: “2019-08-04T12:30:04.000Z”, … “container”: { “image.id”: “48f5af6667f3457be0a2c7814caefe21ed3c94fb94bd6243096b3a61ea502b1d”, “version”: “version”, }, “build.id”: “efdd0b5e69b0742fa5e5bad0771df4d1df2459d1” … “transaction”: “transaction_ID”, “user”: “importantPerson”, “account”: “0129”, “os”: “osx”, … “api_endpoint”: “endpoint”, … “response”: 400, … “message”: “Some informative thing, probably more human readable and friendly, but difficult to parse” } @CrayZeigh — #abstractionscon

APM & TRACING @CrayZeigh — #abstractionscon

@CrayZeigh — #abstractionscon

@CrayZeigh — #abstractionscon

@CrayZeigh — #abstractionscon

SHARED LANGUAGE > Learning to speak Prod > Teaching Prod to speak Dev (Structured Logs; Traces) @CrayZeigh — #abstractionscon

SHARED TOOLS > Debugging in Prod > Ops skills transferrable and replicable > New knowledge and methods shareable @CrayZeigh — #abstractionscon

SHARED SOURCE OF TRUTH > Real production data > Draw better lines from code to prod > Write better, production ready code. @CrayZeigh — #abstractionscon

WHERE DO WE GO FROM HERE? @CrayZeigh — #abstractionscon

Testing & Experimentation @CrayZeigh — #abstractionscon

TEST IN PRODUCTION @CrayZeigh — #abstractionscon

@CrayZeigh — #abstractionscon

FEATURE FLAGS ! https://martinfowler.com/articles/feature-toggles.html @CrayZeigh — #abstractionscon

config.json { “featureFlags”: { “newThing”: true, } } app.js import { featureFlags } from “./config.json” if (featureFlags.newThing) { // do the new thing! } else { // do the old thing! } @CrayZeigh — #abstractionscon

DON’T DEBATE EXPERIMENT @CrayZeigh — #abstractionscon

2 Speaking of Testing : 2 QA https://theelasticast.com/episodes/0017-qa/ @CrayZeigh — #abstractionscon

Chaos Engineering is about refining our mental models @CrayZeigh — #abstractionscon

DEVOPS > Wave 1: Ops learns code & automation 1 > Wave 2: Dev owns code through production 1 https://vimeo.com/341142053 @CrayZeigh — #abstractionscon

DEV OWNS CODE THROUGH PRODUCTION > Better, more production-ready code > Real World experimentation > Improved operational resiliency @CrayZeigh — #abstractionscon

THE POWER IS YOURS

THANKS! > Slides & References: noti.st/crayzeigh > Trial: ela.st/aaron-aldrich-trial > Come say, “Hi!” at the Elastic booth (31) @CrayZeigh — #abstractionscon