SlideShare a Scribd company logo
The Miniature Guide to
Operational Features
Edinburgh DevOps Meetup – 15th September 2015
Rob Thatcher & Matthew Skelton
“Operational Features”
how to develop and test
prioritisation techniques
availability is the best feature
Operational Features
“the properties of a system
which make it work well in
Production”
Not PIMP MY RIDE
MORE
Greasy Mechanic
Not PIMP MY RIDE
MORE
Greasy Mechanic
Terminology
what happened to NFRs?
(non-functional requirements)
Non-
Functional
Functional
language impact
non-starter
non compos mentis
non-compete
nonsense !
Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher
holistic product view
How did we get to this?
admission: IT folk have been
guilty of making operational
features quite scary & mysterious
Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher
long lists of requirements
crazy test plans
poor explanation of needs
failure to engage stakeholders
gold-plating
Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher
de-mystify operational features
better approach
pragmatic and effective
rapid, safe, valuable
“the properties of a system
which make it work well in
Production”
Why value
Operational Features?
Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher
downtime:
$$$
reputation
($$)
Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher
non-linear increase in
complexity and problems
Internet of Things
we can no longer deal
manually with the scale/volume
of potential problems
Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher
agility and response to
incidents
Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher
remote car hacking:
security as an operational feature
HA + DR + Backup + Metrics + Diagnostics + …
Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher
think:
"when it fails, how will we recover?“
it will fail
How do we develop and test
Operational Features?
defined features
testable and measurable
Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher
ahead lie the ‘ilities’...
1. What
2. How to test
Operational Hooks
Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher
Deployment Pipeline
Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher
Configurability
Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher
re-read config (SIGHUP)
text files in version control
inject settings – no ‘black boxes’
Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher
toggle features via config
“Postcode lookup unavailable”
 better UX
Deployability
Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher
immutable artefacts
concurrent releases (SxS)
symlinks
rapid
scriptable
simple failure modes
Maintainability
Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher
holding page as MVP!
live system component diagrams
modularity
ability to upgrade
version numbering (SemVer?)
Testability
Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher
every component has a
/health endpoint
stubbed/mocked/faked
endpoints
test things individually
Recoverability
asynchronous service start
expect services to be erroring
logs are not wiped (rotated: okay)
avoid flooding logs
Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher
no nasty zombies after failures
MTTR more important than MTBF*
* for most kinds of F
Performance
Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher
run key 'hotspot' areas early
use a deployment pipeline
‘critical path’
Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher
early pipeline tests act as a
barometer for later
performance problems
Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher
derive transit time metrics
Monitorability
Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher
stream of metrics
transaction tracing
BasketItemAdded
grep BasketItem
logging for insights
Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher
Resilience
Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher
Saboteur for network failure
testing
deployment pipeline
assume missing or failing
Chaos Monkey
don’t crash on HTTP 503
Scalability
Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher
concurrent workers
queues and bottlenecks
throttling is your friend
Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher
Security and ‘securability’
Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher
securability by practice
SSL certs & HEARTBLEED
Gauntlt
deployment pipeline
# 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.tcps+open/
Then the output should not match:
"""
25/tcps+open
"""
Availability
Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher
“available but unusable"
synthetic transactions
special HTTP header: trigger
additional metrics/reporting
How the organisation affects
Operational Features
Budgets
bonuses:
story points delivered
tickets closed
Capex vs Opex
tax breaks
avoiding the Capex/Opex evil
Developers seen as more
valuable than Ops people
3x hiring bonus for Devs (!)
improved awareness in product
teams
Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher
share ownership and decision
making
features
end-user
operational
end-user
single product backlog
Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher
Product Owner on call for
incidents
tricky!
high degree of maturity
honesty about the product
Product Owner and Tech Lead
are both on the hook for
outages
AVOID
Product Owner for ‘user
features’ and Tech Lead for
‘operational features’
How to evaluate Operational
Features vs User Features
treat Ops team folk as another
user persona
Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher
alternatives to User Stories?
NOT:
"as a logging subsystem, I want..."
Metrics
Live: downtime, A/B for
operational aspects (speed)
Pre-live: time spent re-deploying
Metrics for better
conversations
metric-ify your delivery and test
infrastructure
 99.99% uptime, but 20
redeployments every time
Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher
Heuristics for operational features
30% of total product budget
30% of dev team time
holistic product view
MVP: ‘service unavailable’ page
test early for operational features
using a deployment pipeline
single product backlog:
(user) features +
(operational) features
availability is the best feature

Books!
operabilitybook.comoperationalfeatures.com
thank you
http://skeltonthatcher.com/
enquiries@skeltonthatcher.com
@SkeltonThatcher
+44 (0)20 8242 4103

More Related Content

Miniature Guide to Operational Features - EdinDevOps - SkeltonThatcher