What's the difference between a design pattern and a strategy? Is the monolith actually an anti-pattern?
2 Answers
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.
-
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).– BrendanCommented Nov 28, 2012 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.. Commented Nov 29, 2012 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.