Event-Sourcing statt Blockchain

Das Konzept der Blockchain ist durch kryptografische Währungen wie Bitcoin bekannt geworden. Aus technischer Sicht steckt weit weniger dahinter als man zunächst auf Grund des Hypes vermuten könnte. Letztlich stellt eine Blockchain nämlich lediglich eine verteilte Datenbank dar, die ein automatisiertes Verfahren zum Ermitteln von Konsens verwendet.

 

Einige Probleme lassen sich mit einer Blockchain tatsächlich elegant lösen, zum Beispiel das Schließen digitaler Verträge. Für zahlreiche Probleme ist das Verfahren aber zu aufwändig. Immerhin ist die Blockchain per se ein verteiltes System, und derartige Systeme bringen stets eine gewisse Komplexität mit sich. Daher sollte die Entscheidung, ein System auf Basis einer Blockchain aufzubauen, wohlüberlegt sein.

 

Änderungen nachvollziehen

Die grundlegende Motivation, eine Blockchain-basierte Technologie einzusetzen, besteht häufig in der Anforderung, Änderungen nachvollziehen zu können. Wer hat welche Änderung wann und aus welchem Grund durchgeführt?

 

Auch wenn der Hype, der um das Konzept der Blockchain gemacht wird, etwas Anderes suggeriert, ist die Idee, Änderungen auf nachvollziehbare Art zu speichern nicht neu. Daher gibt es durchaus Alternativen zum Einsatz einer Blockchain, die je nach Anwendungsfall vorzuziehen sind. Eine dieser Alternativen stellt das sogenannte „Event-Sourcing“ dar.

 

Die Idee bei dieser Vorgehensweise ist, nicht den derzeitigen Zustand der Daten zu speichern, sondern die Änderungen, die im Lauf der Zeit zum aktuellen Zustand geführt haben. Diese Änderungen werden im Idealfall als fachliche und semantische Events abgebildet. Auf dem Weg lässt sich im Nachhinein nicht nur nachvollziehen, welche Änderung wann und von wem durchgeführt wurde, sondern auch warum.

 

Event-Sourcing ohne CQRS

Häufig wird Event-Sourcing im Zusammenhang mit CQRS und Domain-Driven Design (DDD) erwähnt. Dadurch entsteht gelegentlich der Eindruck, Event-Sourcing müsse zwingend im Verbund mit diesen Konzepten verwendet werden. Das ist jedoch nicht der Fall.

 

In gewissem Sinne ist eine Blockchain sogar nichts anderes als eine Möglichkeit von vielen, einen verteilten Event-Store zu implementieren. Der Nachteil an dem Ansatz ist aber, dass die Blockchain die Integrität von Daten nicht garantiert – unter Umständen werden Änderungen verworfen, wenn die Mehrheit des Netzes sich dafür entscheidet.

 

Genau das vermeidet das Event-Sourcing: Da hier eine zentrale Instanz über die Integrität der Daten waltet, kann man sich in höherem Maße auf ebendiese verlassen. Insbesondere auch als Alternative zu CRUD ist Event-Sourcing ein interessanter Ansatz, der die Unterstützung für historische Daten serienmäßig enthält, und auf der Basis spannende Analysen ermöglicht.

 

Sessions dazu im #dwx2018 Programm:

Mo, 25. Juni 2018, 14:15 – 15:15 Uhr: DDD, Event-Sourcing und CQRS – Theorie und Praxis
Mo, 25. Juni 2018, 17:00 – 18:00 Uhr: Event-Sourcing vs CRUD
Di, 26. Juni 2018, 15:30 – 16:30 Uhr: Legacy und CQRS integrieren
Do, 28. Juni 2018, 09:00 – 17:00 Uhr: Event-getriebene Entwicklung und Architektur

Hier zur Übersicht und mehr Info >>