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

Failure: Or the Unexpected Virtue of Functional Programming

Failure: Or the Unexpected Virtue of Functional Programming

Even correct software fails.

So what happens if we shift the focus of functional programming to reliable systems? Let’s attack the hard and ugly set of programming problems, the solutions that don’t naturally fall out from building a neat library. Let’s apply our functional programming toolkit to delivering systems end-to-end.

This is a talk on reliable systems. What it takes to build them, how functional programming can and is being leveraged, and perhaps of more interest, where current approaches are letting us down.

*This talk was presented as the keynote at YOW Lambdajam 2015 in Brisbane*

Mark Hibberd

May 22, 2015

More Decks by Mark Hibberd

Other Decks in Programming


  1. “Several of them would have protested if they could have

    found the right arguments.” - George Orwell, Animal Farm
  2. Correctness Reliability (produce the decisions by X o’clock using the

    last vetted dataset) (the best set of measurable decisions for today) Correctness
  3. If you have untangled your computation from your data, someone

    has probably solved your data storage requirements
  4. But… Failure is never clean. One of the most difficult

    challenges is ensuring that we only have known good states, failure must not corrupt.
  5. If you detected a failure, would you be able to

    identify the downstream effects?
  6. Are there multiple paths to build a dataset? Could we

    rebuild from an alternate source if we needed to?
  7. “fault isolation advocates that the process software be fail-fast, it

    should either function correctly or it should detect the fault, signal failure and stop operating” - Jim Gray, Why Do Computers Stop and What Can Be Done About It?
  8. “All animals are equal, but some animals are more equal

    than others.” - George Orwell, Animal Farm
  9. “ZFS has been subjected to over a million forced, violent

    crashes without losing data integrity or leaking a single block.” - Bonwick & Moore, ZFS The Last Word in File Systems
  10. If I can’t run multiple versions of the same code

    in parallel, one programming error can bring everything down
  11. If I can run multiple versions of my code, but

    only one version of my infrastructure…
  12. “construct reliable systems from unreliable parts … from the knowledge

    that any component in the system might fail” - Holzman & Joshi, Reliable Software Systems Design
  13. “A beach house isn’t just real estate. It’s a state

    of mind.” - Douglas Adams, Mostly Harmless