Say the word monolith in a room full of software engineers and watch the eyebrows rise.
“Oh, you mean that legacy beast we inherited from the previous generation?”
You’d think we were talking about a dusty old server in someone’s uncle’s basement. And sure, there’s truth in the stereotype—monoliths have a reputation for being rigid, slow to change, and painful to scale.
But here’s the twist: monoliths never left. In fact, they’re everywhere.
An API gateway? A monolith.
A data lake? Often a monolith.
Even a single microservice? You guessed it—also a monolith.
So instead of treating monoliths as relics, what if we viewed them as foundational styles—structures we deliberately choose to build?
Let’s take a walk through four of the most common monolithic architectures: Layered, Modular, Pipeline, and Microkernel. They each tell a different story, and each has its place.
Layered Monolith
The Traditional Hotel Tower
Imagine you’re in a well-run hotel. There’s a garage in the basement, a welcoming lobby, floors of guest rooms, and a fancy penthouse suite on top. Everything is stacked in layers—and that’s exactly what a Layered Monolith is.
It’s the classic architecture pattern many of us learned early in our careers. From the bottom up:
Database Layer – Where the data lives.
Persistence Layer – Maps data to application structures.
Business Layer – Where the real logic happens.
Presentation Layer – What the outside world sees.
This design emerged in the 1970s and '80s, shaped by the rise of structured programming and later codified in Martin Fowler’s Patterns of Enterprise Application Architecture.
When it works well:
Layered architecture is great when you need clear responsibility boundaries and tight control over data and logic. Consider small to mid-sized internal tools or systems that require prioritizing consistency.
When it holds you back:
Scaling horizontally is hard. Each layer is tightly bound to the others. And when one changes, the rest often need to follow. Updates? Slower. Flexibility? Limited.
Personally, I no longer reach for this style as a foundation. But inside a distributed system? It’s a perfect fit for structuring microservices. Even small building blocks need clean layers.
Modular Monolith
The Shopping Mall Under One Roof
Now, picture a giant shopping mall. Food court in one corner, cinema upstairs, supermarket on the ground floor—all different zones, but still one building. That’s the Modular Monolith.
Instead of stacking responsibilities in layers, we slice them into modules—independent, end-to-end business units. Each one owns its own logic, data, and interface. It’s like building microservices without the network hops.
Take an e-commerce platform:
Product Catalog handles browsing and searching.
Cart & Payments handles orders.
Shipping tracks deliveries.
Inventory manages stock.
It’s all still one deployable unit—but the internal boundaries are sharp and clear.
Why I love it:
This is my go-to recommendation for new systems. It provides fast development, strong cohesion, and a clear path to microservices when needed. You don’t overpay on complexity before it’s justified.
Where it struggles:
You can’t independently deploy each module. Faults in one area may affect others. And if teams are large and working on overlapping or conflicting areas, coordination becomes tricky.
Still, this is the monolith that grows well. Start modular, and you’ll never be trapped.
Pipeline Monolith
The Assembly Line for Data
Let’s move to a different setting: a car factory. Each step adds something—frame, engine, paint, inspection. The car moves down a line, gaining form stage by stage. That’s how a Pipeline Monolith works.
Data flows through a sequence of tightly connected steps:
Producer – Brings in raw data.
Transformer – Cleans or reshapes it.
Tester – Validates and filters.
Consumer – Saves or displays the result.
This style is all about sequence. It’s ideal for data-intensive systems, such as ETL processes, analytics platforms, or video processing pipelines.
Where it shines:
When your work naturally flows in a step-by-step manner.
When components can be reused across flows.
When you want structure but not the full weight of microservices.
Where it stumbles:
Fault tolerance is hard.
Feedback loops complicate things.
Parallel execution and error handling become real headaches.
I don’t think of Pipeline Architecture as a full system style. I think of it as a pattern—a shape to give your data flows within a broader architecture.
Microkernel Architecture
The Power Base With Swappable Tools
Now, imagine a food processor. There’s one powerful base with a motor and controls. But the magic? It comes from the attachments, such as graters, mixers, and juicers.
This is the Microkernel Architecture: a stable, minimal core (the kernel) and a flexible set of plug-in features that extend functionality.
You see this pattern in operating systems (Linux, Windows), IDEs (Visual Studio Code), and platforms like Spark or Hadoop. Even your browser probably follows it.
And it’s powerful in modern apps too.
My favorite use case: AI Services
Think of the core as your service shell—encompassing logging, request handling, and API exposure. Then, connect different models (e.g., NLP, image processing) as plug-ins. Swap models in and out. Route traffic based on use case. All without touching the core.
Why it works:
You gain extreme flexibility.
You can add features without touching the core.
You can test, deploy, and iterate plug-ins separately.
But beware:
If your needs are real-time, highly interactive, or deeply coupled across modules, the microkernel can get overwhelmed. It’s best when extensibility outweighs raw performance.
Final Thoughts: Monoliths That Make Sense
Too often, we think of monoliths as the "before" picture in a system transformation story. But monoliths aren’t mistakes. They're choices. And when chosen deliberately, they offer speed, simplicity, and just enough structure to get things done.
The real magic isn’t in avoiding monoliths. It’s in knowing which kind you’re building—and why.
So the next time someone asks if you're "still on a monolith," smile and ask back:
“What kind of monolith are you on?”
Because the smart ones don’t fight the structure, they learn it, shape it, and build with intention.
Want to learn more?
🎓 Check out the course: Modeling, Viewpoints, C4
🌐 Follow us on LinkedIn: Software Architecture Guild
📖 Explore the Free Guide: Jump to Website