Building Microservices: Designing Fine-Grained Systems is a classic software developer book - one of those that arguably started a new movement in the industry. Under the (very brandable) name of Microservices, author Sam Newman combined recent trends in containerization, public cloud technology, continious deployment practices, DevOps trends, and tools into the new SOA paradigm.
In new chapters and updates, in the 2nd (2021) edition, Sam Newman explores advances in Microservices toolings, cloud, and practices since 2015 and gives readers a historical perspective of why things changed, and explores possibilities of new improvements in directions like serverless.
The book is organized into three parts:
- Foundation - What are microservices?
- Implementation - How to implement microservices?
- People - How to organize people and organizations?
After the first book, Sam also wrote "companion book" - Monolith to Microservices: Evolutionary Patterns to Transform Your Monolith - which significantly expands several chapters to transform monolithic brownfield projects into microservices.
A few years ago, when I have read the original book, I was primarily focused on definitions, differences between microservices and monolith, and implementation. The 2nd time (2nd ed), I have been more interested in how organizations are moving to microservice architecture and how to reorganize people into more SOA/microservices friendly way. Few chapters on this topic were interesting, but it would be great if Sam would write an entire book about these concepts.
Who is this book not for, and what not do?
This is not a beginner's book.
Not because it is not great at explaining basic concepts - it is, but because every developer in his career has to learn how to balance modularity and complexity. But, the stakes with microservices are much higher. The entire team and organization take a risk over a long period, not a single developer with few tasks.
This is a book of temptations.
It is tempting to imagine how things could work better, especially if you do not want to work with monolithic chaos. The lure of greenfield projects is strong; this time, you will make it work just right. But, the big rewrite is (almost) never a solution.
Do your research. Take time. Get people who are ready for changes on board. Take simple steps in the right direction in everyday activities. Talk to business people about benefits. Start small, reorganize monolith into modules, publish events for everything, etc. Make new features more isolated. Talk with skeptical people - no one will be left behind; learn new things together. Refactor smaller functionality. Refactor bigger functionality.
Author
Sam Newman is one of the most established "Microservices" authors and speakers. His other interests are cloud and continuous delivery. He has worked for 12 years at ThoughtWorks and is now an independent consultant, author, and speaker.