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
Addicted to Stable
Search
John Nunemaker
PRO
September 01, 2012
Programming
2.9k
32
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Addicted to Stable
Closing keynote for RubyConf Brazil.
John Nunemaker
PRO
September 01, 2012
More Decks by John Nunemaker
See All by John Nunemaker
Remote First: Building Distributed Teams that Win
jnunemaker
PRO
1
180
AI: The stuff that nobody shows you
jnunemaker
PRO
9
840
Atom
jnunemaker
PRO
10
5.2k
MongoDB for Analytics
jnunemaker
PRO
11
1.1k
MongoDB for Analytics
jnunemaker
PRO
21
2.3k
MongoDB for Analytics
jnunemaker
PRO
16
30k
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.9k
Why NoSQL?
jnunemaker
PRO
10
1k
Don't Repeat Yourself, Repeat Others
jnunemaker
PRO
7
3.6k
Other Decks in Programming
See All in Programming
使用 Meilisearch 建立新聞搜尋工具
johnroyer
0
170
ルールを書いて終わらせないハーネスエンジニアリング
yug1224
4
1.8k
Terraform標準の組織で AWS CDKをどう使うか
mu7889yoon
1
360
Prismを使った型安全な暗号化_関数型まつり2026
_fhhmm
0
150
【やさしく解説 設計編・中級 #6】良いアーキテクチャとは ~ 一本の登り道の、行き先 ~
panda728
PRO
0
180
信頼性について考えてみる(SRE NEXT 2026 miniLT)
hayama17
0
210
AI時代、エンジニアはどう育つのか -未経験エンジニアの成長を間近で見て考えたこと-
thasu0123
0
150
関数型プログラミングのメリットって何だろう?
wanko_it
0
190
AI時代のPHPer生存戦略 ~「言語、もうなんでもよくない?」に本気で向き合う~
vivion
0
170
『コードを書く以外の』エンジニアリング〜課金基盤移行プロジェクト推進のためのTips4選
yuriko1211
0
540
ビデオ通話が繋がる0.2秒で何が起きているのか
supurazako
2
150
人間の目はかわらない、だからJPEGは30年もつ
yuzneri
8
15k
Featured
See All Featured
RailsConf 2023
tenderlove
30
1.5k
The SEO Collaboration Effect
kristinabergwall1
1
510
Leo the Paperboy
mayatellez
8
1.9k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
340
It's Worth the Effort
3n
188
29k
Bash Introduction
62gerente
615
220k
Balancing Empowerment & Direction
lara
6
1.2k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.2k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
53k
We Are The Robots
honzajavorek
0
280
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.8k
Transcript
Addicted to Stable a.k.a how to sleep like an octocat
None
None
None
None
None
None
None
Hundreds of Sites
Hundreds of Sites Thousands of Decks
Hundreds of Sites Thousands of Decks Millions of People
Hundreds of Sites Thousands of Decks Millions of People Billions
of Views
“ People want features, but need stability.
Sta·ble Not likely to change or fail
App Code and Servers
Testing Automate
?
? test/unit
? rspec test/unit
? rspec test/unit minitest
YES
design YES
design YES change
design YES change regression
None
None
Work by me
Work by me Pushed code fix
None
Work by robots
Work by robots Closed issue
Work by robots Closed issue Ran test suite
Work by robots Closed issue Ran test suite Deployed code
Backup and Restore Automate
A Single Server Never trust
None
Replicate
Replicate Promote
Replicate Promote Practice
“ Me, at 8pm on a Saturday I’m confirming the
steps and order of commands.
None
Deleted Everything I accidentally Sincerely, Your Employee
Deleted Everything I accidentally Sincerely, Your Customer
users users.archived gauges gauges.archived
hubot restore <repo>
Deleted Everything I accidentally Sincerely, You
None
Deployment Automate
None
hubot deploy github
hubot deploy speakerdeck
hubot deploy gauges
hubot deploy gauges/my-branch
puppet https://github.com/puppetlabs/puppet
moonshine https://github.com/railsmachine/moonshine
HOSTFILTER=‘app7.foo.com’ \ cap production deploy:setup
HOSTFILTER=‘app7.foo.com’ \ cap production deploy
Exceptions Collect and Fix
None
None
< 1 exception per million page views (gauges)
Metrics Collect and Graph
None
None
None
None
None
None
Alerts Email, Push and SMS
None
None
None
Nagios
Pingdom Nagios
Pager Duty Pingdom Nagios
Failover Automate
web1 web2 haproxy/heartbeat
Tracking app3 app4 app5 app6 web1 web2
Tracking app3 app4 app5 app6 web1 web2 - option httpchk
GET /pulse/tracking
Tracking app3 app4 app5 app6 web1 web2 class PulseApp <
Sinatra::Base get '/pulse/tracking' do pulse :kestrel end end
Tracking app3 app4 app5 app6 web1 web2 app1 app2 Reporting
Tracking app3 app4 app5 app6 web1 web2 app1 app2 Reporting
- option httpchk GET /pulse/reporting
Tracking app3 app4 app5 app6 web1 web2 app1 app2 Reporting
class PulseApp < Sinatra::Base get '/pulse/reporting' do pulse :mongo end end
Tracking app3 app4 app5 app6 web1 web2 q1 q2 app1
app2 Reporting
Tracking app3 app4 app5 app6 web1 web2 q1 q2 Workers
db1 db2 db3 app1 app2 Reporting
Team Collaboration and Freedom
46 hubbers When I started in December
115 hubbers As of August 31, 2012 at 10:43am EST
How is that stable???
Collaborate Always
Pull Requests Discussion + ❤
None
None
Chat Campfire to your phone
None
Video Face to face and Pairing
None
Internal Tools Ideas, Hiring, Music and more!
None
None
300+ ideas
300+ ideas 3000+ comments
300+ ideas 3000+ comments 100+ people
Communicate Always
None
None
4300+ statuses
4300+ statuses 4200+ comments
4300+ statuses 4200+ comments 100+ people
None
None
170 talks
170 talks 112 people
170 talks 112 people 2 summits/year
None
Document Always
None
None
Empower Always
None
Anyone can view
Anyone can view Anyone can commit
Anyone can view Anyone can commit Anyone can deploy
None
296 branches
296 branches 2980 commits
296 branches 2980 commits 307 issues
IN ONE MONTH
ONLY THE WEB APP
Brand Surprise and Delight
Feedback Stupid Easy
None
None
[email protected]
[email protected]
[email protected]
Support Fast and Friendly
None
None
None
None
Documentation Useful and Thorough
None
None
None
None
Communication Honest and Open
None
None
None
If you present, GitHub covers the bill for you.
If you present, GitHub covers the bill for you and
a buddy.
None
“ On Saturday, June 2nd, we had a perfect storm
of cascading failures resulting in around four hours of lost tracking data.
“ We have commissioned a new database cluster with automatic
failover that we hope to be using sometime next week.
“ We hate that we lost your data. Know that
we have learned from this and will rise from the ashes of your data loss like a GLORIOUS PHOENIX.
Celebration Public and Genuine
None
None
None
None
automate testing, backing up, restoring, deploying, collect exceptions, metrics, send
alerts, fail gracefully, collaborate, communicate, document all the things, empower, get feedback, provide awesome support, communicate, celebrate
The End.