Event Sourcing
Event Sourcing bedeutet, Zustand aus einem Strom von unveränderlichen Ereignissen abzuleiten. Während klassische datenzentrische Architekturen üblicherweise den aktuellen Zustand einer Anwendung in einer relationalen Datenbank speichern, begreift Event Sourcing den Strom von Events (Event Ledger) als die kanonische Quelle der Wahrheit. Events lassen nicht nur eine realistischere Modellierung der realen Welt zu (diese ist nämlich auch ereignisgetrieben und -gesteuert), sondern ermöglichen es auch, jederzeit zu rekonstruieren, wie ein bestimmter Zustand entstanden ist. Ein Event Ledger ist damit gewissermaßen ein ausführbares Audit-Log.
Event Sourcing hat in den letzten Jahren viel Popularität gewonnen, weil es gerade im Zusammenhang mit CQRS-Architekturen sehr gut dafür geeignet ist, leichtgewichtige verteilte Anwendungen zu entwickeln, die keine komplexen relationalen Datenbankschemata mehr brauchen.
Obwohl Event Sourcing in der IT relativ neu zu sein scheint, werden die zugrunde liegenden Prinzipien schon lange und erfolgreich eingesetzt. Eine relationale Datenbank etwa hat eine Protokolldatei (Binary Log), in der alle Interaktionen mit der Datenbank festgehalten werden. Werden die Datenbanktabellen korrumpiert, dann baut die Datenbank deren Zustand aus dem Binary Log wieder auf. Das ist genauso Event Sourcing wie es auch innerhalb einer Versionskontrolle, beispielsweise Git, zum Einsatz kommt: hier werden ausgehend von einem initialen Zustand einer Datei eine Reihe von Änderungen in Form von Patches angewendet, um zum aktuellen Zustand der Datei zu kommen.
Auch in der realen Welt gibt es sehr prominentes Beispiel für Event Sourcing, und zwar die Buchhaltung. Hier werden alle Transaktionen in einem Journal festgehalten und beim Saldieren der Konten Summen über die einzelnen Transaktionen gebildet. Hierbei ist sogar gesetzlich festgehalten, dass niemals eine Buchung geändert oder gelöscht werden darf, sondern eine explizite Korrekturbuchung erfolgen muss. Ein Journal in der Buchführung ist damit eine unveränderliche Append-Only-Datenstruktur genauso wie ein Event Log, aus dem Zustand aufgebaut werden kann.
Dieses Aufbauen von Zustand bezeichnet man als Projektion, genauso wie eine Abfrage gegen eine SQL-Datenbank eine Projektion der Daten erzeugt.
Das Event Sourcing-Prinzip findet sich konzeptuell auch bei einer Blockchain wieder. Diese ist ein kryptographisch abgesichertes Journal (Event Ledger) von unveränderlichen Ereignissen als dezentrale Datenbank. Lassen wir Dezentralität, Kryptographie und den ganzen Schwindel rund um die sogenannten Kryptowährungen weg, bleiben genau die Prinzipien übrig, die in der realen Welt als Buchführung gesetzlich geregelt und in der IT seit einigen Jahren Event Sourcing genannt werden.