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.
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.
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.
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.
Welche Probleme dieser Lösung adressiert
Diagnose ohne Antwort ist Lamentation; Antwort ohne Diagnose ist Ingenieurs-Spielerei. Hier verbindet sich beides.
- Enshittification — Software wird über Zeit schlechterWenn Wachstum, Werbung und Aktionärsrendite den Takt geben, verschlechtert sich jedes erfolgreiche Software-Produkt zwangsläufig.
- Daten-Monetarisierung — du bist nicht die Kundin, du bist die WareWenn das Produkt kostenlos ist, ist nicht selten dein Verhalten das eigentliche Produkt — und dein Profil wird in Echtzeit versteigert.
Welche Grundsätze er trägt
Was diesen Lösung weiterbaut
- Jetzt Memoro Web — Browser-Live-Test der wiederhergestellten UI Die SvelteKit-UI von Memoro wurde auf die neue Hono-RPC-App geliftet (Phasen A–F durch). Was fehlt vor öffentlicher Bewerbung: ein vollständiger Live-Test im Browser und eine letzte ausstehende DB-Migration.
- Bald sync1 abschalten, nachdem alle Apps auf sync2 (Event-Sourcing) sind sync2 (Event-Sourcing für 9 standalone Apps) läuft live. sync1 (Legacy-LWW für managarten) läuft parallel. Sobald managarten und die letzten Hybrid-Apps vollständig auf event-sourced umgebogen sind, kann sync1 retired werden.
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.
Weitere Lösungen dieser Art
Wie die Daten fließen — strukturelle Entscheidungen.
- Cross-App-Timeline — jede Änderung ist sichtbar, auch KI-ÄnderungenEine zentrale Zeitleiste über alle Vereins-Apps zeigt in Echtzeit, was sich in den eigenen Daten geändert hat — von wem, wann, in welcher App, und ob ein Mensch oder eine KI sie geschrieben hat.
- Föderation statt Lock-InDaten gehen über App-Grenzen hinweg über offene Plattform- Protokolle (Share, Links, Events, MCP, Search), nicht über hauseigene Vendor-APIs. Jede App kann zur Allmende beitragen, jede App kann fortgehen — der Export ist gleichwertig zur internen API.
- Local-First + Login-OptionalWo es geht, rechnet die App auf dem Gerät, speichert auf dem Gerät und funktioniert ohne Konto. Ein Login ist nur dann nötig, wenn die Nutzerin tatsächlich Geräte-übergreifend syncen oder Mana-Aktionen ausführen möchte.
- PWA vor Native — Web-App, wo es gehtWo der Plattform-Vorteil einer nativen App nicht zwingend gebraucht wird, liefern wir eine progressive Web-App statt. Das spart den App-Store-Tribut, verkürzt die Update-Schleife und hält die Installation in der Hand der Nutzerin.
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.