What is microservices?

By Weapp · Updated

Microservices is an architecture where a system is split into small, independently deployed services that each have their own responsibility and communicate over the network. You gain independent releases and per-part scaling, but pay for it with operational and debugging complexity. Small teams and early-stage products should rarely start here.

Microservices is one of the most talked-about terms in modern systems development, and one of the most misunderstood. It’s sometimes presented as the obvious way to build things today. The truth is more nuanced. Here’s what microservices actually is, and when it’s worth the cost.

The definition

Microservices is an architecture where a system is split into many small, independent services. Each service has its own, well-defined responsibility – one handles payments, another user accounts, a third notifications – and they’re deployed separately and communicate with each other over the network.

The key word is independent. Each service can be developed, released, and scaled independently of the others. They’re like a team of specialists who each do their own thing and coordinate, instead of one big generalist doing everything.

That sounds appealing, and for the right context it is. But to understand when it fits, you need to see it against the alternative.

The contrast with the monolith

A monolith is the opposite: a system that’s built, tested, and deployed as a single unit, where all the code lives in the same build. Where the monolith is a cohesive whole, microservices is a network of parts.

The difference isn’t that one is modern and the other outdated. They’re two ways of organizing the same thing, with different trade-offs: the monolith is simple to build, run, and debug in one place, while microservices buys independence at the price of spreading the whole out across many moving parts.

What you gain

The benefits of microservices are real, and they revolve around independence.

  • Independent releases. A single service can be updated and released without touching the whole system. A small bug in the notification service doesn’t require everything else to be retested and redeployed.
  • Scaling per part. If only one feature needs a lot of capacity, that specific service can be scaled on its own, while the rest is left alone. That can be more resource-efficient than scaling the whole system.
  • Parallel work. Different teams can each own a service and work at the same time without constantly stepping on each other’s code.

For a large organization with many teams that need to move independently, this is a significant win – often the real reason to choose microservices in the first place.

What you pay

Independence isn’t free, and the price is paid in complexity.

CostWhat it means
OperationsEvery service needs its own deployment, monitoring, and logging
The networkCalls between services become a new source of failure – slower and less reliable than internal ones
DebuggingHarder to follow a flow that passes through many services

Ten services are ten things that can break separately, each with its own monitoring. What was just a function call in a monolith now becomes network traffic that can fail or lag. And when something goes wrong, it’s harder to see where, since the flow winds through several parts. This is manageable – large companies do it every day – but it’s real work and expertise that has to be there.

When not to start here

The most important insight is that microservices solve an organizational problem more often than a technical one. If you don’t have that problem, you’re paying for a solution you don’t need.

The rule of thumb is clear: small teams and early-stage products should rarely start with microservices. A young system still finding its shape, or one run by just a few people, does best kept simple. Start with a well-structured (ideally modular) monolith, and break out services only once a real need – many teams, parts with widely different requirements – forces it. Splitting up too early is one of the most common and most expensive architecture mistakes.

If you’d like a neutral opinion on what your system actually needs, at Weapp we’re happy to think through the architecture together before you build.

Frequently asked questions

What's the difference from a monolith?

A monolith is built and deployed as a single unit, where all the code lives together. Microservices instead split the system into many small services that run and release separately and talk over the network. The monolith is simpler to build and run; microservices give you independent parts in exchange for considerably more complexity.

What do you gain with microservices?

Above all, independence. Each service can be released on its own without touching the whole system, and parts can be scaled individually – the heavy feature gets more capacity without affecting the rest. Different teams can each own a service and work in parallel. For large organizations with many teams, that's a real advantage.

What do you pay for that advantage?

Complexity in operations and debugging. Every service needs its own deployment, monitoring, and logging, and the network between them becomes a new source of failure. Understanding why something went wrong gets harder when the flow passes through many services. That's real work that often overshadows the technical gains for smaller systems.

When should you not use microservices?

When the team is small or the product is young. Splitting up a system that hasn't found its shape yet, or that's run by just a few people, adds operational and coordination cost without a matching payoff. The rule of thumb is to start simpler and break out services only once an actual need forces it.

Do all modern systems need microservices?

No, that's a common misconception. Microservices more often solve an organizational problem – many teams needing to work independently – than a purely technical one. Most systems are better served by a well-structured monolith, and can be broken up later if and when the need genuinely arises.