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.”
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
- Name the complexity driver: large teams, sheer size, independent business areas, very different scaling needs.
- Check the prerequisites honestly: provisioning, monitoring, deployment pipelines, and how incidents are handled.
- Try a modular monolith first if the driver is weak or the prerequisites are missing.
- 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
- Segment consolidates 140+ services, 2018Segment merged over 140 destination microservices into one service after operational overhead grew with each new destination and consumed several engineers. Deployment and shared-library work became easier, though it accepted that one crash could now affect every destination.Segment (Twilio) · 2018 (opens in a new tab)
- Prime Video monitoring service redesign, 2023Prime Video's stream-quality team moved from distributed Step Functions and Lambda components to a single process on ECS, cutting costs by 90% and removing scaling limits, concluding the distributed approach brought little benefit for that workload.InfoQ · 2023 (opens in a new tab)
Further reading
- Microservice PremiumMartin Fowler · Article · 2015(opens in a new tab)
- Microservice PrerequisitesMartin Fowler · Article · 2014(opens in a new tab)
Last reviewed · Suggest an improvement