What’s the difference between a design pattern and a strategy?
Is the monolith actually an anti-pattern?
1
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.
2
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.