Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

133
The Miniature Guide to Operational Features Edinburgh DevOps Meetup – 15 th September 2015 Rob Thatcher & Matthew Skelton

Transcript of Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

Page 1: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

The Miniature Guide to Operational Features

Edinburgh DevOps Meetup – 15th September 2015

Rob Thatcher & Matthew Skelton

Page 2: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

“Operational Features”

how to develop and test

prioritisation techniques

Page 3: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

availability is the best feature

Page 4: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

Operational Features

Page 5: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

“the properties of a system which make it work well in

Production”

Page 6: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

Not PIMP MY RIDE

MORE

Greasy Mechanic

Page 7: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

Not PIMP MY RIDE

MORE

Greasy Mechanic

Page 8: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

Terminology

Page 9: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

what happened to NFRs?(non-functional requirements)

Page 10: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

Non-Functional Functional

Page 11: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

language impact

Page 12: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

non-starternon compos mentis

non-compete

Page 13: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

nonsense !

Page 14: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher
Page 15: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

holistic product view

Page 16: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

How did we get to this?

Page 17: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

admission: IT folk have been guilty of making operational

features quite scary & mysterious

Page 18: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher
Page 19: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

long lists of requirementscrazy test plans

Page 20: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

poor explanation of needsfailure to engage stakeholders

gold-plating

Page 21: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher
Page 22: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

de-mystify operational features

Page 23: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

better approach

pragmatic and effective

rapid, safe, valuable

Page 24: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

“the properties of a system which make it work well in

Production”

Page 25: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

Why value Operational Features?

Page 26: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher
Page 27: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

downtime:

$$$reputation

($$)

Page 28: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher
Page 29: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

non-linear increase in complexity and problems

Page 30: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

Internet of Things

Page 31: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

we can no longer deal manually with the scale/volume

of potential problems

Page 32: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher
Page 33: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

agility and response to incidents

Page 34: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher
Page 35: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

remote car hacking:

security as an operational feature

Page 36: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

HA + DR + Backup + Metrics + Diagnostics + …

Page 37: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher
Page 38: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

think:"when it fails, how will we recover?“

it will fail

Page 39: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

How do we develop and test Operational Features?

Page 40: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

defined features

testable and measurable

Page 41: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher
Page 42: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

ahead lie the ‘ilities’...

Page 43: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

1. What2. How to test

Page 44: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

Operational Hooks

Page 45: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher
Page 46: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

Deployment Pipeline

Page 47: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher
Page 48: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

Configurability

Page 49: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher
Page 50: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

re-read config (SIGHUP)

text files in version control

inject settings – no ‘black boxes’

Page 51: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher
Page 52: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

toggle features via config

“Postcode lookup unavailable”

better UX

Page 53: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

Deployability

Page 54: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher
Page 55: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

immutable artefacts

concurrent releases (SxS)

symlinks

Page 56: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

rapid

scriptable

simple failure modes

Page 57: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

Maintainability

Page 58: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher
Page 59: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

holding page as MVP!

Page 60: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

live system component diagrams

Page 61: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

modularity

ability to upgrade

version numbering (SemVer?)

Page 62: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

Testability

Page 63: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher
Page 64: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

every component has a /health endpoint

Page 65: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

stubbed/mocked/faked endpoints

test things individually

Page 66: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

Recoverability

Page 67: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

asynchronous service start

expect services to be erroring

logs are not wiped (rotated: okay)

avoid flooding logs

Page 68: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher
Page 69: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

no nasty zombies after failures

MTTR more important than MTBF** for most kinds of F

Page 70: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

Performance

Page 71: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher
Page 72: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

run key 'hotspot' areas early

use a deployment pipeline

‘critical path’

Page 73: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher
Page 74: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

early pipeline tests act as a barometer for later

performance problems

Page 75: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher
Page 76: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

derive transit time metrics

Page 77: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

Monitorability

Page 78: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher
Page 79: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

stream of metrics

transaction tracing

Page 80: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

BasketItemAdded

grep BasketItem

Page 81: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

logging for insights

Page 82: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher
Page 83: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

Resilience

Page 84: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher
Page 85: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

Saboteur for network failure testing

deployment pipeline

Page 86: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

assume missing or failing

Chaos Monkey

don’t crash on HTTP 503

Page 87: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

Scalability

Page 88: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher
Page 89: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

concurrent workers

queues and bottlenecks

throttling is your friend

Page 90: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher
Page 91: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

Security and ‘securability’

Page 92: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher
Page 93: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

securability by practice

SSL certs & HEARTBLEED

Page 94: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

Gauntlt

deployment pipeline

Page 95: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

# nmap-simple.attack

Feature: simple nmap attack to check for open ports

Background:

Given "nmap" is installed

And the following profile:

| name | value |

| hostname | example.com |

Scenario: Check standard web ports

When I launch an "nmap" attack with:

"""

nmap -F <hostname>

"""

Then the output should match /80.tcp\s+open/

Then the output should not match:

"""

25\/tcp\s+open

"""

Page 96: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

Availability

Page 97: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher
Page 98: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

“available but unusable"

synthetic transactions

Page 99: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

special HTTP header: trigger additional metrics/reporting

Page 100: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

How the organisation affects Operational Features

Page 101: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

Budgets

Page 102: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

bonuses:

story points delivered

tickets closed

Page 103: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

Capex vs Opextax breaks

Page 104: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

avoiding the Capex/Opex evil

Page 105: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

Developers seen as more valuable than Ops people

3x hiring bonus for Devs (!)

Page 106: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

improved awareness in product teams

Page 107: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher
Page 108: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

share ownership and decision making

Page 109: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

features

end-user

operationalend-user

Page 110: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

single product backlog

Page 111: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher
Page 112: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

Product Owner on call for incidents

Page 113: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

tricky!

high degree of maturity

honesty about the product

Page 114: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

Product Owner and Tech Lead are both on the hook for

outages

Page 115: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

AVOID

Product Owner for ‘user features’ and Tech Lead for

‘operational features’

Page 116: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

How to evaluate Operational Features vs User Features

Page 117: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

treat Ops team folk as another user persona

Page 118: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher
Page 119: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

alternatives to User Stories?

Page 120: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

NOT:

"as a logging subsystem, I want..."

Page 121: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

Metrics

Page 122: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

Live: downtime, A/B for operational aspects (speed)

Pre-live: time spent re-deploying

Page 123: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

Metrics for better conversations

Page 124: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

metric-ify your delivery and test infrastructure

99.99% uptime, but 20 redeployments every time

Page 125: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher
Page 126: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

Heuristics for operational features

30% of total product budget

30% of dev team time

Page 127: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

holistic product view

Page 128: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

MVP: ‘service unavailable’ page

Page 129: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

test early for operational features

using a deployment pipeline

Page 130: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

single product backlog:

(user) features +

(operational) features

Page 131: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

availability is the best feature

Page 132: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

Books!

operabilitybook.comoperationalfeatures.com

Page 133: Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher

thank you

http://skeltonthatcher.com/[email protected]

@SkeltonThatcher

+44 (0)20 8242 4103