Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

What's the difference between a design pattern and a strategy? Is the monolith actually an anti-pattern?

share|improve this question
You're asking two completely different questions which have nothing to do with eachother above, one is a pro/con of a particular design, the other is a terminology question. – Jimmy Hoffa Nov 28 '12 at 4:38

They are architectures for operating systems.

monolithic == highly integrated OS with all core functions tightly coupled in a single executable.

microkernal == small OS kernel which implements only the most basic OS functionality (usually only process scheduling and some basic memory management) all other functions supplied by separate modules.

Microkernals sounds really good as an architecture/concept unfortunately it creates performance and security problems. The only microkernal OS you are likely to come accross in real life is Apples Darwin which still contains some vestages of the "mach" kernel although much of this has been optimized away.

share|improve this answer
Microkernels are popular in embedded systems, especially for real-time uses and fault tolerance reasons. Also note that all modern monolithic kernels are modular. The only significant difference is whether or not there's isolation/protection between the kernel's "core functionality" (e.g. scheduler) and things like device drivers. This also tends to effect the OS's security model (e.g. how much trust is required for things like third-party device drivers), which in turn explains the need for digitally signed drivers (Windows) or people crying about binary blobs (Linux). – Brendan Nov 28 '12 at 7:50
Guess I should have taken the question literally. All my time in Application development and not systems development sometimes I think a bit too narrowly. I'm familiar with both kernel architectures but just assumed he wasn't referring to actual kernels, I forget lots of people actually develop at that level.. – Jimmy Hoffa Nov 29 '12 at 1:51

I would love to say the monolith is an anti-pattern because I absolutely hate it. The difference between monolithic and micro in my mind are simply levels of abstraction, monolithic relies on one level of abstraction, horizontal segmentation, where micro has another layer, vertical as well as horizontal segmentation. Unfortunately it is not an anti-pattern, and I wouldn't say it's a "design pattern" to begin with.

It's an architecture, and the modern form of the micro architecture is known as "Service Oriented Architecture" where service boundaries give you that vertical segmentation, though the actor model is another architecture which gives it to you and has been gaining steam lately.

We all know what modern monoliths look like though, they're the N-tiers we've all been working on for years. Or at least some of us have unfortunately.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.