Best 3 books on Software Architecture to read in 2018
Having survived an intensive year of designing, developing, shipping and operating numerous cloud-native microservices at scale, makes me appreciate the books that helped me step up my engineering game.
The following 3 books are by far the best resources on software architecture you can add to your TODO list for 2018. They are ideal for all software engineers and technical architects who deal with any kind of cloud / distributed systems.
Clean Architecture: A Craftsman's Guide to Software Structure and Design
Uncle Bob strikes again! I had been waiting for this book for about a year, and had set high expectation. It ended up exceeding my expectations and providing value in areas of technical architecture I was completely oblivious about.
Find what architecture is really about, and most importantly what it’s not about. Learn the difference between architecturally critical elements and mere details. Get to know how important are layers and boundaries, and how to successfully define them. Brush up on numerous design principles for tackling function, component separation, and data management. Finally, become familiar with common architectural failures in the industry, and figure out how prevent and fix them.
Whether you are tasked with designing a new architecture or executing someone else’s design, Clean Architecture is where you want to start from. It’s a pleasant read that I was able to finish cover to cover within just a few days.Technical (Intermediate) Not focused on code
Building Microservices: Designing Fine-Grained Systems
Ah, microservices, what a topic! Everybody seems to be doing it, but in their own, “unique” ways.
Sam Newman has put together an excellent guide on microservices, explaining all the ins and outs of moving from monolithic systems to smaller, fine-grained and self-contained services. Of course this approach comes with a whole new set of practices, challenges and plenty of potential pitfalls, which the book does a great job depicting.
Whether you are already working with distributed systems, or you are planning to do in the near future, this book can put things into perspective and give you a good taste of what to expect. It also comes with plenty of external references so you can keep expanding your knowledge on specific subjects if you need to.Tags: Technical (Beginner - Intermediate) Not focused on code
Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems
No technical architect’s library is complete without this gem.
Data is in the heart of most challenges related to systems design today. Architects have plenty of data-centric challenges to tackle, including scalability, consistency, reliability, efficiency, and maintainability. On top of that there are numerous platforms and tools that can be leveraged to achieve each project’s design goals, including relational / document / graph databases, stream / batch processors, web APIs and message brokers.
Martin Kleppmann not only helps you make sense of all the buzzwords, but also guides you through this diverse landscape by doing deep dives of how each piece of technology works under the hood, what are their pros and cons, and under which circumstances it’s a good idea to use them. Apart from the theory, the book comes with plenty of practical advice you can start leveraging on your day to day work right away.
As of today, this is the most well-written, comprehensive and modern book about working with data. It’s destined to become a classic.Tags: Technical (Intermediate - Advanced)
Got any book suggestions of your own? Don’t hesitate to drop a line in the comments below! And if you’re hungry for more, have a look at at my full hand-picked collection of recommended books for software developers. Happy new year, and happy reading!