Files
Orchestrator/bahn/project-audit/analysis/runbook-analyse.md
T
ankn a5f8fb49ab Migrate all repos into monorepo context folders
Bahn: aisupport, Analyse-O2C-C2S, awesome-bahn-mcp-servers, beam-mcp,
      Confluence_Bot, db-planet-mcp-server, O2C-Harness, project-audit,
      Projekt-KIQ-HP, teamlandkarte-mcp
Dhive: Jury-Voting
Privat: CV, NoteGraph (NOTE: NoteGraph needs complete redo after consolidation)
Shared: AI-Orchestrator, OrgMyLife, power_skills_and_more
Shared/references: symphony (read-only)

Bahn repos remain available as independent remotes - this monorepo
pulls them in via subtree, the originals are untouched.
2026-06-30 20:39:52 +02:00

202 lines
7.5 KiB
Markdown

# Runbook-Analyse — pathOS Architekturdokumentation
> Quelle: Runbook (arc42-Format), ~346KB, Stand April 2026
> Analyse: 2026-04-22
---
## 1. Qualitaetsziele (Priorisiert)
| Prio | Ziel | Beschreibung |
|------|------|-------------|
| 1 | Diskriminierungsverbot | Gleichbehandlung DB-eigener und externer EVU (Performance, Verfuegbarkeit, Funktionalitaet) |
| 2 | 24/7 Verfuegbarkeit | Unternehmenskritische Anwendung (UKA) mit SL1 (Gold), auch ausserhalb Geschaeftszeiten |
| 3 | Interoperabilitaet | Kompatibel mit TAF/TAP TSI Standard und RNE Common Interface |
| 4 | Mandantenfaehigkeit | Strikte Datentrennung nach Kundennummern |
| 5 | Unveraenderbarkeit | Kundenauftraege nachvollziehbar und unveraenderbar |
| 6 | Fehlertoleranz | Automatische Reaktion auf HW/SW-Fehler |
| 7 | Kapazitaet | Genuegend Kapazitaet fuer Netzfahrplan-Deadlines |
| 8 | Ressourcenverbrauch | Effiziente Nutzung, dynamische Skalierung |
| 9 | Bedienbarkeit | Effizient fuer Power-User |
| 10 | Erlernbarkeit | Leicht fuer Gelegenheitsnutzer |
## 2. Service Levels
| Umgebung | Service Level | Verfuegbarkeit | RTO |
|----------|--------------|----------------|-----|
| Produktion | DB Silber (ab 03/2026), Silber Plus (ab 08/2026) | 99.38% / 99.73% | 6h |
| WGK-Ausweich | DB Bronze Plus | 98.90% | 24h |
| Sonstige | DB Bronze | 98.75% | 24h |
## 3. Subdomaenen-Architektur
Das System ist in 4 Subdomaenen zerlegt:
### TAF/TAP Schnittstellen (Team Zero)
- Common Interface (SOAP/XML, Mutual SSL)
- TAF/TAP TDM Konverter
- Partnerverwaltung, Zertifikatsverwaltung
### Bestellportal (Team 404)
- Portal UI (Angular)
- Portal Middleware (Spring Boot)
- Entwuerfe und Vorlagen
### Prozesse (Team CIB)
- Steuerung Vertrieb (Camunda 8, BPMN)
- IFP Connector
- Archivierungsservice
### Backend (Team CIB/Zero)
- Auftrags-Verwaltung-Trasse
- Kundendaten-Bereitstellung
- Stammdaten-Bereitstellung
- Rabattnummern-Bereitstellung
- Vertragsdaten-Verteiler
## 4. Teams (aus Runbook bestaetigt)
| Team | Verantwortung | Schwerpunkt |
|------|--------------|-------------|
| Team Zero | TAF/TAP Schnittstellen, Stammdaten | Common Interface, Stammdaten-Bereitstellung |
| Team 404 | Bestellportal | Portal UI, Portal Middleware |
| Team CIB | Prozesse, Backend | Steuerung Vertrieb, Auftrags-Verwaltung |
| Team STeam | Infrastruktur, DevOps, Security | CI/CD, Deployment, Keycloak, Monitoring |
| Team BSSUPPORT | Support | 2nd Level Support |
## 5. Umgebungslandschaft (17+ Umgebungen!)
### DEV Stage
- BU (Build-Umgebungen) — temporaer, pro MR
- EU/BASE-* (Review) — temporaer, pro MR
- Demo — dauerhaft, manuelle Tests
- BASE-AT (Integrationstest) — temporaer, pro MR
- LUP (Last & Performance) — temporaer
- IEU (Integrierte Entwicklung) — dauerhaft, auto-deploy bei Master-Merge
- SIT (Systemintegration) — dauerhaft, manuelles Deployment
- SIT2 — dauerhaft, automatisiert
### ABN Stage
- E2E (TTT-ITU1) — dauerhaft, TTT-abgestimmt
- SAT1 (Alarm ITU) — dauerhaft, Hotfix-Tests
- SAT2 (Release ITU) — dauerhaft, Feature-Release-Tests
- SAT3 — dauerhaft, LuP/Pentest/DRT
- ABN1 (TTT-KTU) — dauerhaft, Kundentests mit EVUs
- ABN2 (Release ABN) — dauerhaft, TTT-E2E
- ABN4 — dauerhaft, Alarm-Patches
- ABN8 — dauerhaft, EVU-Integrationstests
- PREPROD — dauerhaft, Sondertests mit Fahrplan-IT
### PROD Stage
- PROD — Produktionsumgebung
**Erkenntnis**: 17+ Umgebungen erklaeren die Deployment-Komplexitaet!
## 6. Externe Schnittstellen (detailliert)
| Name | Technologie | Auth | SLA |
|------|------------|------|-----|
| EVU-Eingang | SOAP/XML | Mutual SSL (RNE-Zertifikate) | SL1 |
| EVU-Ausgang | SOAP/XML | Mutual SSL | SL1 |
| Portal-App | HTML5/REST | JWT (OIDC) | SL1 |
| IM Stammdaten | REST/JSON | JWT, Client-ID/Secret | SL3+ |
| Benutzer-Auth | OpenID Connect | Benutzername/Passwort | SL1 |
| NuR-Service | REST/JSON | Entra ID Client-Credential | SL3 |
| KDV (CRM) | REST/JSON | Basic-Auth | SL3 |
| NVN-Tool | REST/JSON | Basic-Auth + JSON Token | SL3 |
| TPN Produktionsauftraege | AWS MSK (Kafka) | IAM:Role | SL1 |
| TPN Vertriebsauftraege | AWS MSK (Kafka) | IAM:Role | SL1 |
| AC Trasse Archiv | REST/JSON | BizHub ClientID/Secret | SL3 |
| Stammdaten extern | REST/JSON | Keine Auth | SL1 |
| BEP | REST/JSON | BizHub ClientID/Secret | SL3 |
| Stationsportal | AWS MSK (Kafka) | IAM:Role | SL1 |
| TBV | AWS MSK (Kafka) | IAM:Role | SL1 |
## 7. Kafka-Topologie
### Interne Topics (25+)
Wichtigste Datenfluesse:
- eingangsnachricht: TTK/PMW → SV, Archivierungsservice
- versandauftrag: SV → TTK, PMW
- versandergebnis: CI/TTK → SV
- auftragsverwaltung: SV → AV, TBV-Konverter, Archivierungsservice
- produktionsauftrag-to-connector: SV → IFP-Connector
- vertriebsauftrag-to-sv: IFP-Connector → SV
- process-eingangsnachricht: SV → SV (Camunda)
- camunda-events: Camunda Zeebe → SV
- vertragsdaten-to-stationsportal: VDV → Stationsportal
### Kafka-Cluster (12+)
- bsz-dev (IEU, SIT, Demo)
- bsz-dev-e2e (E2E)
- bsz-dev-2 (SIT, SIT2)
- bsz-abn-abn1, abn2, sat1, sat2, sat3, abn8, preprod
- bsz-prod
## 8. Datenbank-Architektur
### Produktions-Setup (3 separate Cluster!)
- bsz-prod-production: Alle ausser SV, IFP, AV, PMW (db.m6gd.large, 200GB)
- bsz-prod-production-avt: AV + PMW (db.m6gd.large, 200GB)
- bsz-prod-production-sv: SV + IFP-Connector (db.m6gd.large, 200GB)
**Erkenntnis**: DB-Split nach Performance-Anforderungen (SV und AV sind die lastintensivsten)
### Persistenz-Strategie
- Shared-Nothing: Jede Anwendung eigene DB
- TAF/TAP-Daten als JSON/XML BLOBs (nicht relationales Modell!)
- Flyway fuer Migrationen
- Append-Only fuer Kundenauftraege (Unveraenderbarkeit)
## 9. Sicherheitsarchitektur
### Authentifizierung
- Portal: DB WebSSO (OIDC) via SIPS Access Proxy + NuR
- Common Interface: Mutual SSL mit RNE-Zertifikaten
- Intern: Keycloak (Test), Entra ID (Prod)
- Kafka: AWS IAM Roles
- DB: Technische User pro Anwendung (DML only)
### Verschluesselung
- TLS ueberall (ISGW → ALB → App)
- Data-at-Rest: AWS-managed Encryption
- Secrets: age + sops + Helm Secrets Plugin
### Mandantentrennung
- Basierend auf Kundennummern
- Alle Zugriffe gefiltert nach Berechtigungen
- Backend-seitige Validierung (Browser nicht vertrauenswuerdig)
## 10. Bekannte Technische Schulden (aus Runbook)
| Kategorie | Problem | Massnahme |
|-----------|---------|-----------|
| TAF/TAP TSI | Veraltete Technologie (SOAP, unvollstaendige Specs) | CI als Adapter |
| AppMesh | AWS EOL, CNP arbeitet an Alternative | O2CBS-555 |
| CI/CD Pipelines | Zu komplex (pipeship + CNB) | Vereinfachungen |
## 11. Offene Punkte / Risiken (aus Runbook)
- Common Interface: SOAP als Altlast, bidirektionale async Kommunikation fragil
- Stammdaten: Performance-Probleme beim Strecken-Import (zu viele kleinteilige API-Calls)
- Portal-Middleware: Haeufige Schnittstellenaenderungen von SV und AV
- Kundendaten/Rabattdaten: Koennen kurzzeitig veraltet sein (akzeptiert)
- Performance: Keine systematische Performance-Messung bei mehreren Services
- Click&Ride: Anbindungsdetails noch nicht geklaert
- BEP: Anbindung noch in Arbeit
## 12. Architecture Decision Records (75 ADRs!)
Wichtigste aktive ADRs:
- ADR-29: Internes Datenmodell TDM
- ADR-35: Zugriffskontrolle interne Schnittstellen
- ADR-36: Trennung Build/Deployment Pipelines
- ADR-53: Hybride Anbindung Eingangskaenaele
- ADR-56: CI an Backend ueber Kafka (In Arbeit)
- ADR-58: Deployment und Release
- ADR-61: Signieren von Nachrichten
- ADR-63: Camunda 8 als Workflow Engine
- ADR-70: Weiterentwicklung Testvorgehen (In Arbeit)
- ADR-72: Click&Ride Anbindung (In Arbeit)
- ADR-74: TrassenPortal Anbindung (In Arbeit)