ITEP-83024 [Design] SceneScape Core Deployment Package#671
Conversation
…-platform/scenescape into design_core_deployment
| ```mermaid | ||
| flowchart TB | ||
| subgraph core [SceneScape Core Application] | ||
| Postgres["PostgreSQL Database"]@{ shape: "cylinder" } | ||
| Mosquitto["Mosquitto Broker"]@{ shape: "lin-cyl" } | ||
| NTP["NTP Server"] | ||
| Manager["Manager"] | ||
| Controller["Controller"] | ||
| Autocalibration["Autocalibration"] | ||
| ClusterAnalytics["Cluster Analytics"] | ||
| Mapping["Mapping"] | ||
| end | ||
|
|
||
| subgraph sensors [Cameras and Sensors pipelines] | ||
| MediaMtx["MediaMTX"] | ||
| DLSPSRetail["DLStreamer Pipeline Server (retail)"] | ||
| DLSPSSQueuing["DLStreamer Pipeline Server (queuing)"] | ||
| Models["Models"] | ||
| end | ||
|
|
||
| subgraph data [Example Database Contents] | ||
| ExampleDB@{ shape: "odd" } | ||
| ExampleDB -->|Read| Manager | ||
| Manager -->|Populate| Postgres | ||
| end | ||
| ``` |
There was a problem hiding this comment.
There is a significant difference between Docker and Kuberenetes deployments:
- for Docker the core SceneScape services and Camera Pipelines (including models) are configured separately and can be deployed independently.
- for Kubernetes it is one of core SceneScape services (manager) that manages the configuration (UI) of Camera Pipelines and deploys them (kubeclient).
This means we will need to plan the implementation of core deployment package, so that it does impact UX negatively for Kubernetes.
For example one consequence of extracting core deployment is that models will no longer be managed via manager UI in Kubernetes (which I like as a general direction - there are other services like model_downloader that we can reuse for this purpose and integrate them with Geti).
Ideally, we add such an external model managing service integration when introducing core deployment package. Alternatively, we let users manage models on their own using pure Kubernetes volume w/o any UI, we just provide some CLI tools to install them into the volume.
There was a problem hiding this comment.
For the first part: compose and helm deployments will still be separate things, so there's no problem in adding kubeclient to the latter.
For second part, I'd need a better understanding of how models are managed to comment.
|
@copilot /review |
| - Core package should include clean SceneScape environment without any pre-populated data. | ||
| - Scenes and Cameras should be easy to add to existing Core deployment. | ||
| - Make SceneScape Helm Chart more generic to publish it externally. | ||
| - Keep the docker images as close to current state as possible to avoid breaking all existing apps. |
There was a problem hiding this comment.
Could you please add more details about what does current state mean.
|
|
||
| All apps based on SceneScape define their own deployment structure, which adds more work to maintain these during SceneScape containers updates. | ||
| Also, all example data are parts of such deployments. | ||
| There's no easy-to-use deployment method for general use cases, e.g. if user wants to just define their own scenes and plug in their own cameras. |
There was a problem hiding this comment.
Maybe let's add something like: "without manually deleting sample scenes/camera configurations from demo setup".
| subgraph SceneScape Demo Application | ||
| Postgres["PostgreSQL Database"]@{ shape: "cylinder" } | ||
| Mosquitto["Mosquitto Broker"]@{ shape: "lin-cyl" } | ||
| NTP["NTP Server"] | ||
| Manager["Manager"] | ||
| Controller["Controller"] | ||
| Tracker["Tracker"] | ||
| Autocalibration["Autocalibration"] | ||
| ClusterAnalytics["Cluster Analytics"] | ||
| Mapping["Mapping"] | ||
| MediaMtx["MediaMTX"] | ||
| ExampleDB@{ shape: "odd" } | ||
| DLSPSRetail["DLStreamer Pipeline Server (retail)"] | ||
| DLSPSSQueuing["DLStreamer Pipeline Server (queuing)"] | ||
| Models["Models"] |
There was a problem hiding this comment.
Can we group elements that do not require example data to be configured for demo purpose?
|
|
||
| ## 6. Alternatives Considered | ||
|
|
||
| Currently the only alternative is to keep current deployments as is, which makes SceneScape harder to adopt for new users. |
There was a problem hiding this comment.
And create new sample applications (as Smart intersection)?
| ## 7. Risks and Mitigations | ||
|
|
||
| - Many tests have their own docker compose files for specific test cases -> One approach is for these tests to use generic deployment, another would be to keep existing test deployments as is and add some tests that would run directly against core deployment package. | ||
| - Increased deployment complexity for users who just want the full demo. |
There was a problem hiding this comment.
Can we adjust make targets to use core deployment + automate adding of existing Demo sample data?
There was a problem hiding this comment.
To keep compatibility, we can "hide" new implementation behind old make targets.
Here's my review of the design document: Structure & Template Compliance: ✅ Follows the design doc template correctly with all required sections. Minor observations:
REUSE compliance: ✅ Markdown files are covered by Overall the document is well-structured and clearly communicates the motivation and phased approach. |
📝 Description
Adding design doc about extracting SceneScape Core deployment packages for easier installation for general use cases.
✨ Type of Change
Select the type of change your PR introduces:
🧪 Testing Scenarios
Describe how the changes were tested and how reviewers can test them too:
✅ Checklist
Before submitting the PR, ensure the following: