Microservice Trade-Offs

Many development teams have found the microservices architectural style to be a superior approach to a monolithic architecture. But other teams have found them to be a productivity-sapping burden. Like any architectural style, microservices bring costs and benefits. To make a sensible choice you have to understand these and apply them to your specific context.

Translations: Japanese · Korean
Photo of Martin Fowler

01 July 2015

    Microservices provide benefits…

  • Strong Module BoundariesMicroservices reinforce modular structure, which is particularly important for larger teams.
  • Independent DeploymentSimple services are easier to deploy, and since they are autonomous, are less likely to cause system failures when they go wrong.
  • Technology DiversityWith microservices you can mix multiple languages, development frameworks and data-storage technologies.

    …but come with costs

  • DistributionDistributed systems are harder to program, since remote calls are slow and are always at risk of failure.
  • Eventual ConsistencyMaintaining strong consistency is extremely difficult for a distributed system, which means everyone has to manage eventual consistency.
  • Operational ComplexityYou need a mature operations team to manage lots of services, which are being redeployed regularly.


+ Recent posts