Skip to main content Scroll Top

Monolith vs Microservices vs Modular Monolith: Which Architecture Should Your Application Use?

Updated September 2026 · Written and maintained by the Progression Agency strategy team

Monolith versus microservices is the architecture decision most likely to be made for the wrong reasons. This guide explains what each means, adds the modular monolith that most teams should actually choose, compares them on speed of development, scaling, reliability, cost, team structure and operations, and gives a rule for when to split a system into services.

On this page · 8 sections
  1. Definitions
  2. Why microservices are tempting and often wrong
  3. When microservices are the right call
  4. When a monolith (modular) is the right call
  5. How to build a monolith that can split later
  6. Cost and operations comparison
  7. Serverless and other options
  8. How Progression Agency architects applications

The short answerStart with a modular monolith: one deployable application with clear internal boundaries, one database, one pipeline. Move to microservices only when specific parts need to scale, deploy or fail independently, when separate teams own separate domains, or when technology constraints demand different runtimes. Microservices trade development simplicity for operational complexity: they need mature DevOps, observability and a team large enough to own several services. For most business applications and early SaaS products, the monolith wins on cost and speed for years.

Comparisons are based on each project’s official documentation as linked in the text. Progression Agency builds with all of the technologies compared and has no affiliate relationship with any of them.

Definitions

Monolith

One application, one codebase, one deployment, usually one database. All features run in the same process and call each other directly. Simple to build, test, deploy and debug; harder to scale selectively and to keep tidy as it grows without discipline.

Modular monolith

A monolith organized into modules with explicit boundaries and interfaces (for example, orders, billing, accounts), enforced by code structure and tooling, still deployed as one unit. It keeps the operational simplicity of a monolith while making later extraction of services possible.

Microservices

Many small, independently deployable services, each owning its data and communicating over the network (HTTP, gRPC, messaging). Each service can scale, deploy and fail on its own and can use its own technology. The cost is distributed-systems complexity: network failures, data consistency, service discovery, observability and many pipelines.

The usual path
Extract services from evidence, not anticipation.
Monolith vs modular monolith vs microservices
MonolithModular monolithMicroservices
Deployment units11Many
Databases11 (module-scoped tables)One per service
Development speed (early)FastestFastSlowest
ScalingWhole appWhole appPer service
Fault isolationLowLowHigh
Team structureOne teamOne or few teamsTeam per service
OperationsSimpleSimpleComplex (orchestration, observability, networking)
TestingSimpleSimpleComplex (contracts, integration)
Technology freedomOne stackOne stackPer service
Typical fitSmall apps, MVPsMost business apps and SaaSLarge products, many teams, uneven load

Why microservices are tempting and often wrong

Microservices were popularized by companies operating at enormous scale with hundreds of engineers. The benefits are real at that scale; the costs are real at every scale. A five-person team running twelve services spends its time on infrastructure instead of product, and a distributed monolith (services that must deploy together) is worse than either extreme. Amazon’s own Prime Video team published a case in 2023 of consolidating a microservice pipeline into a monolith to cut cost (Prime Video Tech blog), which is a useful reminder that the arrow points both ways. Martin Fowler’s MonolithFirst essay makes the same case.

When microservices are the right call

  • Parts of the system have very different load profiles (a search or media-processing component that must scale independently).
  • Separate teams own separate business domains and need to deploy without coordinating.
  • Reliability requirements demand that one component failing does not take down the rest.
  • Different components genuinely need different runtimes (for example, a Python machine-learning service beside a Node API).
  • The organization already has platform engineering, CI/CD, observability and on-call practices.

When a monolith (modular) is the right call

  • One team, or a few, building one product.
  • Requirements are still changing and boundaries are not yet clear.
  • Load is modest or uniform.
  • Operations capacity is limited.
  • Speed of delivery matters more than independent scaling.

How to build a monolith that can split later

  1. Organize code by business domain, not by technical layer.
  2. Give each module a public interface and forbid reaching into another module’s internals.
  3. Keep module data in module-owned tables and avoid cross-module joins in application code.
  4. Use events or explicit calls between modules so that dependencies are visible.
  5. Automate boundary checks in CI.
  6. Extract a service only when a specific module needs independent scaling, deployment or ownership.
Mono — Monolith. Simplest to build and run..
Mod — Modular monolith. Boundaries without network..
Micro — Microservices. Independence at a price..
Dist — Distributed monolith. The worst of both..
Ops — Operations. Services need mature DevOps..
Evid — Evidence. Split when a need is documented..

Cost and operations comparison

Operational demands
ConcernMonolith / modular monolithMicroservices
CI/CD pipelinesOneOne per service
HostingOne platform or containerOrchestration (Kubernetes, ECS) or many platform services
ObservabilityLogs and metrics for one appDistributed tracing, correlation, per-service dashboards
Data consistencyTransactionsSagas, eventual consistency
Local developmentRun one appRun many or mock them
Security surfaceOne boundaryMany network boundaries, service auth
Monthly infrastructure (planning)LowerHigher, plus engineering time

Serverless and other options

Serverless functions can implement either style: a monolith deployed as a few functions, or services as many. Event-driven architectures and the modular monolith are not exclusive; most modern SaaS products are modular monoliths with a few extracted services (search, media, notifications) and queues between them. See backend development services and SaaS hosting.

How Progression Agency architects applications

We build modular monoliths by default, in Next.js and Node or Django, with queues for background work and clean module boundaries, and we extract services only when a documented need appears. Architecture decisions are written down with the reasons. See custom software development, API development and choosing a tech stack.

Deciding on an architecture?

Describe the product, the team and the load; we will recommend monolith, modular monolith or services and explain why.

Get an architecture recommendation

Frequently asked questions

What is the difference between a monolith and microservices?
A monolith is one deployable application; microservices are many independently deployable services communicating over a network.
What is a modular monolith?
A monolith with enforced internal module boundaries, deployed as one unit and easier to split later.
Are microservices better than a monolith?
Only when independent scaling, deployment or team ownership is needed and the organization can operate them. Otherwise a modular monolith is faster and cheaper.
Should a startup use microservices?
Rarely. Start with a modular monolith and extract services when a specific need appears.
When should I split a monolith?
When a module needs to scale, deploy or fail independently, or when a separate team owns it.
What is a distributed monolith?
Services that cannot deploy independently, combining the costs of both approaches; a common anti-pattern.
Are microservices more scalable?
Per component, yes; a monolith scales as a whole, which is fine for most loads.
Are microservices more expensive?
Usually, in infrastructure and engineering time for pipelines, observability and networking.
Do microservices need Kubernetes?
Not necessarily, but they need orchestration or a platform that runs many services; Kubernetes is the common choice.
What is the modular monolith vs microservices debate?
Whether module boundaries inside one deployment give most of the benefits of services without the operational cost; for most teams they do.
Can serverless be a monolith?
Yes; deployment style and architecture are separate decisions.
How do microservices handle data?
Each service owns its data; cross-service consistency uses events and sagas rather than transactions.
What did Amazon Prime Video do?
In 2023 the team published a case of consolidating a serverless microservice pipeline into a monolith to reduce cost and complexity.
Which does Progression Agency use?
Modular monoliths by default, with services extracted only for documented needs.
What is the best architecture for a SaaS product?
A modular monolith with queues and a few extracted services where load or ownership requires.

Need software built?We design, build and support custom software, web apps and SaaS platforms, with a written scope first.

Get a software proposal

Get a free marketing proposal

Tell us what you are trying to grow and we will come back with a plan, not a pitch deck. Same-day reply on weekdays.

Privacy Preferences
When you visit our website, it may store information through your browser from specific services, usually in form of cookies. Here you can change your privacy preferences. Please note that blocking some types of cookies may impact your experience on our website and the services we offer.
Contact Us
0