Too often in the organization of this conference we have heard "but I don't have scalability issues".
This talk discusses what scalability issues actually are, and details why we all inevitably have them. Avoiding them, or delaying solutions until they are unavoidable, leads to making many bad "temporary" decisions that cannot be fixed further down the line.
I will discuss the methodologies and best practices that are required in order to be scalable, and describe the common mistakes they will temper, and why they should be implemented immediately. Finally, I will briefly touch on how to deal with rectifying the bad decisions that we all inevitably make, no matter how forward-thinking we are.
20. Read your log files
(Exceptions aren’t always exceptional)
21. Measure in production
(hat tip: Coda, “metrics, metrics everywhere”)
That’s the only place where
things are really happening
22. Measure in production
(hat tip: Coda, “metrics, metrics everywhere”)
That’s the only place where
things are really happening
But don’t let your metrics cause
performance problems
23. PING web (192.168.19.1): 56 data bytes
Request timeout for icmp_seq 0
Request timeout for icmp_seq 1
Request timeout for icmp_seq 2
Request timeout for icmp_seq 3
Sometimes you can just tell
things are wrong
26. Chef or Puppet
(or cfengine or bcfg2)
Server config is code
27. Chef or Puppet
(or cfengine or bcfg2)
Server config is code
Revision control
28. Chef or Puppet
(or cfengine or bcfg2)
Server config is code
Revision control
Feature branches
29. Chef or Puppet
(or cfengine or bcfg2)
Server config is code
Revision control
Feature branches
Commenting
and authorship
30. Chef or Puppet
(or cfengine or bcfg2)
Server config is code
Revision control
Feature branches
Commenting
and authorship Centralized
(not in someone’s head)
41. $ svn up
U www/index.php
U www/payments.php
U www/settings-live.php
U www/settings-dev.php
A www/specials.php
U .
Updated to revision 9703.
Don’t do this.
43. Deployment is more than just putting code in place.
reproducible idempotent rollouts
44. Deployment is more than just putting code in place.
reproducible idempotent rollouts
tied to a known build number
45. Deployment is more than just putting code in place.
reproducible idempotent rollouts
tied to a known build number
with separately-versioned known configuration
46. Deployment is more than just putting code in place.
reproducible idempotent rollouts
tied to a known build number
with separately-versioned known configuration
triggered non-manually across any number of servers
47. Deployment is more than just putting code in place.
reproducible idempotent rollouts
tied to a known build number
with separately-versioned known configuration
triggered non-manually across any number of servers
with full dependency management
48. Deployment is more than just putting code in place.
reproducible idempotent rollouts
tied to a known build number
with separately-versioned known configuration
triggered non-manually across any number of servers
with full dependency management
and automated regression testing.
49. Etsy’s Deployinator
Fabric
OS Packages
Vlad the Deployer
Capistrano
Roll your own