Dezen Technology
All articles
ArchitectureApr 3, 20268 min read

Modular monolith vs microservices for a 5-engineer team

Microservices solve team-coordination problems, not technical ones. Below ~30 engineers, modular monolith wins on every axis. Here’s the framing we use.

Modular monolith vs microservices for a 5-engineer team

Every six months a different team asks us the same question: “Should we be on microservices?” The honest answer for most teams under 30 engineers is no — and the honest reason isn’t “monoliths are cool again,” it’s that microservices solve organizational problems, not technical ones.

If you don’t have the organization that microservices were designed for, you get the operational cost of microservices without the benefits. Here’s the framing we use.

Modular monolith vs microservices — side-by-side comparison of structure and trade-offs

What microservices actually buy you

Microservices give you independent deployability per team. That is the single benefit; everything else (scalability, fault isolation, technology diversity) is either a side-effect or a marketing claim.

Independent deployability matters when you have enough teams that they’d step on each other’s release schedules in a shared codebase. Rule of thumb: at 30+ engineers across 5+ product areas, microservices start paying off. Below that, the coordination overhead they impose is bigger than the coordination overhead they save.

The modular monolith: a better default for small teams

A modular monolith is a single deployable, but internally organized into modules with clear boundaries — ideally each module exposes a public interface, owns its database tables, and forbids cross-module access except through that interface.

You get:

  • One repo, one CI pipeline, one deploy — zero distributed-systems debugging
  • Transactions across modules when you need them (you will)
  • Refactoring across modules in a single PR (you will)
  • The option to peel off a module into its own service later, when the team grows

You miss:

  • Per-team deploy independence (only relevant once you HAVE multiple teams)
  • Per-service horizontal scaling (almost no one actually needs this until later)

The microservices tax most teams underestimate

Distributed systems have a tax that compounds:

  • Network calls fail.Every cross-service call needs retries, timeouts, circuit breakers, idempotency keys. Code you didn’t have to write before.
  • Eventual consistency.Two services + one event bus = a saga pattern, compensating transactions, and weekend incidents about “why is the order in service A but not service B?”
  • Observability.Distributed tracing, structured logging across services, correlation IDs — mandatory infrastructure that doesn’t exist in a monolith because the call stack already does that job.
  • Local dev.“Run the app” goes from one command to docker-compose with 12 containers. Onboarding gets slower; CI gets longer.

None of these are dealbreakers IF you have the team to absorb the cost. They are dealbreakers if you don’t.

When microservices are actually right

  • You have 30+ engineers organized into 5+ teams who can’t plausibly all merge to one main branch comfortably.
  • You have a workload with genuinely different scaling profiles — e.g. one surface needs 200 cores for 30 minutes a day, the rest needs 4 cores all day.
  • You have a regulatory boundary — one piece must live in a hard-isolated environment (PCI scope, healthcare PHI, etc.).
  • You have a tech-stack boundary that can’t be bridged — ML inference must be in Python, the rest of the system is in Go.

If none of these apply, you have a team-cost problem, not a service-architecture problem.

The middle path that actually works

Start as a modular monolith. As the team grows past ~20 engineers, identify the ONE module that’s cleanly separable AND whose team is feeling the deploy-coordination pain. Peel it off as a service. Repeat as needed. You’ll end up with a “monolith plus a few services” architecture — which is what most successful companies actually run, even the ones that talk about “microservices at scale”.

How we approach this

Default for the SaaS products we build through SaaS Product Development is a modular monolith with strict module boundaries — ready to be peeled apart when the team is big enough to need it. We’d rather extract a service in week 80 than write distributed-systems plumbing in week 8.

Takeaways

  • Microservices solve team-coordination problems, not technical problems.
  • Below ~30 engineers, modular monolith wins on every axis.
  • The microservices tax (network, consistency, observability, dev-loop) is real.
  • Extract services as the team grows, one at a time, only when the pain shows up.
  • Most “microservices” companies actually run monolith-plus-a-few.
Keep reading

More from the engine room

AI in QA: where it helps, where it doesn’t

May 27, 2026

AI in QA: where it helps, where it doesn’t

AI augments QA throughput — test generation, triage, visual regression. It doesn’t replace QA judgment: strategy, exploratory testing, and defining correctness stay human.

Read More
Controlling LLM costs in production

May 25, 2026

Controlling LLM costs in production

Four levers cut spend 10x without cutting quality: route by difficulty, cache, trim context, batch and stream. Measure cost-per-feature first; set budget guardrails always.

Read More
RAG vs fine-tuning: which do you actually need?

May 23, 2026

RAG vs fine-tuning: which do you actually need?

Facts → RAG. Behavior → maybe fine-tune. Most business AI features want RAG even when teams ask for fine-tuning. The decision rule and the order to try things in.

Read More
Agentic features in SaaS: the maturity ladder

May 21, 2026

Agentic features in SaaS: the maturity ladder

From manual to autonomous — four levels of autonomy and the guardrails each needs. Match autonomy to the cost of being wrong, not to how impressive it sounds.

Read More
Offline-first mobile: the app that works on the subway

May 19, 2026

Offline-first mobile: the app that works on the subway

The UI never waits on the network. Local DB, sync engine, server — with conflict resolution per data type. The architecture that makes mobile apps feel instant.

Read More
Lift-and-shift vs refactor: how to actually decide

May 17, 2026

Lift-and-shift vs refactor: how to actually decide

Lift-and-shift is fast, cheap to do, expensive to keep. Refactor is months of work with structural upside. The matrix — and why half-finished refactors are the worst path.

Read More
Monolith migration: the strangler-fig playbook

May 15, 2026

Monolith migration: the strangler-fig playbook

The big-bang rewrite is the most consistently bad idea in software. Proxy in front, extract one route at a time, shrink the monolith to nothing. No migration day.

Read More
SOC 2 readiness in plain English

May 13, 2026

SOC 2 readiness in plain English

Five Trust Service Criteria, Security mandatory and the rest optional. Type 1 vs Type 2. The pragmatic 6-month timeline — not the year-long ordeal it’s made out to be.

Read More

Let’s Build the Future Together!

Contact our team today and turn your ideas into reality.

Let’s Discuss
Contact Details : sales@dezentech.com Sy. No:40, Flat No:402, SIRISAMPADHA ARCADE I, Plot no:18-21, behind Union Bank of India, Khajaguda, Hyderabad, Telangana 500104