Monolith vs Microservices

Monolith means one deployable. Microservices means many small deployables. Both are valid choices. The right answer depends on team size, scaling needs, and operational maturity, not on what is fashionable.

The two extremes

A monolith is one application. One codebase, one process, one deploy. Everything talks to everything via function calls. The classic Rails app, the classic Django app, most early-stage products.

Microservices is the opposite: many small services, each with its own codebase, database, and deploy. They talk over the network. Each service owns one business capability.

The world fell in love with microservices around 2014 because Netflix and Amazon evangelized them. Then half the teams that adopted them quietly went back to monoliths. The truth is in the middle.

What monoliths give you

What monoliths cost you (eventually)

What microservices give you

What microservices cost you

MONOLITH one process orders payments users email shared database MICROSERVICES orders payments users email search analytics each owns its data, deploys independently
Monolith puts everything in one box. Microservices split it. Both work; the cost profile differs.

The senior decision framework

Choose monolith if:

Choose microservices if:

The "modular monolith" middle ground A well-organized monolith with strict module boundaries gives you most of the benefits of microservices without the operational pain. Many successful companies (Shopify, Basecamp) run massive monoliths on purpose. Microservices later, if and when you need them.

Migration paths

The path most companies actually take: start with a monolith. Once one part of it has different scaling, ownership, or release cadence needs, extract just that part as a service. Repeat as needed. Don't try to "go microservices" in one big rewrite. That's the move that ends careers.