Software Architecture: The Hard Parts

Neal Ford, Mark Richards, Pramod Sadalage, and Zhamak Dehghani
O’Reilly, 2021

Like its first installment, Fundamentals of Software Architecture, this book has an unstated focus on the software architecture for cloud-based services and applications. That, of course, is not exactly a limiting factor; millions of people are employed building cloud-based services and applications, and billions of people use them. Within that focus, this is perhaps the most comprehensive text available in its analysis of the architectural challenges and trade-offs for such systems.

In fact, I wish the subtitle of this book had referenced the "essential bits" instead of the "hard parts." The book returns repeatedly to operational concerns (especially deployments) and data (especially transactions). These aren’t so much the "hard" parts of software architecture for cloud-based services as the necessary parts. If you haven’t addressed these concerns, then I’m not sure what you have done? Still, the book’s focus on these topics is correct: these are the core issues in cloud-based service design.

I regret that the book is not more rigorous in its style. For example, a good deal of time is spent examining the trade-offs between communication, consistency, and coordination in micro-service architectures. However, the discussion frames each as a saga with a clever name, and is cluttered with remarkably un-elucidating diagrams. I worry that the time spent on names and diagrams sends the wrong message with its emphasis on form over function. Readers would have been better served by a more academic discussion of topics that the authors clearly deeply understand.

Or at least, I think they do. The book contains the occasional blunder, such as a suggestion (in Chapter 8) that asynchronous protocols reduce latency—​which they do not. The intended point was that clients need not wait for replies to their requests. That’s true, but that has to do with how the client is programmed, and not the communication style.

Regardless, any architecture team that manages a set of services and databases will find the guidance and discussions here helpful. And, I appreciate the authors emphasis on tradeoffs, which are intrinsic to design.



© 2024 by Oliver Goldman