Was ist eine ereignisgesteuerte Architektur?

Unternehmen benötigen zunehmend Systeme, die umgehend auf eine Vielzahl von Triggern reagieren können, von Kundeninteraktionen bis hin zu Sensormessungen. Herkömmliche Anfrage-Antwort-Modelle sind zwar nützlich, bieten aber nicht immer die erforderliche Agilität oder Skalierbarkeit für diese dynamischen Umgebungen. Eine ereignisgesteuerte Architektur (EDA) kann ein leistungsstarkes Paradigma für die Entwicklung responsiver, robuster und skalierbarer Anwendungen sein. Es ist ein Softwarearchitekturmuster, das die Erstellung, Erkennung, Nutzung und Reaktion auf Ereignisse verbessern kann.

Ereignisgesteuerte Architekturen verstehen

Definition ereignisgesteuerter Architektur

Eine ereignisgesteuerte Architektur ist ein Modell für das Design von Softwareanwendungen, bei dem Dienste lose gekoppelt sind und über die Erstellung und den Verbrauch von Ereignissen kommunizieren. Ein „Ereignis“ bezeichnet ein wichtiges Vorkommnis oder eine Änderung des Systemzustands. Das kann alles sein, von einer Kundenbestellung über einen Sensor, der eine Temperaturänderung erfasst, bis hin zu einer neuen Datei, die in den Speicher hochgeladen wird, oder einem aktualisierten Datenbankeintrag.

Im Gegensatz zu herkömmlichen anfragegesteuerten Modellen, bei denen ein Dienst explizit einen anderen aufruft und auf eine Antwort wartet, ermöglicht eine EDA den Diensten einen asynchronen Betrieb. Ein Dienst, der ein Ereignis erzeugt (der „Producer“ oder „Publisher“), gibt einfach bekannt, dass das Ereignis stattgefunden hat. Andere Dienste („Verbraucher“ oder „Abonnenten“), die an dieser Art von Ereignis interessiert sind, können dann unabhängig und in ihrem eigenen Tempo darauf reagieren.

Die wichtigsten Komponenten einer EDA sind in der Regel:

  • Ereignisproduzenten: Anwendungen oder Dienste, die Ereignisse generieren
  • Ereignisempfänger (oder Abonnenten): Anwendungen oder Dienste, die Ereignisse empfangen und verarbeiten
  • Ereigniskanäle (oder Ereignisbusse, Message Broker, Ereignisrouter): Die Vermittlungsinfrastruktur, die Ereignisse von Erstellern aufnimmt und filtert und sie an interessierte Nutzer liefert; diese Komponente ist entscheidend für die Entkopplung von Erstellern und Nutzern

Wie funktioniert eine ereignisgesteuerte Architektur?

Der Workflow in einer ereignisgesteuerten Architektur folgt in der Regel einem konsistenten Muster.

  • Ereignis und Produktion: In einem Dienst oder System findet eine wichtige Aktion statt. Beispielsweise kann ein Nutzer auf einer E-Commerce-Website auf die Schaltfläche „Bestellung absenden“ klicken. Der Dienst, der für diese erste Aktion zuständig ist (der Ereignis-Producer), generiert ein Ereignisobjekt, das relevante Informationen über das Geschehene enthält, wie z. B. Bestell-ID, Artikel und Kundendaten.
  • Übertragung des Ereignisses: Der Producer sendet dieses Ereignis an einen Ereigniskanal. Dieser Kanal ist ein dedizierter Teil der Infrastruktur, der wie eine Nachrichtenwarteschlange oder ein Publish/Subscribe-System (Pub/Sub) für die Verarbeitung des Ereignisflusses konzipiert wurde.
  • Ereignisfilterung und ‑routing (über den Ereigniskanal): Der Ereigniskanal empfängt das Ereignis. Anschließend kann er Filterregeln anwenden oder das Ereignis basierend auf dessen Typ, Inhalt oder Thema an verschiedene nachgeschaltete Nutzer weiterleiten, die Interesse an solchen Ereignissen bekundet haben. Ein „order_placed“-Ereignis kann beispielsweise an einen Inventardienst, einen Benachrichtigungsdienst und einen Versanddienst weitergeleitet werden.
  • Ereignisverbrauch und -verarbeitung: Interessierte Dienste (Verbraucher) erhalten das Ereignis vom Kanal. Die einzelnen Verbraucher verarbeitet das Ereignis asynchron und unabhängig. Fortsetzung des E-Commerce-Beispiels:
  • Der Inventardienst kann die Lagerbestände um die bestellten Artikel verringern.
  • Der Benachrichtigungsdienst könnte eine Bestätigungs-E‑Mail bezüglich der Bestellung an den Kunden senden.
  • Der Versanddienstleister kann den Logistikprozess einleiten.

Vorteile einer ereignisgesteuerten Architektur

Die Einführung einer ereignisgesteuerten Architektur kann zahlreiche Vorteile bieten, insbesondere für komplexe, verteilte Systeme.

Höhere Skalierbarkeit

Dienste in einer EDA sind lose gekoppelt und können unabhängig voneinander skaliert werden. Wenn ein Dienst zur Auftragsverarbeitung stark ausgelastet ist, können Sie nur diesen Dienst skalieren, ohne z. B. den Dienst für Nutzerbenachrichtigungen zu beeinträchtigen.

Höhere Ausfallsicherheit und Fehlertoleranz

Eine ereignisgesteuerte Architektur kann die Robustheit von Anwendungen verbessern, indem sie Dienstausfälle isoliert. Durch die Entkopplung wird sichergestellt, dass eine Fehlfunktion in einem Verbraucherdienst in der Regel nicht weitergegeben wird und keinen vollständigen Systemausfall verursacht.

Mehr Agilität und Flexibilität

Entwickler können Dienste hinzufügen, ändern oder entfernen, ohne dass sich dies auf andere Teile des Systems auswirkt. Neue Dienste können vorhandene Ereignisstreams abonnieren, um neue Funktionen hinzuzufügen, ohne dass Änderungen an den ursprünglichen Ereigniserstellern erforderlich werden.

Reaktionsfähigkeit in Echtzeit

Eine ereignisgesteuerte Architektur ermöglicht es Systemen, nahezu sofort auf Ereignisse zu reagieren. Diese Funktion ist besonders wertvoll für Anwendungen, bei denen schnelles Handeln entscheidend ist, wie Betrugserkennung, Echtzeitanalysen und Betriebsüberwachung.

Vereinfachte Integration

Eine EDA kann als flexibles Rückgrat für die Einbindung unterschiedlicher Systeme dienen, darunter Legacy-Anwendungen, moderne Mikrodienste und Dienste von Drittanbietern. Die einzelnen Systeme können Ereignisse veröffentlichen und aufnehmen, ohne direkte Punkt-zu-Punkt-Einbindungen mit jedem anderen System erforderlich zu machen.

Erweiterbarkeit

Das Hinzufügen neuer Funktionen oder das Reagieren auf bestehende Ereignisse auf neue Weise erfordert oft nur die Bereitstellung eines neuen Consumer-Dienstes, der den relevanten Ereignisstream abonniert.

Meistern Sie Ihre geschäftlichen Herausforderungen mit Google Cloud

Neukunden erhalten ein Guthaben im Wert von 300 $ für Google Cloud.

Anwendungsfälle für ereignisgesteuerte Architekturen

Die Eigenschaften der EDA machen sie für eine Vielzahl von Anwendungen in verschiedenen Branchen geeignet.

Die EDA ist ein gängiges Muster, um die Kommunikation und den Datenfluss zwischen Mikrodiensten zu ermöglichen. Anstelle von direkten, synchronen API-Aufrufen, die eine enge Kopplung verursachen können, können Mikrodienste Ereignisse veröffentlichen, wenn sich ihr Zustand ändert. Andere Mikrodienste können diese Ereignisse abonnieren und entsprechend reagieren.

Anwendungen, die mit Datenströmen hoher Geschwindigkeit arbeiten, wie IoT-Sensordaten, Anwendungsprotokolle, Social-Media-Feeds oder Finanzmarktdaten, können eine EDA nutzen, um diese Informationen in Echtzeit zu verarbeiten, zu analysieren und auf sie zu reagieren. So lassen sich Dashboards, Warnsysteme oder automatisierte Entscheidungsprozesse unterstützen.

Von der Verwaltung der Lagerbestände in Reaktion auf Verkäufe über die Bearbeitung von Bestellungen in verschiedenen Phasen (Zahlung, Versand, Erfüllung) bis hin zum Senden von Kundenbenachrichtigungen kann eine EDA dazu beitragen, die komplexen, asynchronen Workflows zu verwalten, die im Onlinehandel üblich sind. Wenn ein Dienst zur Zahlungsabwicklung langsam ist, kann das Ereignis „Bestellung“ trotzdem von anderen Diensten wie der Bestandsreservierung erfasst und verarbeitet werden.

Viele Geschäftsprozesse sind inhärent ereignisgesteuert. Beispielsweise kann die Einreichung eines Versicherungsanspruchs (Ereignis) eine Reihe nachgelagerter Aktivitäten auslösen: Betrugsprüfung, Bewertung, Kundenkommunikation und schließlich Zahlungsabwicklung. Eine EDA kann helfen, solche Workflows effektiv zu modellieren und zu automatisieren.

Wenn Daten in mehreren Systemen oder Datenspeichern konsistent gehalten werden müssen, kann eine EDA verwendet werden. Eine Änderung in einer Datenbank (ein Ereignis) kann veröffentlicht werden, sodass andere Datenbanken oder Caches diese Änderungsereignisse abonnieren und sich selbst aktualisieren können.

Serverlose Funktionen (wie Cloud Run-Funktionen) sind oft ereignisgesteuert. Sie werden als Reaktion auf verschiedene Ereignistrigger ausgeführt, z. B. wenn ein Objekt in einen Cloud-Speicher hochgeladen wird, eine Nachricht in einer Warteschlange eintrifft oder eine HTTP-Anfrage gestellt wird. EDAs eignen sich hervorragend für die Entwicklung von Anwendungen mit serverlosen Komponenten.

Betrugserkennung in Echtzeit, Börsenüberwachung und Handelsverarbeitung sind wichtige Finanzanwendungen, die von der niedrigen Latenz und dem hohen Durchsatz einer EDA profitieren.

Wie nutzt Google Cloud ereignisgesteuerte Architekturen?

Google Cloud bietet eine robuste Suite an Diensten, mit denen Kunden leistungsstarke ereignisgesteuerte Anwendungen entwickeln und bereitstellen können. Die Plattform selbst nutzt ereignisgesteuerte Prinzipien, um skalierbare und resiliente Dienste bereitzustellen. Für Kunden, die ereignisgesteuerte Lösungen entwickeln, bietet Google Cloud mehrere wichtige verwaltete Dienste:

  • Pub/Sub: Dieser global verteilte, skalierbare und zuverlässige Echtzeit-Messaging-Dienst fungiert als Ereignisbus oder Message Broker in einer EDA. Mit Pub/Sub können Dienste Ereignisse veröffentlichen und andere Dienste diese Ereignisse asynchron abonnieren. Es entkoppelt Publisher von Abonnenten und unterstützt Funktionen wie die „mindestens einmalige“ Zustellung, Push- und Pull-Abonnements und Nachrichtenfilterung.
  • Eventarc: Eventarc bietet eine standardisierte Art, den Ereignisfluss zu verwalten, indem Ereignisquellen (z. B. Änderungen an Cloud Storage-Buckets, abgeschlossene BigQuery-Jobs oder benutzerdefinierte Anwendungsereignisse) mit Ereignisverbrauchern verbunden werden. So können Entwickler problemlos Cloud Run-Dienste, Cloud Run-Funktionen oder Workflows als Reaktion auf Ereignisse auslösen.
  • Cloud Run: Mit dieser vollständig verwalteten Computing-Plattform können Sie zustandslose Container ausführen und sie über HTTP-Anfragen oder Ereignisse von Pub/Sub (oft über Eventarc) aufrufen lassen. Mit Cloud Run Functions können Sie kleine, zweckgebundene Codeabschnitte (Funktionen) bereitstellen, die auf eine Vielzahl von Ereignissen reagieren, ohne dass Sie Server oder Laufzeitumgebungen verwalten müssen. In einer ereignisgesteuerten Architektur können Cloud Run-Dienste als Ereignisverbraucher sehr effektiv sein und durch diese Ereignisse ausgelöste Arbeitslasten verarbeiten.
  • Workflows: Eine vollständig verwaltete Orchestrierungsplattform, mit der Sie serverlose Workflows definieren, bereitstellen und verwalten können. Workflows können durch Ereignisse (über Eventarc oder Pub/Sub) ausgelöst werden und Aufrufe an verschiedene Google Cloud-Dienste und HTTP-basierte APIs koordinieren. Dadurch eignen sie sich für die Orchestrierung komplexer ereignisgesteuerter Geschäftsprozesse.
  • Dataflow: Für die komplexe Ereignisverarbeitung (Complex Event Processing, CEP) und Stream-Analysen bietet Dataflow eine einheitliche Plattform für die Verarbeitung von Stream- und Batchdaten. Es können Ereignisstreams aus Pub/Sub aufgenommen, komplexe Transformationen, Aggregationen und Analysen durchgeführt und dann Ergebnisse an andere Systeme ausgegeben oder weitere Aktionen ausgelöst werden.

Gleich loslegen

Profitieren Sie von einem Guthaben über 300 $, um Google Cloud und mehr als 20 „Immer kostenlos“-Produkte kennenzulernen.

Google Cloud