DEV Community

Cover image for Stop Starting with Microservices (Build a Monolith First)
Damir Karimov
Damir Karimov

Posted on • Originally published at blog.damir-karimov.com

Stop Starting with Microservices (Build a Monolith First)

Most startups don't fail because they chose a monolith.

They fail because they never built something people actually want.


The "Microservices from Day One" Trap

If you hang out on YouTube, Reddit, or X, you've probably seen this take:

"Serious applications use microservices."

It sounds right.

It sounds modern.

It sounds like what Netflix, Uber, and Amazon are doing.

So teams copy the architecture… before they even have 100 users.

What they end up with:

  • Weeks (or months) of infrastructure work
  • Multiple repositories
  • Complex CI/CD pipelines
  • Painful debugging across services
  • And barely any actual product

The real mistake isn't choosing a monolith.

It's solving problems you don't have yet.


Why Microservices Feel So Attractive

Let's be honest — microservices are fun.

You get to play with:

  • Docker
  • Kubernetes
  • API Gateways
  • Message brokers (Kafka, RabbitMQ)
  • Distributed tracing
  • Event-driven systems

It feels like real engineering.

But here's the uncomfortable truth:

Complexity does not create business value.

Your users don't care how your services communicate.

They care if your product works.


The Hidden Cost Nobody Mentions

Imagine you're building a SaaS.

Instead of one app, you split it into:

  • Auth service
  • User service
  • Billing service
  • Notification service
  • Analytics service

Looks clean on a diagram.

Now a user can't register.

Where's the bug?

  • Auth service?
  • User service?
  • API Gateway?
  • Kafka?
  • Network?
  • Database?
  • Docker config?
  • Kubernetes?

A simple feature now spans multiple services and repos.

Instead of building features…

you're chasing logs across your system.


What You Actually Get with a Monolith

A monolith isn't outdated.

It's just one deployable application.

That gives you:

  • One codebase
  • One deployment
  • One database
  • One place to debug
  • One place to search

For early-stage products, this means:

  • Faster development
  • Simpler debugging
  • Easier onboarding
  • Lower infrastructure costs
  • Fewer production surprises

Most importantly: you spend time building product, not infrastructure.


"But What About Scaling?"

This is the default objection.

Here's the reality:

Most apps never reach the point where a monolith is the bottleneck.

Examples:

  • Instagram started as a monolith
  • GitHub ran as a monolith for years
  • Shopify is still largely monolithic internally

Even at scale, many companies use modular monoliths, not pure microservices.

Scaling users matters more than scaling architecture.


The Real Problem: Bad Design

People often blame monoliths for what is actually poor code structure.

A bad monolith looks like:

  • Massive classes
  • Circular dependencies
  • Duplicated logic
  • No clear boundaries

But microservices don't fix bad design.

They distribute it.

Now instead of one messy codebase…

you have ten.


The Sweet Spot: Modular Monolith

You don't have to choose between chaos and complexity.

Start with a modular monolith.

Structure your app by domain:

src/
  auth/
  users/
  billing/
  notifications/
  analytics/
  shared/
Enter fullscreen mode Exit fullscreen mode

Each module owns:

  • Business logic
  • Data access
  • Services
  • API layer

Modules talk through clear interfaces, not internal hacks.

You keep:

  • Simple deployment
  • Clean boundaries
  • Flexibility for future scaling

And when a module actually needs to be extracted…

you already know where to cut.


When Microservices Actually Make Sense

Microservices do solve real problems.

But only when those problems exist.

They make sense when:

  • Multiple teams need independent deployments
  • Different parts of the system scale differently
  • You need different tech stacks per service
  • Deployments are slowing you down
  • Failures must be isolated

Notice something?

These are not early-stage startup problems.


Architecture Is a Business Decision

Architecture is not a flex.

It's a trade-off.

Move to microservices when your business needs it — not when Twitter tells you it's "industry standard."

  • If deploy takes 30 seconds → you don't need Kubernetes
  • If one DB handles your load → don't split it into 10
  • If your team fits in one room → you don't need 20 services

A Simple Rule

Start simple.

Measure.

Find bottlenecks.

Then optimize.

Not the other way around.


Final Thought

The best architecture is not the most impressive one.

It's the one that helps your team ship valuable features every week.

Build the product first.

Earn the complexity later.

Because users don't buy architectures.

They buy solutions.

Top comments (0)