· 3 min read · Software Architecture

The Monolith Is Not the Enemy

Most systems do not suffer from being one codebase. They suffer from unclear boundaries inside it, which microservices then distribute and make harder to see.

Organize a monolith into explicit modules with owned data and narrow interfaces. Split a piece into a service only when it has a scaling, ownership, or reliability reason of its own.

Distribution is a cost, not a virtue

Every service boundary converts a function call into a network operation with timeouts, retries, partial failures, and a deployment schedule. That cost is sometimes worth paying. It is never free, and paying it to escape messy code just ships the mess across a wire where it is harder to debug.

The question I ask teams is boring on purpose: what actually improves the day this becomes a service? Independent scaling, a separate release cadence, a hard security boundary. If the answer is that the diagram will look cleaner, the diagram is not a user.

A modular monolith is a real architecture

Inside one deployable unit, you can still have strict discipline: modules that own their tables, talk through small interfaces, and are forbidden from reaching into each other's internals. That gets you most of what people actually want from microservices, which is the ability to change one area without fearing another, at a fraction of the operational bill.

It also keeps your options open. A module with clean edges can be extracted later in weeks. A module smeared across twelve services takes a program, a freeze, and several apologies.

“Earn your complexity. A service boundary should be a receipt for a problem you actually have.”

When splitting is the right call

Sometimes it genuinely is: one workload needs to scale ten times past everything else, a component must fail independently, or a team boundary has become a real organisational fact. Split then, along the module lines you already drew, and split one piece at a time while the monolith keeps the lights on.

Architecture is not an identity. It is a series of reversible, affordable decisions made in the right order.