(Unexpected Useful) Patterns for Fault Tolerant Software

In the past semester I completed successfully in the ‘Advanced Pattern And Frameworks’-module. This module is a deep dive in all kinds of software design patterns. A large part of module was to read a pattern book and then presenting the patterns to the other students. I’ve chosen Patterns for Fault Tolerant Software, because I wanted to read something different than GoF like patterns.

And indeed, the book is unusual. It’s doesn’t have concrete patterns, so you cannot just go and implement it. It’s more like a huge collection of ideas and concepts around fault tolerant systems (like Mars-robots, Space-Shuttle, telephone-routing-systems etc). It features more than 60 patterns, which are more or less related to each other.

I’ve never had the intension to actually use the advices in the book, because I’m not building fault tolerant systems. But surprisingly I actually did implement some of those patterns just recently for this sensor-software. The software is by far not fault-tolerant. However, I’ve used some patterns to ensure that the software keeps on running, even when a vital part doesn’t work anymore. For example I used a Leaky Bucket Counter to avoid overloading a the log-writer. The Shed at Periphery pattern to ‘throw away’ write requests to the database, etc.

The conclusion: First, never be afraid of learning something different. Second, you can apply fault tolerant patterns also in fault intolerant systems =)

Tagged on: ,