I haven’t done a book review in a while but I have just finished reading Building Microservices by Sam Newman and felt it deserved one.
Firstly I have to say I enjoyed reading this book from front to back. I found the chapters and subjects to be in depth enough to give a good understanding of the ideas but not too long to be overwhelming or tedious. I felt the book flowed from one chapter to another and kept me interested throughout.
I found this book to cover enough information to give some good ideas about designing and architecting systems using a microservice approach and gave good further reading links to follow up on any subjects that you may want to read more on.
The book starts off by giving an overview of what a microservice is and what it isn’t. It explains that a microservice should be small and focused on doing just one thing and doing it well. The book also does a good job of giving examples and also defining what a microservice shouldn’t be giving examples of stuff like shared databases and shared libraries which could introduce tight coupling to your systems.
The next subject is explaining the concept of the evolutionary architect and how architects should think of themselves as town planners instead of the traditional metaphor we take in comparing software architects to contruction architects and how we should think of service boundaries as zones like zoning in a town.
Bounded contexts get a mention and the book explains how we should model our service boundaries around existing business boundaries. It explains we should focus on loose coupling and high cohesion when designing our services.
Midway through the book it takes a turn into a more infrastructure focused ideas and explains the concepts of setting up your deployment environment using VM’s and containers. It touches on continuous deployments and continuous delivery ideas and explains how you might want to setup such an environment to facilitate your development cycles. It uses the ideas of fail fast with feedback and explains how monitoring of your whole environment will give you a higher degree of insight into the health of your system and the quality of your software.
There are lots of other concepts explained in the book and I find it does a good job of calling out good tools and libraries that can help in getting your whole microservice environment up and running.
Although a lot of the ideas explained in the book could be overkill for some smaller systems and im not sure microservices are the right approach in all scenarios. I definitely think when thinking about designing large scalable systems the microservice approach is definitely worth looking at. The good thing is the ideas explained in the book are not an all or nothing approach you can cherry pick the ideas and concepts that suit your system or environment.
All software developers and architects should check out this book if you have any dealing with designing and building services. I would definitely recommend it as a good read.
Paperback, 280 pages
Published February 20th 2015 by O’Reilly Media
ISBN: 1491950358 (ISBN13: 9781491950357)