Event Sourcing
Event Sourcing (ES)[1] ist ein Verfahren, bei dem alle Veränderungen des Zustands einer Softwareanwendung als Sequenz von Events abgebildet und aufgezeichnet werden.[2] Event Sourcing wird zu den Analysemustern gezählt.
Mögliche Implementierung mit einem ESB
Funktionen bzw. Methoden werden zunächst gemäß dem CQS-Prinzip nach Queries und Commands aufgeteilt. Commands werden an einen Enterprise Service Bus (ESB) geleitet. Falls der Command Handler das Command erfolgreich behandeln kann, wird ein Event erzeugt.
Alle Events werden von einem Event Store aufgezeichnet. Hierbei kommen Datenbankensysteme zum Einsatz. Alternativ kann direkt in das Dateisystem von Festplatten geschrieben werden, was eine höhere Streaming-Performance aufweist als Datenbanken.
Der Einsatz eines Event Stores bietet den Vorteil, dass alle Änderungen am System jederzeit durch eine Wiederholung der Events deterministisch nachgestellt werden können. Dies bietet Vorteile bei der Nachvollziehbarkeit, etwa aus rechtlichen Gründen oder im Debugging. Um die Performance bei der Wiederherstellung eines gegebenen Zustandes zu erhöhen, werden in regelmäßigen Abständen Snapshots des aktuellen Zustands durchgeführt.
Für die einzelnen Events werden am ESB Event-Handler registriert, welche z. B. Zustandsänderungen an denormalisierten Datenbanken durchführen, E-Mails versenden oder Fehler protokollieren.
Vorteile
- Hohe Skalierbarkeit
- Einfache Anpassung an veränderte Business-Anforderungen
- Nachvollziehbarkeit, da alle Änderungen aufgezeichnet werden
- Jederzeit nachträgliche Datenanalyse möglich
- Deterministische Fehleranalyse möglich
Nachteile
- Hoher Aufwand bei der Implementierung
- Unpassend, wenn der Status wichtiger ist als die Events
Weblinks
- CQRS Journey. In: patterns & practices, MSDN. Microsoft, Juli 2012, abgerufen am 13. Juli 2014 (englisch, Tutorial zu CQRS und Event Sourcing in C#).
- Lev Gorodinski: Domain-Driven Design, Event Sourcing and CQRS with F# and EventStore. In: YouTube. DC F# Meetup, 6. März 2014, abgerufen am 13. Juli 2014 (englisch, CQRS und EventSourcing in F#).
Quellen
- Martin Fowler: EventSourcing. 12. Dezember 2005, abgerufen am 13. Juli 2014 (englisch).
- Event Sourcing Pattern. In: MSDN. Microsoft, abgerufen am 13. Juli 2014 (englisch).