Skip to content
Getting Digital

Microservices

Also: microservice architecture, service-oriented architecture, distributed monolith, modular monolith

Microservices is an architectural style in which one application is built as a set of small services, each running in its own process, owning its own data and talking to the others over lightweight network calls, so that each can be built, deployed and scaled on its own.

Assessment. Most teams should begin with a well-structured monolith and extract a service only where a boundary has proved itself in production. The costs of the style (network failures between services, distributed data, deployment tooling and on-call coverage for many processes) are incurred from the outset, while the benefits of independent releases and team autonomy appear only at a scale most products do not reach.

James Lewis and Martin Fowler gave the style its reference description in 2014: a single application developed as a suite of small services, each in its own process, communicating through lightweight mechanisms, often an HTTP resource API. The nine characteristics they listed still define it: services as components, teams organised around business capabilities rather than technical layers, products not projects, smart endpoints and dumb pipes, decentralised governance and data, infrastructure automation, design for failure and evolutionary design. The unit of deployment shrinks from the application to the service, and that one change drives everything else.

Three things change when the application is cut into processes. Deployment becomes independent: the payments team ships on Tuesday without waiting for the search team's release, which is the benefit the style is bought for. Data becomes distributed: each service owns its tables, a report that joined two of them with one SQL statement now needs an API call or a copied dataset, and a transaction across services is no longer a transaction. Failure becomes partial: a call over the network can time out or return an old answer, and every service must decide what to do when a neighbour is down. The last two are the engineering cost of the first.

ConcernMonolithMicroservices
DeploymentOne artefact, one release trainOne artefact per service, released independently
DataOne database, joins and transactionsA store per service; joins become API calls
FailureA function call either works or throwsNetwork calls time out; retries, timeouts and fallbacks are code
Team shapeShared codebase, coordination by reviewA team per service, coordination by contract
OperationsOne process to run and watchContainers, orchestration, tracing across processes

The operational overhead is why the style is accompanied by containers, Kubernetes and a tracing system that follows one request through ten processes; a team without those capabilities is not ready, regardless of the architecture diagram. The usual failure is the distributed monolith: services split along the wrong lines that must all be deployed together and share a database, which keeps every cost and discards every benefit. Fowler's advice from 2015 holds: build the monolith first, keep its modules honest, and extract a service when a part of the system needs its own release cadence, its own scaling or its own team. Cloud exams cover the style from the platform side; the AWS Developer Associate scope includes building services and the messaging between them, and the pipeline and delivery courses cover the machinery it requires.

In practice

  • A shop at launch: catalogue, basket, checkout and accounts in one deployable application with one database. Two engineers, one release a day, a join answers every report. Splitting this would add a network between four functions that change together.
  • The same shop at forty engineers: checkout changes weekly under payment-provider rules, search changes daily, and every release blocks on the slowest team. Checkout becomes a service with its own store and release; the rest stays. The split follows the measured need, not the diagram.
  • The distributed monolith: twelve services that share one schema and must be released in order. Every incident involves four on-call engineers; no release is independent. This is the outcome to avoid, and it comes from splitting before the boundaries were known.

Often confused with

Serverless Computing
Serverless is a way of running code (functions the platform starts on demand and bills per call); microservices is a way of structuring an application. A microservice can run on a server, in a container or as serverless functions.
Containers
A container packages one process with its dependencies; it is the usual way to ship a microservice, and a monolith ships in a container just as well. The container is the box, the microservice is a decision about what goes in each box.
REST API
REST is how services usually talk to each other; microservices is the decision to have separate services at all. A monolith can expose a REST API, and services can talk over queues or gRPC instead.

Key takeaways

  • →The unit of deployment shrinks to the service; independent releases are the benefit, distributed data and partial failure are the price.
  • →Monolith first. Extract a service when a part needs its own release cadence, scaling or team, and not before.
  • →A split with a shared database and lock-step releases is a distributed monolith: all of the cost, none of the benefit.

Related concepts

  • RelatedContainers

    A container is the usual unit in which one service is packaged and run.

  • RelatedREST API

    Services most often talk to each other over HTTP resource APIs.

Where this concept sits in the field

Certifications that test this

Vendor exams whose syllabus covers this concept: facts, cost and a preparation path on each page.

FAQ

How small is a microservice?
Small enough that one team owns it end to end and can rewrite it in weeks, large enough to own a business capability and its data. Size in lines of code is the wrong measure; the test is whether it can be deployed on its own without coordinating with another team.
Do microservices need Kubernetes?
They need some way to run, place, restart and address many processes, and Kubernetes is the common answer at scale. Smaller systems run on a managed container service or serverless functions. Running a dozen services by hand on virtual machines is possible and is where most of the on-call pain comes from.
What is a modular monolith?
One deployable application with strict internal boundaries between modules, each owning its data tables and talking to the others through defined interfaces. It keeps the option of extracting a module into a service later and gives most of the design benefit without the network.

Sources

The primary text this definition rests on. Read it before relying on this one.

Last reviewed 3 October 2026 · Getting Digital