Great content as always, thanks Mark! May I ask what are the particularities, the pros, cons and tradeoffs, as well as your overall thoughts about a "distributed Microkernel"? I mean the plugins being outside of the core system deployment, scaling separatedly and all that, but they still work as "addons" to the core system that stays the same. Is that even a thing?
Sure! With distributed it eases testing and deployment of plugins and can resolve bottlenecks, but keep in mind every request still has to go through the core system, so you might not realize any scalability or fault tolerance benefit.
Thanks Mark, for explaining Microkernel architecture with great examples. I think we can mix this architecture with microservices , atleast for plugins. Where each plugin will be an independent microservice. Whats your thoughts on this?
Absolutely Alex! A microservice can be implemented using the microkernel architecture, as could a user interface. Now we are seeing how one style can be embedded in another style. Good observation!
Thanks for your lesson. I'm going to use this style to build my project and I have a question: "Can I allow the Plug-in component maybe access the data from Core System like the models, daos, ..."? Sorry for my bad English
You could, but it would be better to have the core system access the database and pass that information onto the plug-ins. That way, if there are database schema changes, it won't affect the plug-ins, making them more stand-alone.
Thanks Mark! Always a pleasure learning something new from these video lectures. I want to say is Wordpress a good example of Microkernel Architecture? Core of Wordpress remains the same while the functionality is changed according to which plugin you use with it.
Dependency injection goes well with this architecture as it allows to push configuration to the plugins btw, do you have an official publisher/distributor in India? I suspect that the books available on amazon India is a fake (low-quality). Maybe I'll buy it when i travel abroad
I think I figured out what makes that low frequency rumble sound - you XDD it happens when you start drawing something, so I presume your mic stand doesn't have shock absorbent capabilities and "boom" happens when you put your hands onto the table. ))) Don't rob me the wrong way - I have a musical background, it's a nightmare for me at times. Can't wait to see lessons on distributed architectures, especially because there' a lot of hype about them and some companies fall victims to that hype(
I would like to think Payment systems could be one good use case of microkernels, where different payment modes (paypal, card, wallet, netbanking, upi) can be plugins.
In the microkernal architecture it would appear that the core system has a contract with the plugins. Is that right? If so, contract tests may come into play, I suppose.
I strongly disagree with the examples here. If you look at any microkernel operating system while modularity and plugins are present they are not what defines the architecture. Microkernel architecture is defined by message passing as the means to communicate. QNX, L4 and XNU all use message passing as the form of communication, process control and interprocess communication. Linux is a monolith but enables plugins through kernel modules.
Thanks for your comment. In our Head-First Software Architecture book we define this as the level of "Microkernality" in a system based on the functionality of what the core system does. In a lot of cases, as you are suggesting here, systems are comprised of hybrids - aspects of microkernel combined with other styles (such as a modular monolith with plug-ins). You can find a lot of variableness of this architecture style in the wild - my examples are purely to illustrate the overall shaoe of this architectural style.
Thanks Mark for your brilliant explanation the Microkernel Architecture!
Awesome articulation… thanks a lot
Thank you for the lesson!
Great content as always, thanks Mark! May I ask what are the particularities, the pros, cons and tradeoffs, as well as your overall thoughts about a "distributed Microkernel"? I mean the plugins being outside of the core system deployment, scaling separatedly and all that, but they still work as "addons" to the core system that stays the same. Is that even a thing?
Sure! With distributed it eases testing and deployment of plugins and can resolve bottlenecks, but keep in mind every request still has to go through the core system, so you might not realize any scalability or fault tolerance benefit.
Thanks Mark, for explaining Microkernel architecture with great examples.
I think we can mix this architecture with microservices , atleast for plugins. Where each plugin will be an independent microservice.
Whats your thoughts on this?
Absolutely Alex! A microservice can be implemented using the microkernel architecture, as could a user interface. Now we are seeing how one style can be embedded in another style. Good observation!
@@markrichards5014 thanks for your encouraging words !!!
Is Microkernel similar Or Same as Hexagonal architecture ?
Yes, they are very similar in that the plug-ins can act as the adapters to various ports, and the core system becomes the application domain.
Thanks for your lesson. I'm going to use this style to build my project and I have a question: "Can I allow the Plug-in component maybe access the data from Core System like the models, daos, ..."? Sorry for my bad English
You could, but it would be better to have the core system access the database and pass that information onto the plug-ins. That way, if there are database schema changes, it won't affect the plug-ins, making them more stand-alone.
Hi Mark, I like your videos a lot. Can you do a session comparing event-driven and event-streaming architectures?
Sure! I'll schedule that after our architecture styles review is over.
Thanks Mark! Always a pleasure learning something new from these video lectures.
I want to say is Wordpress a good example of Microkernel Architecture? Core of Wordpress remains the same while the functionality is changed according to which plugin you use with it.
Yes! Any system , product, or tool that allows you to add plug-ins or add-ons is a form of the microkernel architecture.
Dependency injection goes well with this architecture as it allows to push configuration to the plugins
btw, do you have an official publisher/distributor in India? I suspect that the books available on amazon India is a fake (low-quality). Maybe I'll buy it when i travel abroad
Yes, O'Reilly does use an India distributor SPD. See www.amazon.in/Fundamentals-Software-Architecture-Engineering-Paperback/dp/9352139623/
I think I figured out what makes that low frequency rumble sound - you XDD
it happens when you start drawing something, so I presume your mic stand doesn't have shock absorbent capabilities and "boom" happens when you put your hands onto the table. )))
Don't rob me the wrong way - I have a musical background, it's a nightmare for me at times.
Can't wait to see lessons on distributed architectures, especially because there' a lot of hype about them and some companies fall victims to that hype(
Thanks Kray. I'll pay more attention to this in the future.
I would like to think Payment systems could be one good use case of microkernels, where different payment modes (paypal, card, wallet, netbanking, upi) can be plugins.
Agreed - good observation about the use of the Microkernel architecture.
In the microkernal architecture it would appear that the core system has a contract with the plugins. Is that right? If so, contract tests may come into play, I suppose.
Indeed! Remote or not, there is a plug-in contract. I like to keep the contracts consistent so as to minimize changes to the core system.
I need in arabic
I strongly disagree with the examples here. If you look at any microkernel operating system while modularity and plugins are present they are not what defines the architecture. Microkernel architecture is defined by message passing as the means to communicate. QNX, L4 and XNU all use message passing as the form of communication, process control and interprocess communication.
Linux is a monolith but enables plugins through kernel modules.
Thanks for your comment. In our Head-First Software Architecture book we define this as the level of "Microkernality" in a system based on the functionality of what the core system does. In a lot of cases, as you are suggesting here, systems are comprised of hybrids - aspects of microkernel combined with other styles (such as a modular monolith with plug-ins). You can find a lot of variableness of this architecture style in the wild - my examples are purely to illustrate the overall shaoe of this architectural style.
Thank you for the lesson!
Glad you found it useful!