Auch genannt: Event-Driven Architecture, EDA.
Eine ereignisgesteuerte Architektur ist ein Softwarearchitekturstil, bei dem Systeme über das Erzeugen, Übermitteln und Verarbeiten von Ereignissen lose gekoppelt miteinander kommunizieren, statt sich direkt gegenseitig aufzurufen.
In vielen klassischen Systemen ruft eine Komponente eine andere direkt auf und wartet auf deren Antwort. In einer ereignisgesteuerten Architektur meldet eine Komponente stattdessen nur, dass etwas passiert ist – etwa „Bestellung aufgegeben“ – ohne zu wissen, wer diese Information wie verarbeitet. Andere Komponenten können auf solche Ereignisse reagieren, wenn sie daran interessiert sind, wodurch Systeme flexibler erweiterbar werden.
Ereignisproduzenten erzeugen Ereignisse, sobald ein relevanter Zustandswechsel eintritt, und veröffentlichen sie über einen vermittelnden Mechanismus, häufig eine Nachrichtenwarteschlange oder einen Event-Broker. Ereigniskonsumenten abonnieren die für sie relevanten Ereignistypen und verarbeiten sie unabhängig voneinander, oft asynchron und zeitversetzt. Weil Produzenten und Konsumenten sich nicht direkt kennen müssen, lassen sich neue Konsumenten ergänzen, ohne bestehende Systeme zu verändern.
Ein Onlineshop veröffentlicht bei jeder abgeschlossenen Bestellung ein Ereignis „Bestellung abgeschlossen“. Ein Versandsystem reagiert darauf, indem es den Versand einleitet, ein Buchhaltungssystem erstellt parallel eine Rechnung, und ein Empfehlungssystem aktualisiert das Kundenprofil – alle drei Systeme reagieren unabhängig voneinander auf dasselbe Ereignis.
Ereignisgesteuerte Architekturen werden eingesetzt, um Systeme lose zu koppeln und unabhängig voneinander weiterzuentwickeln, Echtzeitreaktionen auf Geschäftsereignisse zu ermöglichen, Lastspitzen durch asynchrone Verarbeitung abzufedern und komplexe Prozesslandschaften mit vielen beteiligten Systemen handhabbar zu machen.
Die lose Kopplung erleichtert zwar Erweiterbarkeit, erschwert aber die Nachvollziehbarkeit des Gesamtablaufs, da kein zentraler Ort mehr existiert, an dem der komplette Ablauf sichtbar ist. Häufig wird zudem unterschätzt, dass Fehlerbehandlung in asynchronen, ereignisgesteuerten Systemen deutlich komplexer ist als in direkt aufrufenden Architekturen, etwa wenn Ereignisse mehrfach oder in falscher Reihenfolge eintreffen.
Nicht zu verwechseln mit Message Queue: Eine Message Queue ist ein konkretes technisches Werkzeug zur Übermittlung von Nachrichten, während die ereignisgesteuerte Architektur das übergeordnete Architekturprinzip ist, das solche Werkzeuge nutzen kann. Ebenfalls abzugrenzen ist Workflow: Ein Workflow beschreibt eine geplante, meist sequenzielle Abfolge von Schritten, während ereignisgesteuerte Systeme auf unvorhersehbar eintretende Ereignisse reagieren.