Event-Driven Architecture (EDA, ereignisgesteuerte Architektur) ist ein Software-Architekturmuster, bei dem Systeme über Event Bus-Strukturen und Event Stream-Mechanismen lose gekoppelt kommunizieren: Ein Ereignis (zum Beispiel „Bestellung aufgegeben") wird veröffentlicht, und alle interessierten Dienste reagieren darauf – ohne den Absender zu kennen.

Grundprinzip

Im Gegensatz zur klassischen Request-Response-Kommunikation (Anfrage-Antwort) ist ein Ereignis eine Tatsache aus der Vergangenheit: „etwas ist passiert". Der Sender (Producer) publiziert es an einen Message Broker wie Apache Kafka, RabbitMQ oder AWS EventBridge. Empfänger (Consumer) abonnieren Ereignisse, die sie interessieren. Dadurch entstehen lose Kopplung, zeitliche Entkopplung (Producer und Consumer müssen nicht gleichzeitig laufen) und hohe Skalierbarkeit: Jeder Dienst skaliert unabhängig, neue Consumer können nachträglich hinzukommen, ohne den Sender zu ändern.

Ereignistypen

  • Event Notification: reiner Hinweis, dass etwas passiert ist (z. B. „Zahlung eingegangen") – der Empfänger fragt bei Bedarf weitere Daten ab.
  • Event-Carried State Transfer: das Ereignis transportiert den gesamten relevanten Zustand, Empfänger müssen nicht nachfragen.
  • Event Sourcing: Ereignisse selbst sind die Quelle der Wahrheit; der aktuelle Zustand wird durch Event Sourcing aus dem Protokoll rekonstruiert.

Vorteile und Herausforderungen

Vorteile: Entkopplung, Ausfallsicherheit (ein Ausfall eines Consumers blockiert den Producer nicht), Echtzeit-Verarbeitung und einfache Erweiterbarkeit. Herausforderungen: Ereignisse sind schwer zu debuggen (kein synchroner Aufrufstapel), erfordern Idempotenz (Nachrichten können mehrfach geliefert werden) und eine durchdachte Ereignis-Versionierung. Ohne Gegenmaßnahmen drohen unkontrollierte Ereignisfluten und schwer nachvollziehbare Datenflüsse – Change Data Capture und Transactional Outbox sind bewährte Bausteine, um zuverlässig Ereignisse aus Datenbankänderungen zu erzeugen.

Verwandte Grundlagen: Message Queue, Stream Processing, Dead Letter Queue.