Architecture Reading List: 2021 Edition
I wrote this in response to Slack question about a basic software architecture reading list at a consulting gig in 2021. I’ve shared it a few times since in response to similar questions. Someone recently pointed out to me that I apparently promised to post it on an old episode of the Codurance Talks podcast.
So, better late than never I guess? I haven’t made any updates beyond what was required to post it in this format.
I like to think it is still useful as an answer to the question ‘where do I even start?’ but arguments about what is ’essential’ material for a list like this could go on forever. I’m sure I’ll update it at some point.
Technology
Material about specific technologies you can find and pick up as you need. I’d recommend being familiar with at least one of the two biggest public cloud platforms, AWS or Azure.
While they are not the same, many concepts are transferable to equivalents on the other platform. I find that that the details move so fast that books can quickly become useless, and prefer to rely on the official documentation.
Both Microsoft and Amazon provide reference architectures for many common scenarios, and these are a not a bad way to learn.
Continuous Delivery
Accelerate is a book that explains what capabilities matter for creating and delivering software and how to measure them.
Continuous Delivery explains how to go about achieving most of those capabilities.
Domain Driven Design
Domain driven design isn’t an architecture style but a way of working. Strategic domain driven design is the best way I know of to identify coherent, loosely coupled modules with well defined boundaries, which are the foundation of all good architectures.
Domain-Driven Design: Tackling Complexity in the Heart of Software is the founding work on the topic
Many people find Vaughn Vernon’s books, Domain Driven Design Distilled and Implementing Domain Driven Design easier going.
Principles & Patterns
Clean Architecture is a good, basic introduction.
Simon Brown also has a volume 2 of Software Architcture for Developers that focuses on documentation and diagrams. I’d start by reading about his C4 Model online and then move onto the book if you feel the need.
Building Evolutionary Architectures is a good, high level discussion of designing for changeability.
Patterns of Enterprise Application Architecture and Enterprise Integration Patterns are good catalogues of solutions to common architecture problems.
Microservices
Microservice architectures are currently popular, but the term is frequently misused to describe things that are not microservices and many people are jumping on the bandwagon without understanding the tradeoffs.
Sam Newman’s books Building Microservices and Monolith to Microservices: Evolutionary Patterns to Transform Your Monolith are good and explain why microservices are not a golden hammer suitable for all situations.
While not strictly about microservices the Twelve-Factor App is a good set of principles for designing cloud-native applications.