Skip to content
Latticework
Esc
Try
No. 118From the Masters

Microservice Premium

Microservices carry a fixed overhead that only pays off above a certain level of complexity.

“…don't even consider microservices unless you have a system that's too complex to manage as a monolith.”

Microservices cost a premium in productivity for simple systems and only pay off once complexity is high.

To an executive

Splitting a system into many small services carries a fixed running cost in people and tooling. It only pays back when the underlying business system is complex enough.

To an engineer

Count the overhead of deployment, monitoring and failure handling before adopting microservices. Use them only if you can provision services quickly and a modular monolith cannot cope.

The idea

Fowler argued that microservices impose a premium: automated deployment, monitoring, dealing with failure, eventual consistency and the other costs of a distributed system. For simpler systems a monolith is more productive; only as complexity grows does the microservice approach overtake it. His guideline was not to consider microservices unless you have a system too complex to manage as a monolith.

In a separate note he listed baseline competencies a team needs before using the style at all: rapid provisioning, basic monitoring, rapid application deployment, and a DevOps culture in which developers and operations work closely together.

Why it works

Distribution is never free. Every network call can fail, slow down or arrive out of order. Handling that well takes tooling, skills and time that a single process does not need.

The benefits arrive with complexity. Independent deployment, team autonomy and separate scaling matter most when the system and the organisation are large. Below that point you pay the cost without getting the benefit.

Many monolith problems are not inherent. Slow releases and tangled code can often be fixed with modularity and continuous delivery, without distributing anything.

Where it applies

  • New systems, where teams are tempted to start with microservices by default.
  • Small teams, where the operational load of many services falls on few people.
  • Modernisation plans, which often assume microservices are the target without asking why.
  • Platform investment cases, to show what must exist before teams can afford the style.

How to apply

  1. Name the complexity driver: large teams, sheer size, independent business areas, very different scaling needs.
  2. Check the prerequisites honestly: provisioning, monitoring, deployment pipelines, and how incidents are handled.
  3. Try a modular monolith first if the driver is weak or the prerequisites are missing.
  4. Build the platform before the services, so the premium is affordable when you do split.

Example scenario

A five-person team adopted microservices for a new product with no automated deployment or distributed tracing. Half of every sprint went on infrastructure and on debugging failures that spanned several services.

In a review, the architect asked what problem the services were solving. The honest answer was "none yet". The team merged most services into a modular monolith, kept one with genuinely different scaling needs, and invested in a deployment pipeline and tracing before considering further splits.

Questions to ask

  • Is this system genuinely too complex to manage as a well-modularised monolith?
  • Can we provision, monitor and deploy a new service in hours today?
  • What specific problem do we expect microservices to solve that we cannot solve another way?

When not to use it

  • Systems already too large for one team or one codebase, where the premium is clearly worth paying.
  • Organisations with a mature platform, where much of the premium has already been paid.

How it misleads you

Treating the premium as fixed forever. Platforms and tooling can reduce it substantially over time. The opposite trap is using the premium to defend a monolith that has outgrown its teams long after the crossover point has passed.

In the wild

Further reading

Last reviewed · Suggest an improvement