diff --git a/Design:-Runtime-Editor-Split.md b/Design:-Runtime-Editor-Split.md index 8b6c856..b9b3081 100644 --- a/Design:-Runtime-Editor-Split.md +++ b/Design:-Runtime-Editor-Split.md @@ -1,31 +1,56 @@ Currently, Node-RED is a monolithic entity that has both the editor and runtime packaged in one place. -The plan is to break them up into their own discrete packages that can be used separately. +The plan is to break them up into their own discrete packages to provide some more flexibility in how they are used. + - [Use Cases](#use-cases) + - [Headless](#headless) + - [Multi-user, single-tenet runtimes](#multi-user-single-tenet-runtimes) + - [Multi-user, multi-tenet runtimes](#multi-user-multi-tenet-runtimes) + - [Distributed](#distributed) + - [Scaled](#scaled) + - [Repurposed Editor](#repurposed-editor) + ## Use Cases -### Headless device +### Headless A device that runs a flow it is given. The flow is edited elsewhere and remotely pushed to the device (or hardcoded on the device). - don't want the overhead of the editor that isn't going to be used - supports http endpoints (just doesn't have full editor capability) -### Distributed Node-RED +### Multi-user, single-tenet runtimes -A node-red flow is edited in one place. When deployed, it gets carved up and different parts are pushed to different runtimes, either local or remote. + - A single hosted instance of the editor is backed by multiple runtimes - one per user or group of users + - The user access the editor and the underlying api requests are proxied to the appropriate runtime + - Authentication is handled at the proxy layer + - API requests can be proxied unmodified (other than auth tokens) - - Custom actions are added behind the deploy action - - Serves up the editor without a local version of the runtime +### Multi-user, multi-tenet runtimes -### Scaled Node-RED + - A single hosted instance of the editor is backed by multiple runtimes. + - The user access the editor and the underlying api requests are proxied to the appropriate runtime. + - Each runtime may host flows of different users that should not see each other + - The proxy layer provides a filtered view of the flow to ensure the editor only displays information available to the logged in user. + + + +### Scaled A node-red flow is edited in one place. When deployed, it gets sent to multiple runtimes to provide horizontal scaling. - Custom actions are added behind the deploy action - Serves up the editor without a local version of the runtime -### Node-RED Editor +### Distributed + +A node-red flow is edited in one place. When deployed, it gets carved up and different parts are pushed to different runtimes, either local or remote. + + - Custom actions are added behind the deploy action + - Serves up the editor without a local version of the runtime + + +### Repurposed Editor The Node-RED editor is used for another system entirely that shares the same node/wire visualisation.