StatusType

bayerncloud

@startuml
!include <C4/C4_Container>
LAYOUT_LEFT_RIGHT()
 
' Personen / Rollen
Person(ag_ops, "AG Betriebsteam", "Empfängt SLA-Reports, Eskalationen, Statusmeldungen")
Person(support, "Support-Team BU", "1st/2nd/3rd Level Support, Wartung, Monitoring")
Person(enduser, "Endnutzer / Redaktion", "Verwendet DMS oder Widgets")
 
' Externe Systeme (andere Lose)
together {
  System_Ext(los2, "Los 2: Datenintegration", "REST/GraphQL", "Aggregierte/validierte Daten, Dublettenmanagement")
  System_Ext(los4, "Los 4: Widgets", "Web Components/iFrame", "Visualisieren BCT-Daten, erhalten Konfigurationen")
}
 
' Gemeinsame Querschnittsdienste
Container_Boundary(mon_stack, "Monitoring & SLA-Management") {
  Container(mon_sys, "Monitoring / Telemetrie", "Prometheus, Grafana, OpenTelemetry", "24/7 Überwachung, Dashboards, SLA-Metriken")
  Container(alerting, "Alerting / Eskalation", "Alertmanager, MS Teams, E-Mail/SMS", "Automatische Benachrichtigung bei SLA-Verletzung, Eskalationsstufen")
  Container(ticket, "Ticket-System", "Jira Service Management / OTRS", "Erfassung, Priorisierung, Tracking von Incidents & Changes")
  Container(docu, "Betriebsdokumentation", "GitLab/GitHub Wiki", "Betriebshandbücher, Runbooks, API-Doku, Changelog")
}
 
' Los 1 Middleware
System_Boundary(los1, "Los 1: Middleware - Performante API") {
  Container(mw_api, "Middleware API", "Spring Boot/Kotlin", "OpenAPI REST, JSON-LD, Read-only; Filter, Caching")
  Container(mw_cache, "Edge/Response Cache", "Redis/Varnish", "Caching, Rate-Limiting")
}
 
' Los 3 DMS Frontend
System_Boundary(los3, "Los 3: DMS Frontend - Toolbox Tourismus") {
  Container(dms_ui, "DMS UI", "Next.js/React", "Barrierearm, responsiv, Headless-Frontend")
  Container(dms_api, "DMS Backend API", "Node.js/Next API", "RBAC, Workflows, Proxy zu Los 2, Widget-Konfig")
}
 
' Beziehungen - Betrieb / Support
Rel(ag_ops, ticket, "Meldet / erhält Status zu Incidents")
Rel(support, ticket, "Bearbeitet, dokumentiert")
Rel(ticket, docu, "Verknüpft mit Runbooks, Wissensartikeln")
 
Rel(mon_sys, alerting, "Löst Eskalationen bei Threshold-Verletzungen aus")
Rel(alerting, support, "Benachrichtigt gemäß Eskalationsplan")
Rel(mon_sys, ag_ops, "SLA-Reports, Dashboards")
Rel(mon_sys, support, "Live-Daten, Logs, Metriken")
 
' Monitoring angebunden an Lose
Rel(mw_api, mon_sys, "API-Uptime, Performance-Metriken, Error-Logs")
Rel(dms_api, mon_sys, "Backend-Uptime, Performance, Fehlertracking")
Rel(los2, mon_sys, "Schnittstellen-Status, Datenlieferzeiten")
Rel(los4, mon_sys, "Widget-Performance, Nutzungsmetriken")
 
' Kern-Datenflüsse
Rel(dms_api, los2, "Lesen/Schreiben touristischer Daten", "REST/Server-to-Server")
Rel(mw_api, los2, "Read-only Datenbezug", "REST")
Rel(dms_api, los4, "Konfigurationsübergabe für Widgets", "API/Webhooks")
Rel(los4, mw_api, "Datenzugriff zur Laufzeit", "REST/JSON-LD")
 
' Dokumentation & Wissenstransfer
Rel(docu, ag_ops, "Zugriff auf aktuelle Systemdokumentation, Architekturen, API-Specs")
Rel(docu, support, "Wartungshandbuch, Runbooks, Konfigurationen")
 
@enduml