Just Die Already

Just Die Already

I'm not religious, but I'm definitely spiritual. Programs, like living creatures, need to die.

Program that run forever are zombies. They're cancers. They're unnatural.

Programs that are born and die are living. They're healthy. They're natural.

Let's look at some common cancers and some healthy software.

1945ab4cdb87eaf5a5c906fa884c29f1?s=128

Scott Robinson

November 26, 2011
Tweet

Transcript

  1. Just Die Already

  2. State

  3. App Servers

  4. • Runtime • Application • Socket • Database • Cache

    • Worker threads “Stateless”
  5. Software Ageing gradual degradation of application performance, over time, that

    may lead to premature program termination
  6. What sucks?

  7. Rails.

  8. None
  9. Old news?

  10. “400  restarts  a   mother  fucking   day”

  11. Leeks

  12. •Memory •Locks •File descriptors •Sockets •Threads

  13. Recovery

  14. None
  15. @hourly  pgrep  Rails  |  head  -­‐1  |  xargs  kill

  16. Passenger

  17. That. Is Crazy.

  18. Databases

  19. The Ultimate Single Point of Failure

  20. What sucks?

  21. SQL.

  22. None
  23. Recovery

  24. None
  25. None
  26. Event Sourcing Martin Fowler’s

  27. None
  28. Soft Deletes

  29. acts_as_audited

  30. None
  31. Tests

  32. Software Testing Doesn’t Scale

  33. The Argument • Feature testing is effective. • Fast changing

    systems are unstable. • Complexity is inevitable. • Inter-feature testing is ineffective.
  34. What sucks?

  35. “Identical to production”

  36. #OccupyProduction

  37. Recovery

  38. None
  39. Acceptance Integration Unit Run in Production Run in Production Yeah,

    nah.
  40. Multi-Version Concurrency

  41. “But what if I break production?”

  42. “But when I break production?”

  43. None
  44. •Crash •Undo •Instrument

  45. Recovery-Oriented Computing http://roc.cs.berkeley.edu/

  46. fin