1 Why microservices?


This chapter covers

  • The learning approach of this book
  • The what and why of microservices
  • The benefits and drawbacks of using microservices
  • What’s wrong with the monolith?
  • The basics of microservices design
  • A quick overview of the application we build

As software continues to become larger and more complicated, we need better ways of managing and mitigating its complexity. As it grows alongside our business, we need better ways of dividing it up so that multiple teams can participate in the construction effort.

As our demanding customer base grows, we must also be able to expand our software. At the same time, our applications should be fault-tolerant and able to scale quickly to meet peak demand. How do we then meet the demands of modern business while evolving and developing our application?

Microservices are an architectural pattern that plays 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 architect than a traditional monolithic application. If these terms are new—microservices, distributed application, and monolithic application—they will be explained soon.

1.1 This book is practical

1.2 What will I learn?

1.3 What do I need to know?

1.4 Managing complexity

1.5 What is a microservice?

1.6 What is a microservices application?

1.7 What’s wrong with the monolith?

1.8 Why are microservices popular now?

1.9 Benefits of microservices

1.10 Drawbacks of microservices

1.11 Modern tooling for microservices

1.12 Not just microservices

1.13 A spectrum of possibilities

1.14 Designing a microservices application

1.15 An example application

1.16 Summary