Skip to main content

Microkernel / Plugin Structural Styles

✅ Overview

This family deals with styles that split the system into a minimal core (Microkernel) and a group of extensible plugins.

  • Core provides only minimal functions.
  • Plugins provide individual functions, extensions, and variations.
  • Structure often seen in software where extensibility is important, such as IDEs, OSs, and middleware.

Representative Styles:

✅ Why This Family Emerged (History & Background)

  • Software that is extended over a long period, such as OSs, compilers, and IDEs, increased.
  • Cost of change explodes if the boundary between core functions and extension functions is not clear.
  • Need to enable/disable only some functions.
  • Want to open room for extension to third parties (Plugin Ecosystem).

Microkernel / Plugin styles emerged from the idea:

"Design by separating 'hard-to-change core' and 'easy-to-change extensions'."

✅ Problems Addressed

  • Large-scale changes to existing code are required every time a feature is added.
  • Complexity increases as customizations for specific customers or optional features increase.
  • Want to allow third-party extensions but don't want the core to be broken.

By separating core and plugins, the goal is a structure where:

  • Additional features are implemented as plugins.
  • Core is stabilized, maintaining only interfaces.

✅ Styles Belonging to This Family

✅ Relationship with Other Families

  • Can be combined with Layered / Domain Model to replace domain services as plugins.
  • Form of inserting processing stages or handlers as plugins within Flow / Reactive families is also common.
  • Related to Cross-cutting (Extensibility using Plugins, Third-party development).

✅ When to Reference

  • Platforms that are operated for a long time and continuous feature addition is expected.
  • Products where feature sets differ for each customer (Feature Flags + Plugins).
  • When you want to design extension points for third parties.

When making a "Platform" rather than a "Product",
the idea of this family becomes particularly important.