Files
fotospiel-app/docs/ops/oncall-roles.md
2025-11-20 12:31:21 +01:00

127 lines
5.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: Rollen & On-Call-Handbuch
sidebar_label: Rollen & On-Call
---
Dieses Dokument beschreibt, **wer** im Betrieb wofür zuständig ist und **wie** OnCallBereitschaft organisiert wird. Es ergänzt die technischen Runbooks um eine klare Verantwortungsebene.
> Hinweis: Konkrete Namen/Kontaktdaten sollten nicht in Git stehen, sondern getrennt (z.B. in einem internen Adressbuch oder PasswortSafe). Dieses Dokument definiert Rollen und Prozesse.
## 1. Rollenübersicht
### 1.1 Platform Ops
- Verantwortlich für:
- Infrastruktur (Docker/DokployStacks, Netzwerke, TLS, Backups).
- Technische Verfügbarkeit der Services (App, Queues, DB, Redis, Storage).
- Umsetzung und Pflege der Runbooks unter `docs/ops/`.
- Typische Aufgaben:
- Deployments koordinieren (`docker-compose`, Dokploy, Migrations).
- Monitoring/Alerting pflegen (`ops/monitoring-observability.md`).
- IncidentResponse bei SEV1/SEV2 (`ops/incidents-major.md`).
### 1.2 On-Call Engineer
- Rolle, die im wechselnden Turnus (z.B. wöchentlich) OnCall ist.
- Verantwortlich für:
- Reaktion auf laufende Alerts (Monitoring, Pager, ChatBots).
- Erstes Triage nach `ops/incidents-major.md`.
- Eskalation an weitere Rollen (z.B. Platform Ops, Produkt, Security).
- Voraussetzungen:
- Zugriff auf ProduktionsLogs, MonitoringDashboards, Dokploy/Horizon.
- Vertraut mit den wichtigsten Runbooks (PublicAPI, Storage, Photobooth, Billing).
### 1.3 Support / Customer Success
- Verantwortlich für:
- Kontakt mit Tenants (EMail/Telefon/Chat).
- Übersetzung technischer Probleme in Kundensprache.
- Sammeln aller relevanten Informationen, bevor an OnCall/Platform Ops eskaliert wird.
- Typische Aufgaben:
- Tickets aus dem HelpSystem triagieren.
- Proaktive Kommunikation bei Events („Wir haben ein UploadProblem identifiziert, wir arbeiten daran“).
### 1.4 Produkt / Engineering Leads
- Verantwortlich für:
- Entscheidungen bei FeatureFlags, Rollbacks, HotfixReleases.
- Priorisierung langfristiger Maßnahmen nach Incidents (`docs/process/roadmap.md`, `docs/process/todo/*`).
- Typische Aufgaben:
- Teilnahme an Postmortems.
- Freigabe von riskanteren Änderungen (z.B. große Migrations).
## 2. On-Call-Modell
### 2.1 Bereitschaftszeiten
Empfohlene Einteilung (anpassbar an dein Team):
- **Bürozeiten (z.B. 09:0017:00)**
- OnCall ist die jeweils zuständige PlatformOpsPerson des Tages.
- Reaktionsziel: 15 Minuten bei SEV1/2, 60 Minuten bei SEV3.
- **Außerhalb der Bürozeiten / Event-Spitzen**
- Optional: Rotierender OnCallDienst mit Rufbereitschaft.
- Reaktionsziel: nach individueller Vereinbarung (z.B. 3060 Minuten bei SEV1).
> Wenn ihr keinen formalen 24/7Dienst habt, sollte klar dokumentiert sein, **wann** keine garantierte Reaktionszeit besteht (z.B. nachts/wochenends) und wie das Kunden gegenüber kommuniziert wird.
### 2.2 Rotation & Übergabe
- OnCallRotation (z.B. wöchentlich) im Teamtool (Kalender/IssueTracker) pflegen.
- Vor Start einer Schicht:
- Offene Incidents und bekannte Problemzonen durchgehen.
- Sicherstellen, dass Aufrufwege funktionieren (Chat, Telefon, Pager).
- Nach Schicht:
- Kurze Übergabe an nächste OnCallPerson (offene Themen, laufende Beobachtungen).
## 3. Eskalationspfad bei Incidents
### 3.1 Standard-Eskalation (SEV-2/3)
1. OnCall nimmt Alert entgegen, prüft grob die Lage (`ops/incidents-major.md` → Triage).
2. Wenn Problem lösbar erscheint:
- Runbooks anwenden (z.B. PublicAPIPlaybook, MedienRunbook, PhotoboothOps).
- Kundenkommunikation via Support abstimmen.
3. Wenn unklar oder größer:
- PlatformOps bzw. Engineering Lead im Chat markieren.
- IncidentThread mit Statusupdates führen.
### 3.2 SEV-1 (kritisch)
1. OnCall ruft sofort **PlatformOps** und ggf. **ProduktLead** in den IncidentThread.
2. Falls nötig, mit Produkt die Entscheidung für:
- Rollback auf letztes Release,
- temporäre Abschaltung einzelner Features (FeatureFlags),
- Aktivierung einer MaintenanceSeite
treffen.
3. Support/Success informieren betroffene Tenants mit kurzem Status und ETA (auch wenn ETA noch grob ist).
## 4. Tools & Zugänge
Für OnCall/PlatformOps sollten mindestens folgende Zugänge eingerichtet und getestet sein:
- **Dokploy / Docker-Orchestrierung**
- Zugriff auf ComposeStacks, Logs, HealthChecks.
- **Horizon / Queue-Monitoring**
- Zugriff auf `/horizon` (nur für SuperAdmins).
- **Logs**
- Zentralisierte Logs (Loki/ELK) oder SSHZugriff zur Maschine mit `storage/logs`.
- **Monitoring/Alerts**
- Zugang zu Uptime/MonitoringService (StatusDashboard, AlertKonfiguration).
> Stelle sicher, dass OnCallPersonen ausprobiert haben, ob sie diese Tools tatsächlich erreichen können (VPN, 2FA, etc.), bevor eine Schicht beginnt.
## 5. Verbindung zu den Runbooks
Bei einem Incident sollte die OnCallPerson immer vom **Betriebshandbuch** aus denken:
- Einstieg über `docs/ops/operations-manual.md` (DocusaurusStartseite).
- Je nach Symptome:
- **API-/Frontend-Probleme** → PublicAPIPlaybook (`ops/deployment/public-api-incident-playbook.md`), ggf. Marketing/GuestPWASpezifikationen in `docs/prp/` (in PRP, nicht im OpsBereich).
- **Upload/Storage-Probleme** → `ops/media-storage-spec.md`, `ops/guest-notification-ops.md`.
- **Photobooth** → `ops/photobooth/ops_playbook.md`.
- **Abrechnung** → `ops/billing-ops.md`.
- **DSGVO-Fälle** → `ops/compliance-dsgvo-ops.md`.
Dieses Dokument soll nicht alle technischen Details wiederholen, sondern sicherstellen, dass immer klar ist, **wer** reagiert und **welches** Runbook als nächstes geöffnet werden sollte.