What Is a Microservice? A Plain-English Guide With Examples

What Is a Microservice?

Direct answer: A microservice is a small, independently deployable service that handles one business capability, owns its own data, and talks to other services over a network through defined APIs. An application built from many such services is said to use a microservices architecture. Teams use them to release, scale, and fix parts of a system separately.

By [AUTHOR NAME, credentials]. Last updated: October 16, 2026.

  1. Key Takeaways
  2. What does “microservice” actually mean?
  3. How do microservices work?
  4. Microservices vs. monolith vs. modular monolith
  5. The 5-Question Microservice Test
  6. A worked example: splitting an online bookstore
  7. Why did Prime Video simplify its design?
  8. Benefits and costs
  9. Should you use microservices? A readiness scorecard
  10. Common mistakes
  11. Best practices
  12. Common tools
  13. FAQ
  14. Conclusion and next steps
  15. Sources
  • A microservice is defined by independent deployability and a single business focus, not by lines of code.
  • Each microservice should own its data. Shared databases are the most common way teams accidentally build a distributed monolith.
  • Microservices trade code complexity for operational complexity: network calls, monitoring, and data consistency become your problem.
  • A modular monolith is often a better first step for small teams or unproven products.
  • Size is a poor guide. Ownership, boundaries, and release independence are better ones.
  • Even Amazon’s Prime Video team simplified one microservices-based tool when its cost and scaling limits bit.

A microservice is one self-contained program that does one business job and can be released without redeploying anything else. Examples of such jobs are checking inventory, charging a card, or sending a receipt.

There is no single official definition. James Lewis and Martin Fowler wrote the influential 2014 article on the style precisely because the term lacked one, and they chose to describe common characteristics instead. Sam Newman’s Building Microservices (2nd edition, O’Reilly, 2021) boils it down to services that can be released independently and are modeled around a business domain.

How is a microservice different from a “service” or an “API”?

  • Service: any program that provides functionality to other programs.
  • API: the interface through which others request that functionality.
  • Microservice: a service that is deliberately small in responsibility, independently deployable, and usually owns its data.

An API is how you talk to a microservice. It is not the microservice itself.

What traits do most definitions share?

Based on the Fowler/Lewis article, Microsoft’s Azure Architecture Center, and a Manning excerpt on .NET microservices, the recurring traits are:

  • Built around one business capability
  • Deployed on its own, ideally automatically
  • Owns its own data store
  • Communicates through well-defined interfaces
  • Small enough for a small team to understand and maintain
  • Replaceable without rewriting its neighbors

Each microservice runs as its own process, and services cooperate by sending requests or messages across a network. The application you see is the combined result.

What does a request look like?

  1. A user action reaches an entry point, often an API gateway.
  2. The gateway routes it to the right service.
  3. That service may call others synchronously (a direct request, such as HTTP) or asynchronously (a message left on a queue).
  4. Each service reads and writes only its own data.
  5. The results are combined and returned to the user.

What infrastructure usually surrounds them?

Containers package services, an orchestrator runs them, and observability tools trace requests across them. Microsoft’s guidance names Azure Kubernetes Service, Azure Container Apps, and Azure Functions as compute options. AWS’s whitepaper names Amazon ECS, EKS, Fargate, EC2, and Lambda.

A monolith deploys as one unit, a microservices system deploys as many independent units, and a modular monolith is one deployable unit with strictly enforced internal boundaries.

FactorMonolithModular monolithMicroservices
DeploymentOne unitOne unitMany independent units
Internal boundariesOften informalEnforced in codeEnforced by the network
Calls between partsIn-processIn-processOver the network
DataUsually one shared databaseOne database, separated by moduleEach service owns its data
Team fitSmall teamsSmall to mid-size teamsMultiple teams
Main costTangling over timeNeeds discipline to keep boundariesOperations and distributed-systems complexity

Sources for the comparison logic: Martin Fowler’s talk as reported by InfoQ, and engineering write-ups on modular monoliths by Milan Jovanović and FullStack.

A useful nuance from the modular-monolith camp: if modules reach directly into each other’s database tables, you do not have a modular monolith, you have a monolith with folders.

This is an original heuristic from iTechPulseHub, not an industry standard.

Run any candidate “microservice” through these questions. Fewer than four yeses suggests you have a module, not a microservice.

  1. Can it be released alone? If a change forces a coordinated release of other services, it fails.
  2. Does it own its data? If another service reads its tables directly, it fails.
  3. Does it map to a business capability? “Payments” passes. “Utility functions” does not.
  4. Can one small team understand and run it? If it takes a committee, it is too large or too tangled.
  5. Can it fail without taking everything down? If one outage cascades through tight call chains, it is not isolated.

This example is fictional and illustrative.

Imagine a small bookstore app, one codebase, one database. Orders slow down every Friday evening, but the catalog and blog stay quiet.

  1. Spot the pressure. Checkout needs more capacity than anything else. That is a concrete driver, not a fashion choice.
  2. Draw the boundary. Checkout and payment become a candidate service. Catalog and accounts stay put.
  3. Separate the data. Move payment records to their own store. The main app asks the payment service for results instead of querying its tables.
  4. Automate release. Give the payment service its own deployment pipeline and monitoring.
  5. Stop. The app is now a monolith plus one microservice, which is a legitimate, common outcome.

The lesson: extraction should be driven by a specific need such as scaling, team ownership, or fault isolation. A desire to “use microservices” is not a need.

Amazon’s Prime Video team reported cutting infrastructure costs by over 90% after consolidating one monitoring tool into a single process.

In a March 2023 post, engineer Marcin Kolny described the team’s video-quality inspection tool. It had been built from serverless components coordinated by AWS Step Functions. The team said it ran into hard scaling limits at roughly 5% of the expected load, and that the cost of the building blocks was too high for large-scale use (as reported by The Stack). Per InfoQ’s summary, the fix was to move the workload onto EC2 and ECS.

Two cautions keep this story honest:

  • It is one tool, not all of Prime Video. One analysis noted that the wider platform is still built on microservices.
  • The label is disputed. Amazon’s own Adrian Cockcroft framed the outcome as a long-running microservice scaled horizontally, and The Stack noted it may be one large microservice rather than a true monolith.

Kolny himself stressed that choosing between microservices, serverless, and a monolith has to be decided case by case. The takeaway is that granularity is a cost decision, not a virtue.

What do microservices do well?

  • Independent releases: teams ship their own service on their own schedule.
  • Targeted scaling: add capacity only where demand is.
  • Fault isolation: one service can fail while others keep working, if designed for it.
  • Technology choice: different services can use different languages or databases.

What do they cost?

  • Network problems: calls can be slow or fail, unlike in-process calls.
  • Data consistency: there are no simple cross-service transactions.
  • Operational load: many deployables to monitor, secure, and version.
  • Debugging difficulty: one user action may touch a dozen services.

Original iTechPulseHub heuristic. Score 1 point per “yes.”

  1. Do you have more than one team that needs to release independently?
  2. Do you have a specific scaling or isolation problem a monolith cannot solve?
  3. Is deployment already automated (CI/CD)?
  4. Do you have centralized logging, metrics, and tracing?
  5. Are your domain boundaries reasonably stable?
  6. Is someone on the team experienced with distributed systems?
ScoreSuggestion
0-2Stay with a well-structured monolith
3-4Try a modular monolith; extract one service if a clear driver appears
5-6Microservices are a reasonable option

Martin Fowler has said he leans toward starting with a monolith when unsure and evolving later, according to a conference-talk write-up by Juri Strumpflohner.

  • Splitting too early, before boundaries are understood.
  • Sharing one database across services.
  • Chatty call chains, where one request triggers many sequential calls.
  • Splitting by technical layer (a “database service,” a “UI service”) instead of by business capability.
  • Skipping observability, then being unable to trace failures.
  • Building a distributed monolith, where services must still be deployed together.
  • Model services around business domains. Domain-driven design helps find stable boundaries.
  • Give each service its own data and a stable, versioned API.
  • Automate build, test, and deployment from day one.
  • Design for failure: timeouts, retries, and graceful fallbacks.
  • Extract services one at a time, from a modular monolith where possible.
  • Document who owns each service.
NeedExamples
PackagingDocker
Running containersKubernetes, Amazon ECS/EKS, Azure AKS
Serverless optionAWS Lambda, Azure Functions
Traffic and securityIstio, Linkerd, Consul
TracingJaeger, Zipkin

Sources: AWS whitepaper Implementing Microservices on AWS; Microsoft Azure Architecture Center; Virtana glossary.

A microservice is best understood by what it lets you do: release, scale, and replace one business capability without touching the rest. If you cannot do that, the label does not apply, however many services you have.

A microservice is one small piece of a larger application that does a single business job, such as handling payments or sending emails. It runs on its own, can be updated without redeploying everything else, and talks to other pieces through APIs. Think of it as one specialist on a team, rather than one person doing every task.

A monolith ships as one deployable unit, so all features are built, tested, and released together. Microservices split features into separately deployable services that communicate over a network. Monoliths are simpler to operate. Microservices allow independent releases and scaling but add distributed-system complexity, including network failures, data consistency, and monitoring across many services.

No. An API is an interface, a defined way to request something from software. A microservice is a deployable program that usually exposes an API so others can use it. Many microservices offer REST or messaging interfaces, but an API can also belong to a monolith, so the two terms describe different things.

There is no agreed size. As InfoQ reported from a 2014 talk, Martin Fowler observed that people prefer to discuss responsibility rather than size. A practical test is whether one small team can own it, it maps to one business capability, and it can be replaced without rewriting its neighbors.

No, but they help. Containers package a service with its dependencies, and orchestrators like Kubernetes run many of them. Microsoft and AWS guidance lists container platforms such as AKS, ECS, and EKS, plus serverless options like Lambda, as common hosts. A microservice can also run on plain virtual machines if you can deploy it independently.

Avoid them if you have a small team, an unproven product, or no automated deployment and monitoring. Their costs, such as network failures, data consistency, and operational overhead, appear immediately, while their benefits mostly appear at larger scale. A well-organized monolith, or a modular monolith, is usually a safer starting point.

Not exactly. Martin Fowler describes microservices as a narrower style within the broader idea of service-oriented architecture, as InfoQ reported from a 2014 talk. SOA’s meaning varies widely and is often associated with central middleware, while microservices emphasize small autonomous services, simple communication, and independent deployment.

It is a system split into several services that still must be changed and deployed together, usually because they share a database or call each other in tight chains. You pay the network and operations costs of microservices without gaining independent releases. Avoid it by giving each service its own data and a stable API.

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *