e.V.
Lösungen · Architektur · Live · geprüft 2026-05-21

Event-Sourcing als Daten-Architektur

Statt aktuelle Zustände in einer App-Datenbank zu mutieren, schreiben unsere Apps jede Änderung als unveränderliches Event in einen zentralen, signierten Ledger. Daraus folgt vieles, was sich sonst nicht bauen lässt: Audit-Trail, Cross-App-Timeline, vollständige Lösch- und Export-Pfade, transparente KI-Aktionen.

These
Jede Änderung ist ein Event. Apps lesen Projektionen, schreiben aber nur Events — und der Ledger ist die einzige Quelle der Wahrheit.
Was wir tun

Die meisten Apps speichern den aktuellen Zustand in einer Datenbank und überschreiben ihn, wenn sich etwas ändert. Das ist einfach, schnell und schmerzlos — bis jemand fragt: „Wer hat das wann geändert?” oder „Was hat die KI da gerade entschieden?” oder „Lösch alles über mich, restlos.” Mit mutiertem State sind diese Fragen entweder gar nicht oder nur mit nachträglich aufgesetzten Audit-Logs zu beantworten, die ihrerseits eine weitere Datenquelle sind, die mit der Wahrheit synchron bleiben muss.

Wir haben uns Mitte 2026 entschieden, das umgekehrt zu bauen. Statt die aktuelle Welt in der Datenbank zu pflegen, schreiben unsere Apps jede Änderung als unveränderliches Event in einen zentralen Ledger (sync2). Die App-Datenbanken sind dann nichts weiter als Projektionen — sekundäre, neu aufbaubare Sichten auf die Event-Geschichte. Wenn wir uns vertippen, regenerieren wir die Projektion; die Wahrheit bleibt erhalten.

Aus dieser Entscheidung fallen Dinge ab, die wir sonst hätten einzeln einbauen müssen. Eine Cross-App-Timeline („was hat sich in allen meinen Apps in den letzten 24 Stunden geändert, inklusive KI-Aktionen?”) ist ein triviales Read-Modell, kein neues System. DSGVO-Lösch-Kaskaden funktionieren, weil wir alle Events einer Nutzerin in der Datenbank finden können. Zero-Knowledge wird einfach: die sensiblen Felder im Event werden client-seitig verschlüsselt, der Server sieht nur Chiffretext. KI-Aktionen werden zu eigenen, attribuierten Events — sichtbar, widerrufbar, nicht stillschweigend in den User-State gemischt.

Das hat einen Preis. Event-Sourcing ist anspruchsvoller zu bauen und zu warten als ein klassischer CRUD-Server, der Speicher wächst, und Schema-Migrationen sind teurer. Wir zahlen diese Komplexität bewusst — nicht weil sie elegant ist, sondern weil sie strukturelle Eigenschaften erzwingt, die wir mit nachgelagerten Tricks nicht mehr glaubwürdig einbauen könnten.

Umsetzung

Wie genau das funktioniert

  • Alle Schreib-Operationen gehen über den Plattform-Service `sync2` (event-sourced) statt direkt in App-Datenbanken.
  • Events sind unveränderlich, signiert, mit Akteur-Attribution (User vs. Service vs. KI) und Schema-Hash für Drift-Erkennung.
  • Sensible Felder werden vor dem Schreiben mit AES-GCM-256 verschlüsselt (BYOK-Vault); der Server speichert nur den Chiffretext.
  • Snapshot-Compaction reduziert Lese-Last, ohne die Event-Geschichte zu verlieren.
  • WebSocket-Push fan-out an alle Geräte derselben Nutzerin in Echtzeit, ohne Polling.
  • Schema-Hash-Drift wird beim Konsumieren erkannt und blockiert inkompatible Reads — Schema-Brüche sind sichtbar, nicht still.
Trade-offs

Was uns das kostet

Jeder Lösung hat einen Preis. Diese hier zahlen wir bewusst — weil das, was wir damit erreichen, mit nachgelagerten Tricks nicht ehrlich zu bauen ist.

  • Event-Sourcing ist deutlich aufwendiger als ein CRUD-Server. Wir zahlen Engineering-Zeit, um Eigenschaften zu kriegen, die ohne diese Architektur strukturell unmöglich wären.
  • Speicher wächst linear mit Schreib-Operationen. Compaction lindert das, ändert aber nichts am Grund-Wachstum.
  • Schema-Migrationen sind teurer als bei mutablen Tabellen — jede Schema-Änderung muss alle historischen Events verstehen können.
Stand

Offene Punkte

  • Vault-Verwaltung über mehrere Geräte hinweg ist noch nicht nutzerfreundlich genug — Schlüsselverlust ist heute ein Daten-Verlust.
  • Nicht alle Apps sind migriert; ein paar laufen noch im LWW-Modus auf dem alten Sync-Service.

Lösungen sind die strukturellen Antworten des Vereins. Werte sagen, wonach wir uns ausrichten; Probleme sagen, wogegen; Lösungen sagen, was wir daraus baulich machen.