Event-Sourcing-Library für Java und Scala: Eventsourced 0.4.0

Hartmut Schlosser

Fragen über den aktuellen Zustand der Welt lassen sich in der Informatik durch Querys auf den Zustand einer Anwendung beantworten. Manchmal ist es aber nicht nur von Interesse, den Status Quo zu kennen, sondern auch zu wissen, wie wir zu diesem Zustand gelangt sind. Dieser Aufgabe hat sich in der IT das Konzept des Event Sourcing angenommen. Nutzern des Middleware-Frameworks Akka steht dafür seit Kurzem die Bibliothek Eventsourced zur Verfügung, die aktuell in Version 0.4.0 erschienen ist.

Die grundlegende Idee des Event Sourcing ist, jede Veränderung des Zustands einer Anwendung in einem Event-Objekt festzuhalten. Diese Objekte selbst werden in der Reihenfolge ihres Auftretens gespeichert und ergeben eine Art Historie der Zustandsveränderungen einer Anwendung.

Der Clou der Sache ist aber nicht unbedingt diese Historie, die auch eine einfachere Logging-Technologie bereitstellen könnte. Vielmehr geht es um die Garantie, dass Veränderungen an Domänenobjekten durch die Event-Objekte initiiert werden. Dadurch wird es beispielsweise möglich, durch die Ausführung von Event-Sequenzen einen beliebigen Zustand einer Anwendung wiederherzustellen. Branches können eingeführt werden, inkorrekte Events ausgebessert werden, etc. Auch das Problem der falschen Reihenfolge gewisser Events, das beim asynchronen Messaging auftreten kann, wird so lösbar.

In der Eventsourced Library wird die Technik auf Akka-Aktoren angewandt, die über stapelbare Traits persistiert werden. Es werden also Veränderungen festgehalten und nicht Zustände. Die Bibliothek wird maßgeblich von Akka-Committer Martin Krasser entwickelt, der auch eine umfangreiche Dokumentation und Beispiele bereit stellt. Aktuell ist Eventsourced bereits auf Akka 2.1 Snapshot und Scala 2.10.0 Snapshot eingestellt.

Übrigens: Wer mehr über das Thema Event Sourcing wissen möchte, dem sei der lesenswerte Blogpost von Martin Fowler zum Thema empfohlen.

Geschrieben von
Hartmut Schlosser
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.