Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Distributed Failure: Learning Lessons From Avia...
Search
Andrew Godwin
April 24, 2018
Programming
2
510
Distributed Failure: Learning Lessons From Aviation
A talk I first gave at Code Europe Warsaw, spring 2018.
Andrew Godwin
April 24, 2018
Tweet
Share
More Decks by Andrew Godwin
See All by Andrew Godwin
Reconciling Everything
andrewgodwin
1
350
Django Through The Years
andrewgodwin
0
270
Writing Maintainable Software At Scale
andrewgodwin
0
480
A Newcomer's Guide To Airflow's Architecture
andrewgodwin
0
380
Async, Python, and the Future
andrewgodwin
2
700
How To Break Django: With Async
andrewgodwin
1
760
Taking Django's ORM Async
andrewgodwin
0
760
The Long Road To Asynchrony
andrewgodwin
0
720
The Scientist & The Engineer
andrewgodwin
1
800
Other Decks in Programming
See All in Programming
脳の「省エネモード」をデバッグする ~System 1(直感)と System 2(論理)の切り替え~
panda728
PRO
0
130
C-Shared Buildで突破するAI Agent バックテストの壁
po3rin
0
420
AIエージェントの設計で注意するべきポイント6選
har1101
6
2.8k
re:Invent 2025 のイケてるサービスを紹介する
maroon1st
0
160
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
510
実はマルチモーダルだった。ブラウザの組み込みAI🧠でWebの未来を感じてみよう #jsfes #gemini
n0bisuke2
3
1.3k
20251212 AI 時代的 Legacy Code 營救術 2025 WebConf
mouson
0
230
リリース時」テストから「デイリー実行」へ!開発マネージャが取り組んだ、レガシー自動テストのモダン化戦略
goataka
0
150
Navigation 3: 적응형 UI를 위한 앱 탐색
fornewid
1
510
JETLS.jl ─ A New Language Server for Julia
abap34
2
470
Vibe codingでおすすめの言語と開発手法
uyuki234
0
140
ローカルLLMを⽤いてコード補完を⾏う VSCode拡張機能を作ってみた
nearme_tech
PRO
0
210
Featured
See All Featured
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
286
14k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Rails Girls Zürich Keynote
gr2m
95
14k
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
58
41k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
24k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
8.4k
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
2
73
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
0
320
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
9.2k
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
74
[SF Ruby Conf 2025] Rails X
palkan
0
660
Leo the Paperboy
mayatellez
0
1.3k
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.