Michal Paszkiewicz

review: Designing Distributed Control Systems



My first reaction after having started reading this book was disappointment. I had been looking for a book about designing distributed systems, but the introduction had stated that this would be a book more about control systems. Luckily my disappointment was unfounded, as the book has proved to have a lot of information that could fill the voids of my brain. The book covers 80 patterns commonly used in the Engineering industry where complex machines are built. Although I do not work on combine harvesters, I felt I could identify with the user stories (since I work on a system that uses multiple different types of robotic gates as the inputs to the system). It also turned out that many of the problems that engineers face when writing software for their machines are similar to those faced by developers working on web applications. When I was, for example, reading about how certain mining machines need multiple control points for safety and usability reasons, I started to be tempted to skip paragraphs. Little did I expect that this would be followed by an amazing description of how good UX should be designed. On the other hand, many of the patterns that involved hardware were not particularly useful to me, except as a thought experiment. Luckily, any developer that may similarly not be interested in the patterns unrelated to his work, can easily skip these sections without a loss of understanding in the following sections.

I must admit that this book wasn't exactly a thrilling cover-to-cover read. However, it is definitely an excellent reference book, with tables that allow the reader to easily find the pattern that will be the solution to the problem at hand. Each pattern is typically presented with a good explanation of why it is needed, a diagram of how it works with a detailed description, and a couple of real-world examples where the pattern can (and most likely already has) been applied.

What did I learn?

Obviously, I have learnt the 80 patterns. By learnt, I mean I have read about them and forgotten most of them. There are also specific patterns that I particularly enjoyed reading about that were really rather clever (not that the others aren't, it's just that some of them are more a case of putting a name to an obvious pattern). One of these patterns was the Vector Clock. Wikipedia has a neat article about it for the mathematically inclined, but Designing Distributed Control Systems does the concept far more justice, with multiple diagrams and an in-depth explanation of it.

On top of this, there were multiple statments made in the book, that I could definitely live by and I would proudly cite anywhere. When talking about Messaging Systems, the authors state that:

messaging should be flexible enough that applications do not have to be changed if the messaging infrastructure changes

This is coming from engineers who most likely do not use all the great open source software that the majority of us do. And yet we see this - when migrating an on-premise solution to the cloud, it would be best if one was in the situation where he could easily replace the existing messaging solution with for example, Azure Service Bus.

All in all, this book has been a pretty neat guide to Distributed Control Systems and I therefore award it:

****

published: Tue Jan 10 2017

Michal Paszkiewicz's face
Michal Paszkiewicz reads books, solves equations and plays instruments whenever he isn't developing software for Transport For London. All views on this site are the author's views only and do not necessarily represent the views of TfL.