41 shards
24 api servers
72 web servers
42 Gearman boxes
150 node Hadoop cluster
15 memcached boxes
60 search machines
(plus a lot more for
various services)
Slide 6
Slide 6 text
Not to mention the app itself.
Slide 7
Slide 7 text
We practice continuous
deployment.
Slide 8
Slide 8 text
de • ploy /diˈploi/
Verb
To release your code for the
world to see, hopefully without
breaking the Internet
Slide 9
Slide 9 text
Everyone deploys.
250+ committers.
Slide 10
Slide 10 text
Hundreds of boxes hosting
constantly evolving code...
Slide 11
Slide 11 text
...it’s a miracle we stay up, right?
Slide 12
Slide 12 text
We optimize for quick recovery
by anticipating problems...
Slide 13
Slide 13 text
...instead of fearing human error.
Slide 14
Slide 14 text
Can’t fix what you
don’t measure!
- W. Edwards Deming
Slide 15
Slide 15 text
StatsD
graphite
Skyline
Oculus
Supergrep
homemade!
not homemade
Nagios
Ganglia
Slide 16
Slide 16 text
Text
Real time error logging
Slide 17
Slide 17 text
“Not all things that
break throw errors.”
- Oscar Wilde
Slide 18
Slide 18 text
StatsD
Slide 19
Slide 19 text
StatsD::increment(“foo.bar”)
Slide 20
Slide 20 text
If it moves,
graph it!
Slide 21
Slide 21 text
If it moves,
graph it!
we would graph them ➞
Slide 22
Slide 22 text
If it doesn’t move,
graph it anyway
(it might make a run for it)