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

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.

Scott Robinson

November 26, 2011
Tweet

More Decks by Scott Robinson

Other Decks in Programming

Transcript

  1. Just Die Already

    View full-size slide

  2. • Runtime
    • Application
    • Socket
    • Database
    • Cache
    • Worker threads
    “Stateless”

    View full-size slide

  3. Software Ageing
    gradual degradation of application performance, over time,
    that may lead to premature program termination

    View full-size slide

  4. “400  restarts  a  
    mother  fucking  
    day”

    View full-size slide

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

    View full-size slide

  6. @hourly  pgrep  Rails  |  head  -­‐1  |  xargs  kill

    View full-size slide

  7. That. Is Crazy.

    View full-size slide

  8. The Ultimate Single
    Point of Failure

    View full-size slide

  9. Event Sourcing
    Martin Fowler’s

    View full-size slide

  10. Soft Deletes

    View full-size slide

  11. acts_as_audited

    View full-size slide

  12. Software Testing
    Doesn’t Scale

    View full-size slide

  13. The Argument
    • Feature testing is effective.
    • Fast changing systems are unstable.
    • Complexity is inevitable.
    • Inter-feature testing is ineffective.

    View full-size slide

  14. “Identical to production”

    View full-size slide

  15. #OccupyProduction

    View full-size slide

  16. Acceptance
    Integration
    Unit
    Run in Production
    Run in Production
    Yeah, nah.

    View full-size slide

  17. Multi-Version
    Concurrency

    View full-size slide

  18. “But what if I break
    production?”

    View full-size slide

  19. “But when I break
    production?”

    View full-size slide

  20. •Crash
    •Undo
    •Instrument

    View full-size slide

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

    View full-size slide