Event Sourcing - Wann der Einsatz sinnvoll ist und welche Möglichkeiten sich dabei bieten
Ob im Bereich Finanzen, Gesundheitswesen, Einzelhandel oder Logistik: Die Arbeit mit Event Sourcing ist für Unternehmen ein einfaches und zuverlässiges Vorgehen, denn auf diese Weise kann bequem festgehalten werden, welche Aktionen stattgefunden haben und aus welchem Grund. Das Pattern führt Änderungen dabei automatisch als Ereignis auf und übertragt diese ins Ereignisprotokoll – die Historie aller ausgelösten Calls und APIs kann beim Event Sourcing also jederzeit eingesehen werden. Welche Vorteile Event Sourcing noch mit sich bringt und wo Event Sourcing eingesetzt werden kann, erfahren Sie hier.
Die Vorteile von Event Sourcing
Event Sourcing wird immer beliebter, da durch das Verwenden des Patterns Informationen schnell zugänglich gemacht werden und mit der Kombination von domain-driven-design (DDD) und Command-Query-Responsibility-Segregation (CQRS) grosse Datenmenge verteilt verarbeitet werden können.
Informationen speichern mit Event Sourcing
Mit Event Sourcing gehen keine Informationen verloren, denn jede Anfrage wird als Event gespeichert, das im Nachhinein angesehen und analysiert werden kann. Das kann für zukünftige Entwicklungen wichtig sein, wenn Informationen zu einem späteren Zeitpunkt benötigt und abgerufen werden müssen. Die Gesamtarchitektur beim Event Sourcing ist ausserdem sehr skalierbar und widerstandsfähig gegenüber Systemausfällen, wenn sie beispielsweise mit anderen Systemen gekoppelt wird.
Audit-Durchführung: Security audit logs erstellen und nachvollziehen
Durch die Speicherung von Events kann ein zuverlässiges und ereignisgesteuertes Auditprotokoll erstellt werden. Die bereitgestellten Daten ermöglichen es, reversible Aktionen zu tätigen und dadurch Informationen und Zustände wiederherzustellen. Ein Beispiel: manipuliert man Daten mittels CRUD Operationen, verliert man beim Setzen eines Kontostands die Historie. SET Balance = 150 $, würde die den aktuellen Kontostand überschreiben. Speichert man hingegen die Events einzeln, verliert man die History nicht. Mittels Event Sourcing lassen sich Zustände also rückwirkend einsehen und nachvollziehen.
Event-driven architectures und die Bereitstellung verschiedener Datenstände
Ereignisse lassen sich mithilfe von Event Sourcing durch ein publish-subscribe-Modell zur Verfügung stellen. Dadurch werden die Abonnierenden benachrichtigt, wenn etwas Relevantes passiert, und können auf diesen Informationen aufbauend alle Systeme synchron halten.
Vereinfachung der Strukturen durch Event Sourcing + DDD + CQRS
Event Sourcing wird oft kombiniert mit DDD (Domain Driven Design) und CQRS (Command and Query Responsibility Segregation). Dank Eventsourcing + DDD sind die Schreibzugriffe auf eine Domain stets schnell, da die Events immer nur angefügt werden müssen. Dank Eventsourcing + CQRS werden, wie in der Abbildung oben ersichtlich, sogenannte Readmodels, auch Projektionen genannt, durch das Verarbeiten der Events denormalisiert. Dadurch kann für jede Projektion / Readmodel die Lesezugriffen optimiert werden. Die Anwendung bietet somit stets gute Performance bei Schreib- und Lesezugriffen. Ein System basierend auf Eventsourcing ist somit zwar komplexer als traditionelle 3Tier Systeme dafür aber bieten diesen mehr Optimierungsspielraum, da die Verantwortlichkeiten verteilt werden können.Zudem werden objektrelationale Impedanzdiskrepanzen durch die Speicherung der Ereignisse (statt der Speicherung der Domänenobjekte) vermieden.
Denken in Events
Das Denken in Events kann für gewisse Anwendungsfälle, gerade bei komplexeren Business-Domänen, durchaus Sinn machen. Sind beispielsweise Business-Prozesse eng miteinander verknüpft, können Events statt CRUD Operationen helfen den kognitiven Mehraufwand die Prozesse in CRUD Operationen abzubilden, da die Events der natürlichen Sprache des Unternehmens folgen. Domänen-Prozesse sind somit leichter verständlich für neue Entwickler sofern diese gut visualisiert. Es gilt abzuwägen, ob es für den Anwendungsfall Sinn macht Eventsourcing anzuwenden, denn z.B. die Infrastruktur, Deployments und andere Teile können u.U. auch komplexer werden.
Planung mit Events
Wenn ein System eventbasiert aufgebaut wird, kommen Begrifflichkeiten wie: Domain Design, Stream Design (Aggregate Design), Bounded Context schnell in den Umlauf innerhalb des Entwicklerteams.
Es gilt die Events die in den Umlauf kommen zu planen, denn sie definieren die Business Prozesse. Weiter müssen die Verantwortlichkeitsbereiche definiert und aggregiert werden. Z.b. gibt es mehrere Events die zusammengebündelt werden können in ein sogenanntes Aggregate. Eine bekannte Technik hierzu ist Eventstorming.
Weitere, müssen die Abhängigkeiten zwischen Events und Projektionen gut visualisert und geplant werden. Eine weniger bekannte aber sehr effektive Technik hierzu ist Event Modelling - sie kann zur Visualisierung und Planung solcher Abhängigkeiten eingesetzt werden.
Werden die richtigen Techniken korrekt angewandt, sind eventbasierte System sehr schön plan- und visualisierbar. Da die events meist auf Verben wie: “userCreated” beruhen, findet man diese auch in den blueprints der Features. Dies hilft enorm, die blueprints sehr schnell zu verstehen.
Status der Anwendung bestimmen und neu erstellen
Durch die Speicherung von Events ist es möglich, den Zustand einer Entität zu jedem möglichen Zeitpunkt zu bestimmen. So ist es zum Beispiel möglich den Status einer Woche zuvor einzusehen. Werden die selektierte Events in einer leeren Anwendung, mit einer leeren Datenbank, erneut verarbeitet, kann der Anwendungsstatus. Für diesen neuen Service aufgebaut werden. Somit ist es zum Beispiel möglich, die oben aufgeführte Architektur um einen Service zu erweitern und für dessen den Anwendungsstatus aufzubauen ohne ein Datenmigrationsskript zu schreiben.
Fehlerbehebung mit Event Sourcing
Wird ein Fehler in der Stuktur der abgelegten Daten bemerkt, kann dieser in dank mittels Event Sourcing aufgebauter Architektur unkompliziert korrigiert werden. Ein Beispel wäre, wenn man in der oben aufgeführten MobileApp Datenbank, den “account” ohne dessen “accountID” abgelegt hätte, diese nun aber für alle Accounts braucht. Man müsste somit nur den Konsumenten des Events korrigieren und beim Speichern darauf achten, dass die “accountId” mitgespeichert wird. Die alten Events könnten nun replayed und das neue Datenmodel paralellel aufgebaut werden. Komplexe Datenmigrationsskripts werden nicht mehr gebraucht.
Auch beim Debugging ist Event Sourcing hilfreich, da die Events immer sehr deskriptiv sind. Mittels Distributed Tracing und einem guten Visualisierungstook wie Jaeger, ist es auch sehr einfach möglich die gesammte Architekur live zu inspizieren. Diese Übersicht hilft bei der Fehlersuche wie auch bei der Entwicklung.
Nachhaltigkeit schaffen durch die richtige Unterstützung
Der Wechsel in die Cloud, die Gewährleistung einer 24/7-Betriebszeit, die Bewältigung hoher Verkehrslasten sowie die Nutzung gesammelter Datensätze im Big Data gehört heutzutage für viele Unternehmen zum Alltagsgeschäft dazu. Expert*innen aus dem digitalen Umfeld helfen und unterstützen dann zuverlässig beim Aufbau und der Pflege von digitalen Strategien: von der Übernahme der Systemwartung, über die Konzeption datenintensiver Anwendungen bis hin zum Austausch als technischer Sparringspartner. Denn um Prozesse vollständig und erfolgreich zu digitalisieren, werden die benötigten technischen Fähigkeiten, das richtige Geschäftsmodell und ein passendes Mindset benötigt.
Fazit
Event Sourcing basiert auf dem ergeingissorientierten Prinzip hilft dabei, spätere Abfragen zu Aktionen und Vorgängen transparent zu gestalten und zu realisieren. Das beliebte Speichermuster ist eine vielfältige Lösung, in der spätere Herausforderungen bereits frühzeitig und proaktiv eingeplant und vorbereitet werden. Dabei ergeben sich verschiedene Möglichkeiten, um Alltagsaufgaben wie zum Beispiel das Erstellen von Audits direkt mitaufzunehmen und somit keine weiteren Ressourcen dafür aufwenden zu müssen. Gerade für die oft benötigte Historie ist Event Sourcing ein gutes Architektur Pattern. Weiter bleibt die Sprache die gleiche - es wird nicht transpiliert von den natürlichen Events in einem Unternehm zu CRUD Operationen - was der Kommunikation zwischen Domänenexperten und Entwicklern zu Gute kommt. Dank Events erreicht man gleich auch loose coupling, mit welchem man individuell pro Service die Skalierung anpassen kann, falls dies nötig wird im Laufe der Zeit.Wir sind Ihr Partner für anspruchsvolle Digitalisierungsthemen und beraten Sie umfassend zum Thema Event Sourcing. Nehmen Sie hier Kontakt zu uns auf und lassen Sie sich von uns beraten!
📝 Gefällt dir, was du liest?
Dann lass uns in Kontakt treten! Unser Engineering-Team wird sich so schnell wie möglich bei dir melden.