Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Clearly I Have Made Some Bad Decisions

Clearly I Have Made Some Bad Decisions

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.

Jonathan Hitchcock

January 30, 2012
Tweet

More Decks by Jonathan Hitchcock

Other Decks in Technology

Transcript

  1. # uptime 17:27:18 up 405 days, 2:36, 1 user, load

    average: 26.93, 10.46, 6.16 !?!?
  2. 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
  3. 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
  4. Chef or Puppet (or cfengine or bcfg2) Server config is

    code Revision control Feature branches
  5. Chef or Puppet (or cfengine or bcfg2) Server config is

    code Revision control Feature branches Commenting and authorship
  6. Chef or Puppet (or cfengine or bcfg2) Server config is

    code Revision control Feature branches Commenting and authorship Centralized (not in someone’s head)
  7. How do I switch my servers to start using config

    management? My advice: build new ones, throw the old ones away.
  8. Don’t do this. $ 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.
  9. Deployment is more than just putting code in place. reproducible

    idempotent rollouts tied to a known build number
  10. Deployment is more than just putting code in place. reproducible

    idempotent rollouts tied to a known build number with separately-versioned known configuration
  11. 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
  12. 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
  13. 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.
  14. Fast iteration = fast test results One huge feature tested

    ... and rejected Ten new tiny features tested Two accepted