Skip to content
Web Development4 min read

Modular Monolith vs Microservices: Choosing an Architecture That Fits Your Team

Modular monolith vs microservices: how they differ on deployment, data, scaling, operations and team size, and when to extract services later.

01

Modular monolith or microservices?

Most growing products and teams are better served by a modular monolith: one deployable application with strong module boundaries, each owning its data. Move to microservices for specific parts when several teams need independent deployment, parts have very different scaling or reliability needs, and you have the operational maturity for distributed systems. Martin Fowler's MonolithFirst and microservice prerequisites articles explain the reasoning (MonolithFirst; prerequisites).

This guide is for CTOs and technical founders of SaaS and business applications. For ecommerce platforms specifically, see ecommerce microservices vs monolith.

02

Key takeaways

  • Architecture should fit team size and operational maturity.
  • Module boundaries matter more than deployment units.
  • Each module owns its data; no reaching into other modules' tables.
  • Extract services for a reason, not by default.
  • Microservices need automation, monitoring and tracing first.
03

Comparison

FactorModular monolithMicroservices
DeploymentOne unitMany independent units
Team fitOne to a few teamsSeveral autonomous teams
DataOne database, schemas or tables per moduleDatabase per service; eventual consistency
Calls between partsIn-process, fast, transactionalNetwork calls; partial failures
ScalingScale the whole app; often enoughScale services independently
OperationsSimpler monitoring and debuggingDistributed tracing, service discovery, more infrastructure
ChangeRefactoring across modules is easierContracts between services must be versioned
04

Designing good modules

  • Draw boundaries around business capabilities (billing, scheduling, catalogue).
  • Expose each module through a small public interface.
  • Keep each module's data private; access it only through its interface.
  • Enforce boundaries with code structure and automated checks.
  • Communicate between modules with events where coupling should be loose.
05

Extracting a service later

Extract a module when there is a clear driver: a separate team, very different scaling needs, a different technology requirement or isolation for reliability or security. Because the module already has an interface and owns its data, extraction mainly changes in-process calls to network calls; plan for timeouts, retries and versioning. See API versioning and the strangler fig pattern.

06

Teams and Conway's law

Systems tend to mirror the communication structure of the teams that build them. A single team running ten microservices spends much of its time on operations; several teams sharing one tangled codebase step on each other. Align modules or services with team ownership, and revisit as the organisation grows.

07

Hypothetical example: a SaaS at two stages

This example is hypothetical. A workforce SaaS with eight engineers rebuilt its tangled application as a modular monolith with modules for accounts, scheduling, timesheets and billing. Two years later, with four teams, the scheduling engine needed heavy compute at roster publication time, so it was extracted as a separate service behind its existing interface, with queue-based communication. Everything else stayed in the monolith.

08

Common mistakes

  • Starting with microservices for a small team.
  • A 'distributed monolith' where services share a database.
  • No module boundaries in the monolith.
  • Extracting services without monitoring and tracing.
  • Splitting by technical layer instead of capability.
09
10

Conclusion

A modular monolith is the sensible default for most growing teams. Invest in boundaries and data ownership, and extract microservices only where team structure, scaling or isolation needs justify the operational cost.

Deciding on architecture for your product?

ZSpace Labs is an India-based, remote-first technology studio working with Australian and international businesses on SaaS and business application architecture and development. If it would help to review your options, we are happy to talk it through.

Start a Project
FAQ

Common questions.

A single deployable application divided into well-defined modules with clear boundaries and interfaces, each owning its own data and logic. It keeps the operational simplicity of one deployment while avoiding the tangled code of an unstructured monolith.

Get in touch

Have a project in mind?

Whether you're building a new digital product, improving an existing website, or looking to automate part of your business — let's talk.