Eliminierung technischer Schulden mit PHPStan, Rector PHP und PHPUnit. Über 20 Jahre Praxiserfahrung in skalierbaren Backends.
- Aktualisiert:
- Autor:
- Roland Golla
Event Sourcing: Definition und Einordnung
Inhalt
Event Sourcing mit NCA: Schnelle Hilfe vom Experten
Gesetzliche Konformität & Inklusion. Optimierung von Performance und Conversion durch radikal nutzerzentriertes, universelles Design.
Skalierbare KI-Systeme mit echtem Code Ownership. CI/CD, Backup-Strategien und Infrastruktur, die mit deinem Team wächst.
So funktioniert Event Sourcing technisch
- Event: eine Tatsache in der Vergangenheit, benannt in der Fachsprache. OrderCancelled, nicht OrderUpdate.
- Event Store: eine Tabelle mit Aggregat, Version, Typ und Daten. Nur Einfügen, kein Ändern, kein Löschen.
- Replay: alle Ereignisse eines Aggregats werden angewendet und ergeben den aktuellen Zustand.
- Projektion: aus den Ereignissen entsteht eine Tabelle für Listen und Auswertungen.
- Snapshot: ein Zwischenstand nach vielen Ereignissen, damit das Replay kurz bleibt.
final class Order
{
private OrderStatus $status;
private array $pendingEvents = [];
public static function fromHistory(Event ...$events): self
{
$order = new self();
foreach ($events as $event) {
$order->apply($event);
}
return $order;
}
public function cancel(CancellationReason $reason): void
{
if ($this->status === OrderStatus::Cancelled) {
return;
}
$this->record(new OrderCancelled($reason));
}
}
Zustand speichern gegen Ereignisse speichern
| Thema | Klassische Speicherung | Event Sourcing |
|---|---|---|
| Historie | Geht beim Überschreiben verloren | Vollständig vorhanden, inklusive Reihenfolge |
| Abfragen | Direkt per SQL möglich | Nur über Projektionen sinnvoll |
| Schemaänderung | Migration der Tabelle | Versionierte Ereignisse und Upcasting |
| Betrieb | Vertraut, wenig Zusatzaufwand | Projektionen überwachen und neu aufbauen können |
Was Event Sourcing im Betrieb wirklich kostet
Ereignisse als Gedächtnis für KI gestützte Arbeit
CQRS is not Event Sourcing.
Die NCA Erfahrung mit Historie und Nachvollziehbarkeit
Erreichen Sie unsere PHP Consultant Spezialisten
Wir sind Experten für PHP und helfen Ihnen, Ihre digitalen Herausforderungen zu meistern. Unser erfahrenes Team unterstützt Sie bei PHP Updates, PHP Refactoring und berät Sie remote zu allen Fragen rund um PHP. Mit unseren vollautomatischen CI/CD Deployments und einer robusten Docker-Infrastruktur bringen wir Ihre PHP-Projekte auf das nächste Level. Vertrauen Sie auf unsere Expertise für zuverlässige und skalierbare PHP-Lösungen.
Häufige Fragen zu Event Sourcing
Was ist Event Sourcing 2026 einfach erklärt?
Event Sourcing speichert nicht den aktuellen Zustand, sondern jedes fachliche Ereignis, das dazu geführt hat. Der aktuelle Stand entsteht, indem alle Ereignisse eines Aggregats der Reihe nach angewendet werden. Das Vorbild ist das Kontobuch: Buchungen werden fortgeschrieben, der Saldo ist das Ergebnis und nicht die gespeicherte Wahrheit.
Braucht Event Sourcing 2026 zwingend CQRS?
In der Praxis fast immer. Ein Event Store lässt sich nicht sinnvoll für Listen und Auswertungen abfragen, dafür braucht es Projektionen als Lesemodelle. Das ist bereits CQRS. Umgekehrt gilt das nicht: CQRS funktioniert problemlos mit einer klassischen Datenbank und ganz ohne Event Sourcing.
Wann lohnt sich Event Sourcing 2026?
Wenn die Historie selbst fachlich wertvoll ist. Typisch sind Abrechnung, Buchhaltung, Logistik und alles mit Nachweispflicht. Auch Domänen, in denen die Frage warum ist dieser Zustand entstanden regelmäßig gestellt wird, profitieren. Für Stammdatenpflege und einfache Verwaltung ist der Aufwand nicht gerechtfertigt.
Wie geht Event Sourcing 2026 mit der DSGVO zusammen?
Mit Planung. Ein unveränderlicher Speicher und das Recht auf Löschung passen nicht von selbst zusammen. Übliche Lösung ist, personenbezogene Daten nicht roh in Ereignisse zu schreiben, sondern hinter eine Referenz zu legen, die gelöscht werden kann. Diese Frage gehört vor die erste Zeile Code.
Was ändert sich 2026 durch KI gestützte Entwicklung?
Vor allem die Lesbarkeit der Domäne. Ereignisnamen wie BestellungAufgegeben oder ZahlungErfasst beschreiben den Ablauf ohne Dokumentation, was Menschen beim Onboarding und Agents beim Verstehen hilft. An der Datenregel ändert sich nichts: Modelle arbeiten gegen lokale Umgebungen mit Testdaten, nie gegen echte Ereignisse.
Wie ändert man ein Ereignis nachträglich?
Gar nicht. Ereignisse sind Tatsachen der Vergangenheit und bleiben unverändert. Ändert sich die Struktur, entsteht eine neue Version des Ereignisses, und beim Laden übersetzt ein Upcaster die alte Form in die neue. Wer das nicht von Anfang an einplant, steht beim ersten Feldwechsel vor einem Problem.
Was ist eine Projektion?
Eine Projektion liest Ereignisse und schreibt daraus eine Tabelle für Listen und Auswertungen. Sie ist bewusst wegwerfbar: Bei einem Fehler wird sie gelöscht und aus dem Event Store neu aufgebaut. Genau dieser Neuaufbau sollte automatisiert und geübt sein, bevor er im Ernstfall gebraucht wird.
Wozu dienen Snapshots?
Sie verkürzen das Replay. Hat ein Aggregat tausende Ereignisse, dauert der Aufbau aus der vollständigen Historie zu lange. Ein Snapshot speichert den Zustand nach einer bestimmten Version, danach werden nur noch die neueren Ereignisse angewendet. Nötig wird das erst bei wirklich langen Historien.
Welchen Speicher nimmt man in PHP?
Für die meisten Projekte reicht eine relationale Datenbank mit einer Ereignistabelle aus Aggregat, Version, Typ und Daten, plus einem eindeutigen Index auf Aggregat und Version. Spezialisierte Event Stores lohnen sich erst bei hohem Durchsatz. MySQL oder PostgreSQL tragen deutlich weiter, als viele erwarten.
Wie testet man eine Domäne mit Event Sourcing?
Sehr angenehm. Ein Test besteht aus einer Liste vergangener Ereignisse, einer ausgelösten Absicht und den erwarteten neuen Ereignissen. Keine Datenbank, keine Mocks, nur Fachlichkeit. Diese Tests lassen sich einem Fachexperten vorlesen und sind mit PHPUnit schnell geschrieben.
Lässt sich Event Sourcing nachträglich einführen?
Nur bereichsweise und mit Vorarbeit. Sinnvoll ist ein einzelnes Aggregat mit hohem fachlichem Wert, abgesichert durch Tests und im Betrieb mit Parallel Run gegen die bestehende Logik verglichen. Eine Umstellung des ganzen Systems auf einmal ist in gewachsenen Anwendungen kein realistischer Plan.
Wie berät NCA zu dieser Entscheidung?
Wir klären zuerst die eigentliche Anforderung. Oft geht es um Nachvollziehbarkeit, und dafür reicht ein fachliches Änderungsprotokoll. Ist Event Sourcing der richtige Weg, bauen wir es abgesichert und bereichsweise um. Jede Zusammenarbeit startet mit einem kostenlosen Kennenlernen, danach schätzen wir den Aufwand ein und rechnen transparent minutengenau ab.