Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Distributed Failure: Learning Lessons From Avia...
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Andrew Godwin
April 24, 2018
Programming
550
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Distributed Failure: Learning Lessons From Aviation
A talk I first gave at Code Europe Warsaw, spring 2018.
Andrew Godwin
April 24, 2018
More Decks by Andrew Godwin
See All by Andrew Godwin
Reconciling Everything
andrewgodwin
1
410
Django Through The Years
andrewgodwin
0
330
Writing Maintainable Software At Scale
andrewgodwin
0
540
A Newcomer's Guide To Airflow's Architecture
andrewgodwin
0
430
Async, Python, and the Future
andrewgodwin
2
760
How To Break Django: With Async
andrewgodwin
1
840
Taking Django's ORM Async
andrewgodwin
0
870
The Long Road To Asynchrony
andrewgodwin
0
780
The Scientist & The Engineer
andrewgodwin
1
870
Other Decks in Programming
See All in Programming
Seeing Through Serverless: Observability for AWS Lambda with ADOT and CloudWatch Application Signals
seike460
PRO
1
130
まだ間に合う!今年の夏こそSchemeのマクロ展開器を完全理解!
omasanori
0
650
AI駆動開発にグラフDBを重ねてみた
satoshi256kbyte
2
780
AIを上手に使っていこうとしたら越境せざるを得なくなった話 〜実践1年で見えた境界を越えなければならない理由と進め方〜 / Crossing borders with AI
tomoyakitaura
4
1.1k
ALB ログから Trace を気合で繋げる技術
fohte
7
880
Building an Out-of-Order CPU
latte72
1
750
typoなんかねぇよ
raspython3
0
690
LLMは4年分のCompose移行を再現できるのか?実プロダクト279件のXMLで探る自動化の境界線
makun
0
540
アクセシビリティから考える情報設計
high_g_engineer
0
350
Kiroで創り、AgentCoreで繋ぐ!AWSで実践する「AI-DLC」から「AIエージェント統合」までの最新地図
licux
4
650
Foundry Localでエージェント開発
seosoft
0
170
Deep dive into the select statement (GopherCon UK)
jespino
0
170
Featured
See All Featured
The Art of Programming - Codeland 2020
erikaheidi
57
14k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
500
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
330
Why Our Code Smells
bkeepers
PRO
340
58k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
69
65k
SEO for Brand Visibility & Recognition
aleyda
0
4.7k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.4k
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.4k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
520
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
270
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
300
Transcript
DISTRIBUTED FAILURE Andrew Godwin @andrewgodwin Learning lessons from aviation
Hi, I’m Andrew Godwin
Content Warning Aviation accidents Road accidents Discussion of death
Software is difficult.
Distributed is even harder.
None
Not unique to distributed systems
None
Who's solved this? Aviation.
A Boeing 747 has six million parts
A Boeing 747 has six million parts
Airplane Car Walking Train 220 130 30.8 Deaths per billion
hours (UK 1990-2000) 30
People matter as much as machines
Pilot 76% Aviation Accident Causes (2005 Nall report) 9% Other
16% Mechanical
Let's look at some aviation principles
Principle #1 Hard Failure
If something is wrong it turns itself off
This only works if you have redundancy
None
These are great ways to ensure you never fix something.
No accident or outage has a single cause. Stop your
code getting into odd states.
None
Single points of failure can be good
None
Principle #2 Good Alerting
Cockpits are incredibly selective about what sets off an audio
alarm
Alert fatigue is real. Avoid at all costs.
Never, ever, put all errors in the same place
Critical Normal Background
Critical Normal Background Wakes someone up. Actionable.
Critical Normal Background Wakes someone up. Actionable. Fixed over the
next week.
Critical Normal Background Wakes someone up. Actionable. Fixed over the
next week. Metrics, not errors.
Have you been ignoring an error for weeks? Then turn
off its error reporting.
Principle #3 Find your limits
Everything will fail. You should know when.
Copyright Boeing
What's your Minimum Equipment List?
REQUIRED OPTIONAL
Did you load test? Did you fuzz test?
You don't have to perfectly scale.
Risk is fine when you're informed!
Principle #4 Build for failure
No single thing in an aircraft can fail and take
it down.
We all want this for our code, but the way
to do it is to build for failure.
Kill your application randomly Practice server network failures Develop on
unreliable connections
The majority of pilot training is handling emergencies.
None
Use checklists. Don't rely on memory.
If you practice failure, you'll be ready when the inevitable
happens.
Pilot 76% Aviation Accident Causes (2005 Nall report) 9% Other
16% Mechanical
Principle #5 Communicate well
Distributed software means separate teams.
As you grow, communication becomes exponentially harder.
None
None
None
Clear communication is vital.
Write everything down.
Have a clear chain of command.
Make decisions.
Principle #6 No blame culture
How do I know all these aviation stats?
Every incident is reported and investigated.
There is never a single cause of a problem.
Make it very difficult to do again.
None
None
Encourage reporting.
Reward maintenance as well as firefighting
None
In aviation, every rule is written in blood.
Software is not yet there. But we are getting closer.
Margaret Hamilton Her error detection code saved Apollo 11
Therac-25 Killed 3, severely injured at least 3 more
None
None
Hard failure Good alerting Find your limits Build for failure
Communicate well No blame culture
Thanks.