Event Sourcing
Event Sourcing ist ein Architekturansatz, bei dem Änderungen an einem System als eine Sequenz von Ereignissen gespeichert werden.
Klassifikation
- KomplexitätMittel
- AuswirkungTechnisch
- EntscheidungstypArchitektur
- OrganisationsreifeFortgeschritten
Technischer Kontext
Prinzipien & Ziele
Use Cases & Szenarien
Kompromisse
- Missmanagement von Ereignissen kann zu Inkonsistenzen führen.
- Ereignisse können schwer zu debuggen sein.
- Übermäßige Speicherung kann zu hohen Kosten führen.
- Ereignisse klar und präzise definieren.
- Ereignisse in der richtigen Reihenfolge verarbeiten.
- Regelmäßige Überprüfung der Ereignisarchitektur.
I/O & Ressourcen
- Ereignisse, die den Zustand ändern
- Ereignis-Handler zur Verarbeitung
- Persistente Speicherung für Ereignisse
- Aktualisierte Zustände basierend auf Ereignissen
- Historie der Ereignisse
- Audit-Logs für Compliance
Beschreibung
Event Sourcing ist ein Architekturansatz, der es ermöglicht, den Zustand eines Systems durch die Speicherung von Ereignissen nachzuvollziehen. Anstatt den aktuellen Zustand direkt zu speichern, werden alle Änderungen als Ereignisse aufgezeichnet. Dies ermöglicht eine vollständige Historie der Änderungen und erleichtert die Wiederherstellung von Zuständen zu einem bestimmten Zeitpunkt.
✔Vorteile
- Vollständige Nachvollziehbarkeit von Änderungen.
- Erleichterte Wiederherstellung von Zuständen.
- Bessere Unterstützung für Audits und Compliance.
✖Limitationen
- Komplexität bei der Verwaltung von Ereignissen.
- Potenzielle Performance-Probleme bei großen Datenmengen.
- Erfordert ein Umdenken in der Datenarchitektur.
Trade-offs
Metriken
- Anzahl der gespeicherten Ereignisse
Die Gesamtzahl der Ereignisse, die im System gespeichert sind.
- Durchschnittliche Wiederherstellungszeit
Die durchschnittliche Zeit, die benötigt wird, um einen Zustand aus Ereignissen wiederherzustellen.
- Ereignisverarbeitungszeit
Die Zeit, die benötigt wird, um ein Ereignis zu verarbeiten.
Beispiele & Implementierungen
Bankanwendung
Eine Bankanwendung, die alle Transaktionen als Ereignisse speichert, um eine vollständige Historie der Kontobewegungen zu gewährleisten.
E-Commerce-Plattform
Eine E-Commerce-Plattform, die Bestellungen und Zahlungen als Ereignisse speichert, um den Bestellstatus nachverfolgen zu können.
Content-Management-System
Ein CMS, das Änderungen an Inhalten als Ereignisse speichert, um die Historie von Änderungen nachvollziehbar zu machen.
Implementierungsschritte
Definieren Sie die Ereignisse, die gespeichert werden sollen.
Implementieren Sie die Ereignis-Handler.
Richten Sie die persistente Speicherung ein.
⚠️ Technische Schulden & Engpässe
Tech Debt
- Unzureichende Infrastruktur für Ereignisse.
- Mangelnde Dokumentation von Ereignissen.
- Fehlende Tests für Ereignis-Handler.
Bekannte Engpässe
Beispiele für Missbrauch
- Ereignisse als temporäre Daten verwenden.
- Ereignisse nicht korrekt speichern.
- Ereignisse nicht für Audits nutzen.
Typische Fallen
- Annahme, dass Ereignisse einfach zu verwalten sind.
- Glaube, dass alle Ereignisse gleich wichtig sind.
- Unterschätzung der Komplexität der Ereignisverarbeitung.
Erforderliche Fähigkeiten
Drivers (Architectural Drivers)
Constraints
- • Ereignisse müssen unveränderlich sein.
- • Ereignisse müssen in der richtigen Reihenfolge verarbeitet werden.
- • Technische Infrastruktur muss vorhanden sein.