Micro Services are commonly used buzzword today in many technology stacks. Mega Buzz around this concept is actually natural because many businesses and application had proven success after its adoption. Many organizations are carefully adopting this architecture by doing proper analysis of its advantages and disadvantages. Many technologies, tools and frameworks are emerged to help you in implementation of this architecture. Good books around Microservices and Cloud Native Architecture will surely help us in doing it right.
In this blog I would like to suggest few books that can give you deep insights into Micro Services Architecture and Cloud Native Architecture. Overall below books cover various aspect of design, development, test and maintenance cycles of your application with cloud native and micro services architecture.
Below list is for reference only and not ranked in any particular order.
1. Building Micro Services Designing Fine-Grained Systems by Sam Newman
Sam Newman is former Thoughtworks consultant, author, speaker, and independent consultant interested in cloud, continuous delivery and micro services.
Sam Newman have put in lot of thoughts on Microservices architecture via mentioned book which is around 250 pages. This is breeze read. such it should be of value to any developer interested in more general system design, full-stack developers, architects or people who work in operations. You will discover how micro services architecture allow you to align your system design with your organization’s goals. You will learn options for integrating a service with the rest of your system.
This book briefly describes you how you can achieve organization level goals, how you can do Rapid delivery of your application, How resilient your system can be and lastly how can you survive in deadly competition by taking help of system that accommodate new features easily.
2. Beyond the 12 Factor App: Exploring the DNA of Highly Scalable, Resilient Cloud Applications by Kevin Hoffman
Second book in my listing is small but interesting read. It is written by Kevin Hoffman who works in CapitalOne.
Here you will ask me that why this book is my in my suggestion. The good reason for this is microservices architecture compliments best or works best on cloud when somebody is there to take care your app hosting and scaling. Many major cloud providers are happy to offer support and give high availability when given application is coming up with micro services. but making your application suitable to cloud is not a straight forward thing. The development team needs to understand how cloud is going to be different from traditional programming. They need to obey to certain principles or guidelines. You can expect that your application will run as a cake walk over the cloud by referring to these principles. This programming style is called as cloud native style.
Heroku team ( which is already proven PAAS provider ) has prescribed these factors. These factors can be seen over this link.
Original description of these factors is not very comprehensive. Kevin Hoffman discusses these concepts deeply in his book and writes about two more factors which I think are equally important when we write something which will work on cloud. By reading this book and following the factors discussed in it , I’m sure we can develop such a system which is Darling to the Cloud Providers.
3. Domain-Driven Design Distilled by Vaughn Vernon
Domain driven design is the concept by Eric Evans. He has explained the same thing in detail in his book titled as Domain Driven Design. Domain Driven Design explains us how can we design system by taking business model into consideration. Business is the main focus while designing the system. We need to communicate lot with the business stakeholders and come up with logical boundaries of business.
Original book by Eric Evans is also a good read but it is a long book with too many concepts. Domain driven design distilled is book by Vaughn Vernon. This book is more concise than original. Vaughn Vernon have clearly explain the us strategic and tactical models of Domain Design. There are few fictional case studies in his book which helps to understand concepts clearly. This book is a must read because of the given style of design is very suitable and effective with cloud native architecture and micro services. architecture.
4. Release It! by Michael Nygard
“Feature complete” is not the same as “production ready.”
This statement is very meaningful and self-explanatory. We as a architect needs to understand how system can maintain his health, behaves when it is exposed to errors, available most of the time or in other words how resilient the system is. This book is surely going to help you in designing system in such a way.
Microservices applications are very loosely coupled applications. Lot of interaction between them is sometimes a point of failure. There are many deployments of small applications are involved. There are patterns describe in books such as Circuit Breakers, Timeouts etc are very effective in micro services and cloud native architecture.
Michael has been a professional programmer and architect for more than 20 years now.
Release it! is written a long back but it is still relevant. The second version of this book is in pre release state. I am eagerly awaiting for the release of it 🙂 . But in the meantime this book is also a must read for all of us
5. Refactoring Databases: Evolutionary Database Design by
Database design is very important aspect of application design. Design team needs to understand how data should be used , stored and scaled. Very often with micro services architecture we need to refactor our database as well. However database re factorization is not cakewalk but mention book helps us in understanding different schemes that we can perform on our database which in turn can match to our micro services requirement.
Most of the explanation in the book is from practical standpoint. Many steps are very comprehensive. Most of the examples given in the books are simple and complete. This book will help you in having mastery in your database design that will match Complex requirements of distributed architecture, heavy loads and rapidly changing customer requirements. This book is surely classic technology artifact. Surely going to save your database side.
6. Migrating to cloud in native application architecture by Matt Stine.
This book in my listing explains how can you plan strategy to migrate your current application in such a way that it will become cloud independent.
This book is relatively small read but it is able to discuss major recipes required for decomposition of your Monolithic application plus recipe to make your application adaptable for distributed scenarios. This book also discusses changes we need to do at application , organization and process level to match requirement of cloud native architecture.
7. Microservices: From Design to Deployment from Chris Richardson and Floyd Smith
This book is actually free eBook and easily available at nginx site. Chris Richardson and Floyd Smith are long time technology evangelists. Most of the important aspects of micro services such as philosophy behind micro services, inter process communication between micro services, different patterns involved in design of various stages of application. They also have explain deployment strategies that we can employ to host these micro services. Book has very simple language and to the point explanation. This book is suitable for beginner to practitioner.
8. Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation by Jezz Humble and David Farley
This Jolt Award winning book by David Farley and Jezz Humble is no doubt Masterpiece. I personally feel software release process is equally important as application development and design. This book is must read for all type of programmers and Architects. Production release is nightmare for most of the programmer and technical staff. But same nightmare can become a pleasant fairy tale dream if you plan release in structured way by adapting to the strategies given in this book.The authors introduce state-of-the-art techniques, including automated infrastructure management and data migration, and the use of virtualization. For each, they review key issues, identify best practices, and demonstrate how to mitigate risks.
9. Migrating to Microservice Databases
From Relational Monolith to Distributed Data by Edson Yanaga
Code is Easy, State is Hard.
Very often we face challenging question when we propose microservices architecture to the customers which is as follows:
After years of research and through practical experience Edson Yanaga have come up with few praiseworthy tips for database migration. This is not mere concepts. It has code level examples and step by step algorithms which makes this book handy manual for migration activity.
10 Cloud Native Java by Josh Long and Kenny Bastani
Honestly I am slightly bias here with this book as I have long been working using Java Technology. This book covers how you can write java code using spring boot, spring cloud and other relevant technologies which uses micro services extensively plus it is a very suitable code on cloud infrastructure. Although code samples in the book are written using Java Technology same thing can be easily implemented in any given similar Technology like c# and others.
Josh long and Kenny bastani have done wonderful work with this book by putting lot of code and lot of explanation. They have explain us lot of recent practices in microservices and cloud native architecture. This book will surely keep you up to date with recent trends in this area.
Finally I am done!
So this was my final list of must read books or good books around microservices and cloud native architecture. I hope my list will give you holistic idea of these architectures. I sincerely think every person working in this area should go through these books at least once .
There might be some other important books that I have mistakenly missed. If that is the case please mention the same in comments.
Happy Reading ! and All the Best!!