I have a new book on the horizon: Bootstrapping Microservices with Docker, Kubernetes and Terraform. In this blog post I explain why I’m writing this book and why you’ll want to read it.
As software continues to grow and become complicated we need better ways of managing and mitigating the complexity. As it grows alongside our business we need better ways of dividing it up so multiple teams can participate in the construction effort. As our demanding customer-base expands we must also be able to expand our software. At the same time our applications should be fault-tolerant and able to scale-up quickly to match peak demand.
How do we meet the demands of the modern business while evolving and developing our software?
Microservices is an architectural pattern that is playing a pivotal role in contemporary software development. A distributed application composed of microservices solves these problems and more, but typically it is more difficult, more complex and more time-consuming to build than a traditional monolithic application.
What’s wrong with the monolith?
Conventional wisdom says that microservices are too difficult. We are told to start monolith-first and later restructure to microservices when necessary. But I argue that this attitude doesn’t make the job of building an application any easier!
Your application was always going to tend toward complexity and eventually you will need to scale it. Building a monolith usually results in an unscalable and complex ball of spaghetti code that is difficult to manage and risky to deploy.
Then later when you do decide you need to convert your monolith to microservices, you have the extremely difficult job of safely converting it when staff and customers already depend on it.
Now is the perfect time to be building microservices. The confluence of various factors - easily accessible and cheap cloud infrastructure, increasingly good tools and growing opportunities for automation - has driven an industry-wide move toward smaller and smaller services.
All applications grow complex over time. Microservices offer us a way better way to manage such complexity and build scaleable applications. With modern tooling like Docker, Kubernetes and Terraform we have some great tools at our disposal and it is easier than ever before to go microservices-first.
Why this book?
In my new book, Bootstrapping Microservices, I show that a microservices-first approach is no longer as daunting as it once was. I believe the balance is firmly tipping toward microservices. The main problem that remains is that learning microservices is still difficult. The learning curve is steep and holds back many developers in their quest to build microservices. In this book we break through the learning curve. We say boo to the monolith and we build from the ground up, a simple, but complete, application using microservices.
This book is different to other books on microservices. This book is not theoretical. Where other books leaving you wondering where to start, this one takes you on a practical journey through learning. We will actually build a microservices application and the book is accompanied by working code examples hosted on GitHub.
The modern tooling that enables microservices is deep and complex, but this book is not about becoming an expert. It is about learning the thin crust of what’s possible so that we can understand the big picture and use the tools to get our application off the ground. Plenty of references to other books will be provided for when you need to go deeper on any of the technologies.
Follow me on Twitter to stay up to date on the book’s progress!