Skip to Content
CubySystemarchitektur

Architektur

Cuby ist als Single-Binary konzipiert, die einen HTTP-Server mit Web-Oberfläche bereitstellt und die Verwaltung aller ProcessCube®-Komponenten übernimmt. Die Architektur besteht aus dem Cuby Core, Plugin-Workern und den verwalteten Produkten.

Gesamtarchitektur

Komponenten

KomponenteAufgabe
HTTP ServerBun-nativer HTTP-Server auf Port 3847, dient die REST API und das Frontend aus
ProductManagerSpawnt und überwacht Produkt-Prozesse, Auto-Restart bei Crash nach 5 Sekunden
PluginLoaderVerwaltet langlebige Worker-Prozesse, leitet HTTP-Requests und Socket.IO-Events weiter
Installernpm-Pakete vom Marketplace installieren, Plugin-Deploy/Update/Uninstall orchestrieren
Marketplace ClientProduktkatalog, Kurse und Videos vom Marketplace abrufen
Config ServiceZentrale Konfigurationsverwaltung (~/.processcube/config.json)
Secret StoreAPI Keys und Plugin-Secrets sicher speichern (Bun.secrets lokal, K8s Secrets im Operator-Modus)
ProcessCube RegistryIn-Memory-Registry aller Engine/LowCode/Authority-Instanzen
ProcessCube ConnectorSocket.IO-Verbindung zu LowCode für Konfigurations-Sync
Port ManagerPort-Reservation für Plugins, Kollisionsvermeidung
Sub-Cuby RegistryVerbindet mehrere Cuby-Instanzen, teilt ProcessCubes
Cuby Context APIStellt Plugins eine einheitliche API bereit (Ports, Secrets, Deploy, ProcessCubes)
Auth MiddlewareAuthentifizierung via API Key, Session Cookie oder PostMessage Token

Technologie-Stack

SchichtTechnologie
RuntimeBun  (Cross-Platform Compilation zu Single-Binary)
BackendBun HTTP Server (native) mit Socket.IO (@socket.io/bun-engine)
FrontendReact 18 + Vite + React Router v7 (JavaScript)
StylingTailwind CSS
EchtzeitSocket.IO
Config~/.processcube/config.json + Secret Store
Node.jsv22 via fnm (für Plugin-Worker)
Kubernetes@kubernetes/client-node (Operator-Modus)
Engine Client@5minds/processcube_engine_client (BPMN-Deployment)

Zwei Betriebsmodi

Cuby kann in zwei Modi betrieben werden:

AspektLokaler ModusKubernetes Operator
ProdukteChild-ProzesseDeployments/Services
Konfiguration~/.processcube/config.jsonConfigMaps + Secrets
API KeyBun.secretsK8s Secret
LogsDatei + In-MemoryPod Logs
SkalierungEinzelner ProzessReplicas, Rolling Restart

Details zum Kubernetes-Betrieb unter Kubernetes Operator.

Worker-Architektur

Plugin-Lifecycle-Methoden (deploy, start, stop, undeploy) laufen in separaten Node.js-Child-Prozessen — nicht im Bun-Hauptprozess:

  • Grund: Die kompilierte Bun-Binary löst transitive Dependencies bei dynamischem import() nicht korrekt auf
  • Kommunikation: JSON-Lines-Protokoll über stdin/stdout
  • RPC: Cuby-Methoden-Aufrufe werden vom Worker über das Protokoll an den Main-Thread weitergeleitet

Nur init() (Route-Registrierung) läuft auf dem Main-Thread im PluginLoader.

Details zum Plugin-System unter Plugin-System.

Datenfluss

  1. Frontend → Backend: REST API Calls und Socket.IO Events über Port 3847
  2. Backend → Marketplace: npm-Registry und Produkt-API über HTTPS
  3. Backend → Produkte: Prozess-Spawning (lokal) oder K8s API (Operator-Modus)
  4. Backend → Plugin-Worker: JSON-Lines RPC über stdin/stdout
  5. Backend ↔ LowCode: Socket.IO-Verbindung für Konfigurations-Sync
  6. Backend ↔ Sub-Cubies: REST + Socket.IO für ProcessCube®-Federation

Weiterführend