Skip to content

ITEP-83024 [Design] SceneScape Core Deployment Package#671

Open
Irakus wants to merge 20 commits into
mainfrom
design_core_deployment
Open

ITEP-83024 [Design] SceneScape Core Deployment Package#671
Irakus wants to merge 20 commits into
mainfrom
design_core_deployment

Conversation

@Irakus
Copy link
Copy Markdown
Contributor

@Irakus Irakus commented Dec 8, 2025

📝 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:

  • 🐞 Bug fix – Non-breaking change which fixes an issue
  • 🚀 New feature – Non-breaking change which adds functionality
  • 🔨 Refactor – Non-breaking change which refactors the code base
  • 💥 Breaking change – Changes that break existing functionality
  • 📚 Documentation update
  • 🔒 Security update
  • 🧪 Tests
  • 🚂 CI

🧪 Testing Scenarios

Describe how the changes were tested and how reviewers can test them too:

  • ✅ Tested manually
  • 🤖 Ran automated end-to-end tests

✅ Checklist

Before submitting the PR, ensure the following:

  • 🔍 PR title is clear and descriptive
  • 📝 For internal contributors: If applicable, include the JIRA ticket number (e.g., ITEP-123456) in the PR title. Do not include full URLs
  • 💬 I have commented my code, especially in hard-to-understand areas
  • 📄 I have made corresponding changes to the documentation
  • ✅ I have added tests that prove my fix is effective or my feature works

Comment on lines +66 to +91
```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
```
Copy link
Copy Markdown
Contributor

@tdorauintc tdorauintc Dec 9, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

@Irakus Irakus changed the title [Design] SceneScape Core Deployment Package ITEP-83024 [Design] SceneScape Core Deployment Package Dec 18, 2025
@ltalarcz ltalarcz marked this pull request as ready for review April 21, 2026 12:41
@Irakus
Copy link
Copy Markdown
Contributor Author

Irakus commented Apr 21, 2026

@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.
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe let's add something like: "without manually deleting sample scenes/camera configurations from demo setup".

Comment on lines +43 to +57
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"]
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we adjust make targets to use core deployment + automate adding of existing Demo sample data?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

To keep compatibility, we can "hide" new implementation behind old make targets.

Copy link
Copy Markdown
Contributor

Copilot AI commented Apr 21, 2026

@copilot /review

Here's my review of the design document:

Structure & Template Compliance: ✅ Follows the design doc template correctly with all required sections.

Minor observations:

  1. Line 39: "Currently all SceneScape-based apps looks similar" → should be "look similar" (subject-verb agreement).
  2. Line 17: "Split all demos related components" → "demo-related components" reads more naturally.
  3. The point @tdorauintc raised about Docker vs Kubernetes differences (kubeclient in manager for K8s, separate camera pipeline deployment for Docker) could be worth capturing in the design doc — perhaps as an additional consideration in Section 5 or as an Open Question in Section 10. This would document the known architectural divergence for future implementers.
  4. Section 6 (Alternatives Considered) is minimal — only states the status quo. Could benefit from briefly mentioning other approaches that were evaluated and dismissed.

REUSE compliance: ✅ Markdown files are covered by REUSE.toml annotations, no inline header needed.

Overall the document is well-structured and clearly communicates the motivation and phased approach.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants