Skip to content

Enterprise Architecture

ng-druid edited this page May 26, 2022 · 1 revision

Extensions

In druid individual apps are micro-frontends but share libraries and extensions. Extensions are another category of micro-fronends without components. Instead extensions expose modules that are pulled into the main app extending its capabilities via plugins. This methodology allows the main app to be extended without touching the main app code. Furthermore, it enables the next level of reusability to not only packages but complete feature driven extensions that can be loaded at runtime into an app when needed. This is achieved through a recent advancement in the technology space known as module federation. Module federation drives the ability to orchestrate micro-frontends efficently pulling them into a main shell app.

flowchart LR
druid[druid]-->app1[app1];
druid-->app2[app2];
druid-->app3[app3];
app1-->ext1[extension 1]
app2-->ext1
app3-->ext2[extension 2]
ext1-->p1[plugin]
ext1-->p2[plugin]
ext2-->p3[plugin]
Loading

Hybrid Architecture

Druid is not limited to using Angular modules. In druid any JavaScript app that suppots module federation can be pulled into the main shell app. Druid can host React, Vue, Svelte, etc. apps when module federation is supported. Furthermore, druid apps can be nested inside one other using module federation.

flowchart LR
ds1[druid app]-->rm1[react app]
ds2[druid app]-->rm1
ds2-->rm2[react app]
ds2-->va1[vue app]
ds3[druid app]-->va1
Loading
Clone this wiki locally