1 Designing and running microservices

This chapter covers

  • Defining a microservice application
  • The challenges of a microservices approach
  • Approaches to designing a microservice application
  • Approaches to running microservices successfully

Software developers strive to craft effective and timely solutions to complex problems. The first problem you usually try to solve is: What does your customer want? If you’re skilled (or lucky), you get that right. But your efforts rarely stop there. Your successful application continues to grow: you debug issues; you build new features; you keep it available and running smoothly.

Even the most disciplined teams can struggle to sustain their early pace and agility in the face of a growing application. At worst, your once simple and stable product becomes both intractable and delicate. Instead of sustainably delivering more value to your customers, you’re fatigued from outages, anxious about releasing, and too slow to deliver new features or fixes. Neither your customers nor your developers are happy.

1.1 What is a microservice application?

1.1.1 Scaling through decomposition

1.1.2 Key principles

1.1.3 Who uses microservices?

1.1.4 Why are microservices a good choice?

1.2 What makes microservices challenging?

1.2.1 Design challenges

1.2.2 Operational challenges

1.3 Microservice development lifecycle

1.3.1 Designing microservices

1.3.2 Deploying microservices

1.3.3 Observing microservices

1.4 Responsible and operationally aware engineering culture