Designing Fine-grained systems
The second edition is a complete rewrite of the previous edition. It is aimed at giving a broad overview of all aspects related to microservices. Giving a firm foundation in the basics, it goes further, covering off all aspects of the software delivery process, and how they are impacted by adopting a microservice architecture.
I have frequently recommended the first edition Building Microservices to anyone who has shown even the slightest bit of interest in working with Microservices, because in my opinion it provided the best information and best practices related to designing and developing microservices. The sort of follow up book to that Monolith to Microservices is another excellent read and jam packed with incredibly insightful recommendations and strategies how to best to tackle a migration plan to microservices.
In the past, I have often been left disappointed by second editions of text books because what they usually tend to be is that the publishers tend to change the cover picture and the author might fix a few typos, update diagrams, code samples and tool recommendations. However, the content may change very little bar some grammatical changes.
I thought this was going to be the case with this book, primarily I couldn't see how Newman could raise his own bar. When I noticed the Page count had increased, I was sceptical as to whether for the second edition the book was just a merge of the two books.
I have an audible subscription and thought I'd take a gamble and take a listen while out walking the dog, if nothing else may have been a good opportunity to refresh the memory of the first book.
I was only 20 seconds into the book into the book, that I realised that this books was going to totally different to the first edition. Primarily because Newman had updated his definition of that what a Microservice is from:
Microservices are small autonomous services that work togetherBuidling Microservices - First Edition
Microservices are independently releasable services that are modelled around a business domainBuilding Microservices - Second Edition
The changes in wording may seem subtle, however in my opinion it provides much more clarity and totally nails what Microservices are meant to be.
If you enjoyed and learned a lot from the first edition, then I can assure you that you will undoubtedly do the the same with the second edition.
Why I read this book?
The concept of Microservices continues to evolve and as they have become more popular and more organisations move to implementing them many will discover the that they're not always the best solution to problems, in fact many organisations may unwittingly walk into deeper issues trying to implement Microservice Architectures than just sticking with their old Monolithic systems.
Over the past 10+ years I've been working with complex enterprise solutions and microservices I've seen and experienced many of these issues first hand. I've also seen few examples of Microservices being implemented that have actually delivered on their original intention and purpose. Along the way, I've learned from both.
The key thing about Microservices is learning when and where they are appropriate to implement, but also what is even more beneficial its understanding what aspects of Microservice Architectures to implement gradually to get the small wins that will gradually result in greater victories.
This book, covers a lot of ground in this area and it well worth reading, even if you consider yourself an expert.
What I learned from this book
One area I particularly enjoyed in this book, is the discussion on the Principles of Microservice Deployment, if there is one area that causes the most pain in Microservice Based Architectures its this. The options available these days to not only develop but also to deploy Microservices are boundless and surprisingly this can actually cause more problems than it solves!
Other area I learned from are the chapters on Scaling, Microservice Communcation styles, Security, Resiliency. Newman covers quite a lot how the landscape has changed and evolved in these area.
The book is also divided up into 3 parts:
The first 2 parts are fairly complementary evolutionary extension and improvement to the first edition, and its clear how Newman's understanding and knowledge in these areas has grown over time.
The third part People, I found particularly interesting, many ideas and hypothesis are presented which I feel are vitally important for us tech bods to appreciate because all to often we tend to focus shiy glittery tech of the problem, when in reality its the people aspect we should consider.
The discussion on organisational structures and Evolutionary architect were or most interest to me, and in fact I learned a lot form.
Newman does provide some information on Kubernetes (K8s) which was an area he hadn't covered in the first edition. Which great, however I feel I just wanted to echo some the sentiments in the book. You don't necessarily need K8s to implement a microservice architecture. K8s is by no means a requirement to implement microservices, if anything K8s may add nothing more than additional complexity which for the most part maybe completely unnecessary and it truth many organisations can embark on a journey to microservices without even having to consider using k8s.
Why I recommend this book
This is book makes great reading for anyone involved with or even thinking about getting involved with Microservices, it offers a broad range of tips, tricks and advice that will be well worth taking your time to get familiar with.
To manage expectations of those who may be unfamiliar with the First Edition of this book, or judging the book by the title. This book is not going to provide you with explicit step by step guide on how to exactly develop or structure Microservices or implementing Microservice Architectures. Rather this book provides in depth discussion of the number of related esoteric knowledge to take into consideration when embarking building microservices.
The book covers a broad range of related subjects, but doesn't go into the depth of subjects required to learn the ins and outs of it. So there is is no code or implementation guides or tutorials in this book, if you're looking at it from a technical perspective.
A vast majority of the content of this book is predominantly very high level discussing Microservices from strategicm patterns, trade-offs and theoretical perspectives. There are plenty of anecdotal stories to put these in practical situations. Personally, I find this usefui because it is important to keep in mind that adopting and implementing Microservice Architectures is not a silver bullet, if anything they can and most probably cause more pain and surface more issues than they solve.
All to often you'll come across Organisations or teams which may claim they're implementing or have implemented Microservices or Microservice Architectures, but when you merely scratch the service they haven't really.
This expanded second edition takes a holistic view of topics that you need to consider when building, managing, and scaling microservices architectures.