Event-driven Architecture: Ereignisgesteuerte Systemintegration einfach erklärt

Eine Event-driven Architecture, kurz EDA, ist eine Softwarearchitektur, bei der Systeme auf Ereignisse reagieren, anstatt sich permanent gegenseitig abzufragen. Ein Ereignis beschreibt dabei eine relevante Zustandsänderung, beispielsweise „Bestellung erstellt“, „Zahlung abgeschlossen“, „Produkt geändert“ oder „Versand gestartet“.

Besonders bei E-Commerce, Middleware, Microservices und komplexen Systemlandschaften ermöglicht eine ereignisgesteuerte Architektur flexible und weitgehend entkoppelte Integrationen. Shopware, ERP, CRM, Logistik oder Marketing-Systeme können dadurch auf Veränderungen reagieren, ohne direkt voneinander abhängig zu sein.

Wie funktioniert eine Event-driven Architecture?

Eine ereignisgesteuerte Architektur besteht vereinfacht aus drei Komponenten:

Event Producer → Event Broker oder Kanal → Event Consumer

Der Producer erzeugt ein Ereignis.

Der Broker oder Nachrichtenkanal verteilt es.

Der Consumer reagiert darauf.

Ein Beispiel aus dem E-Commerce:

Shopware → Bestellung erstellt → Event Broker → ERP, CRM und Logistik

Shopware muss dabei nicht zwingend wissen, welche Systeme das Ereignis später verwenden. Es veröffentlicht lediglich die Information, dass etwas passiert ist.

Was ist ein Event?

Ein Event beschreibt eine bereits eingetretene Änderung.

Typische Events sind:

  • order.created
  • payment.completed
  • product.updated
  • customer.registered
  • shipment.created

Ein Event sollte fachlich möglichst eindeutig formuliert werden.

Statt:

„Bestellung bearbeiten“

ist:

„Bestellung wurde erstellt“

besser geeignet.

Das Event beschreibt nämlich einen Zustand und nicht die Anweisung, was anschließend passieren soll.

Producer, Broker und Consumer

Event Producer

Der Producer erzeugt das Ereignis.

Beispiele:

  • Shopware
  • ERP
  • CRM
  • Zahlungsdienstleister

Event Broker

Der Event Broker nimmt Ereignisse entgegen und verteilt sie an interessierte Systeme.

Bekannte Technologien dafür sind beispielsweise:

  • Apache Kafka
  • RabbitMQ
  • Amazon EventBridge
  • Azure Event Grid

Bei kleineren Integrationen kann auch eine Middleware diese Rolle übernehmen.

Event Consumer

Ein Consumer reagiert auf das Ereignis.

Bei einer neuen Bestellung könnten beispielsweise mehrere Systeme reagieren:

ERP: Auftrag erstellen

CRM: Kundenhistorie aktualisieren

Logistik: Versandprozess vorbereiten

Data Warehouse: Umsatz erfassen

Beispiel mit Shopware 6

Ein Kunde bestellt im Shopware-Shop.

Shopware erzeugt das Ereignis:

Bestellung wurde abgeschlossen

Anschließend kann folgende Verarbeitung stattfinden:

  1. Shopware sendet einen Webhook.
  2. Middleware empfängt das Ereignis.
  3. Ereignis wird in einer Queue gespeichert.
  4. ERP erstellt den Auftrag.
  5. CRM aktualisiert den Kunden.
  6. Logistik erhält die Versandinformationen.

Shopware unterstützt bei Apps ereignisbasierte Integrationen über Webhooks. Apps können sich beispielsweise für Ereignisse wie checkout.order.placed oder Änderungen an Produkten registrieren.

Event-driven Architecture und Webhooks

Webhooks sind eine einfache Form ereignisbasierter Kommunikation.

Ein Ereignis tritt ein:

Bestellung erstellt

Danach wird automatisch eine HTTP-Anfrage an ein externes System gesendet.

Eine vollständige Event-driven Architecture geht jedoch häufig weiter. Zwischen Producer und Consumer befindet sich oftmals ein Broker oder eine Queue.

Dadurch muss das empfangende System nicht exakt in diesem Moment verfügbar sein.

Event-driven Architecture und klassische API

Eine klassische API-Integration funktioniert häufig nach dem Request-Response-Prinzip.

ERP → API → Shopware

Das ERP fragt aktiv:

„Gibt es neue Bestellungen?“

Bei einer Event-driven Architecture informiert Shopware dagegen:

„Eine neue Bestellung wurde erstellt.“

Klassische API-Abfrage Event-driven Architecture
System fragt aktiv nach System reagiert auf Ereignisse
häufig Polling ereignisgesteuert
stärkere direkte Kopplung stärkere Entkopplung möglich
einfach für kleine Prozesse gut für komplexe Integrationen
unmittelbare Antwort häufig asynchron

Beide Ansätze werden in modernen Systemen häufig kombiniert.

Vorteile einer Event-driven Architecture

Geringere Kopplung

Producer müssen nicht alle empfangenden Systeme kennen.

Gute Skalierbarkeit

Neue Consumer können ergänzt werden, ohne den Producer grundsätzlich verändern zu müssen.

Schnelle Reaktion

Ereignisse können nahezu in Echtzeit verarbeitet werden.

Höhere Ausfallsicherheit

Mit Queues und persistenten Nachrichten können Ereignisse später weiterverarbeitet werden, wenn ein Zielsystem vorübergehend nicht verfügbar ist.

Flexible Erweiterbarkeit

Aus einem Ereignis können mehrere unabhängige Prozesse entstehen.

Grenzen und Herausforderungen

Event-driven Architecture erhöht gleichzeitig die technische Komplexität.

Typische Herausforderungen sind:

  • doppelte Events
  • falsche Reihenfolge
  • verzögerte Verarbeitung
  • Fehler in einzelnen Consumern
  • schwerere Fehlersuche
  • unterschiedliche Event-Versionen
  • eventual consistency

Besonders wichtig sind deshalb Logging, Monitoring, Idempotenz und Retry-Mechanismen.

Eventual Consistency

Bei asynchronen Systemen sind nicht immer alle Systeme exakt zur gleichen Zeit auf demselben Datenstand.

Eine Bestellung kann beispielsweise bereits in Shopware vorhanden sein, während das CRM sie erst zwei Sekunden später verarbeitet.

Dieses Prinzip wird als Eventual Consistency bezeichnet.

Die Systeme werden also nicht zwingend sofort, sondern innerhalb kurzer Zeit konsistent.

Für Prozesse, die zwingend eine sofortige und vollständig konsistente Antwort benötigen, ist eine rein ereignisgesteuerte Architektur deshalb nicht immer geeignet.

Event-driven Architecture und Idempotenz

Events können mehrfach zugestellt werden.

Ein Consumer muss deshalb verhindern, dass dasselbe Ereignis mehrfach dieselbe Geschäftsaktion ausführt.

Beispiel:

Order Event wird zweimal geliefert

Das ERP darf trotzdem nur einen Auftrag erstellen.

Dafür können Event-ID, externe Referenz oder Idempotency Key gespeichert werden.

Wann ist EDA sinnvoll?

Eine Event-driven Architecture eignet sich besonders, wenn:

  • mehrere Systeme auf dieselben Ereignisse reagieren
  • Prozesse nahezu in Echtzeit ablaufen sollen
  • Systeme unabhängig voneinander skalieren sollen
  • viele Integrationen vorhanden sind
  • Ausfälle einzelner Systeme abgefangen werden müssen

Für eine einfache Verbindung zwischen zwei Systemen kann eine klassische API dagegen häufig einfacher sein.

FAQ zu Event-driven Architecture

Ist ein Webhook bereits eine Event-driven Architecture?

Ein Webhook ist ein wichtiges Werkzeug dafür, bildet aber allein noch nicht zwingend eine vollständige EDA.

Braucht man immer Kafka oder RabbitMQ?

Nein. Kleine Systeme können mit Webhooks oder einfachen Queues beginnen. Ein Event Broker wird vor allem bei steigender Komplexität interessant.

Sind Events und Webhooks dasselbe?

Nein. Das Event beschreibt das Ereignis. Ein Webhook ist eine mögliche technische Methode, dieses Ereignis an ein anderes System zu übertragen.

Was passiert, wenn ein Consumer ausfällt?

Bei einer robusten Architektur wird das Event gespeichert und später erneut verarbeitet.

Ist EDA für Shopware geeignet?

Ja. Besonders bei ERP-, CRM-, Logistik- und App-Integrationen können Webhooks und ereignisbasierte Prozesse sinnvoll eingesetzt werden.

Weiterführende Wiki-Einträge

Passende Themen sind:

Passende CUTVERT-Leistungen

Passende Leistungen von CUTVERT sind insbesondere: