Search code examples
design-patternsarchitecturemicroservicesmicrokernel

What are the differences between microkernel and microservices architectures


I'm trying to implement it so i was trying to gather as much information as possible to help me with the implementation. but i just made me more confused.

I have read Software Architecture Patterns by Mark Richards. I have noticed that in the book there are two types of software architectures:

  1. Microkernel Architecture.
  2. Microservices Architecture Pattern.

So what is the difference between the two?

Thanks in advance.


Solution

  • Microkernel typically refers to a architecture where there is a central core (the kernel), with plugins around it. for example if you have used an IDE, there is a core text editor (which in this case is the kernel), but you can add loads of plugins such as git, unit testing or extra languages.

    Microservices is a pattern where multiple, individual modules do their own thing but work together. For example I might create a module to handle Customers and a totally separate module to handle Orders. They might communicate between each other but there is no central component. Customers and Orders are equally in charge of their own features.

    In the Microkernel architecture, the kernel is at the center of everything and plugins add to functionality to the kernel. In microservices architectures each microservice stands alone as its own concept and they communicate with each other in a mesh.

    This has no bearing on how they are implemented. You could do both patterns as a single program or as plugins or as separate web-apps. What sets them apart is the idea of a central kernel in the microkernel architecture vs the decentralized mesh or cooperating modules in microservices.