Als wesentlicher Bestandteil der cloudnativen Architektur handelt es sich bei Microservices um Anwendungen, die aus lose gekoppelten, unabhängig bereitstellbaren Services erstellt werden. Microservices kommunizieren in der Regel über Lightweight-Protokolle wie HTTP, Message Queues oder Ereignisstreams miteinander. Die ereignisgesteuerte Architektur ist oft die beste Methode zur Implementierung von Microservices, da sie eine größere Modularität, Fehlertoleranz und Skalierbarkeit fördert.
Die ereignisgesteuerte Architektur (Event-Driven Architecture, EDA) ist ein Softwaredesignmuster, das es Systemen ermöglicht, Ereignisse in Echtzeit zu erkennen, zu verarbeiten, zu kommunizieren und darauf zu reagieren. EDA kommuniziert Ereignisse sofort bei deren Auftreten, sodass alle Personen, Services oder ereignisgesteuerten Anwendungen, die über ein Ereignis informiert sein müssen, in Echtzeit reagieren können.
Asynchrones Messaging und lose Kopplung sind zwei wichtige Aspekte der ereignisgesteuerten Architektur. Asynchrone Kommunikation ersetzt die herkömmliche „Anfrage- und Antwort“-Architektur, in der Services auf eine Antwort warten müssen, bevor sie mit der Ausführung einer Aufgabe fortfahren können. Dies ermöglicht eine einfachere Integration und macht Systeme skalierbarer, da sie höhere Volumen an Echtzeitdaten mit geringer Latenz verarbeiten können. Außerdem können verwandte Systeme entkoppelt oder lose gekoppelt werden. Dies bedeutet, dass Anwendungen und Dienste miteinander kommunizieren können, indem Ereignisse veröffentlicht und konsumiert werden, ohne dass man viel mehr über das andere System weiß. Das Ergebnis sind ereignisgesteuerte Systeme, die schnell skaliert werden können und äußerst ausfallsicher sind, da das System auch dann weiterarbeiten kann, wenn eine Komponente nicht verfügbar ist. EDA eignet sich auch gut für die Echtzeitverarbeitung und die Handhabung großer Datenmengen, da Komponenten auf Ereignisse reagieren und Daten sofort nach deren Eintreffen verarbeiten können, ohne auf einen vollständigen Datensatz warten zu müssen.
Was ist ein Ereignis?
Ein Ereignis ist jede Statusänderung eines Objekts innerhalb eines Geschäftssystems: Ein Objekt, das einem Bucket hinzugefügt wurde, ein neuer Datensatz, ein in einem Warenkorb platzierter Artikel oder ein zurückgesetztes Kennwort. Es ist etwas, das in der Vergangenheit passiert ist, normalerweise im JSON- oder YAML-Format.
Warum ist eine ereignisgesteuerte Architektur notwendig?
Alle Geschäftsprozesse werden durch Ereignisse gesteuert, und die Fähigkeit, schnell auf Ereignisse zu reagieren, ist für Produktivität, Effizienz und Wettbewerbsfähigkeit von entscheidender Bedeutung. Je schneller Anwendungen, Services und Mitarbeiter Informationen zu Ereignissen erhalten, desto effektiver kann ein Unternehmen arbeiten.
In dieser Umgebung ist die ereignisgesteuerte Architektur wichtig, da sie Ereignisse direkt bei deren Auftreten kommuniziert – im Gegensatz zu Architekturansätzen wie APIs, die die regelmäßige Aktualisierung von Systemen abwarten.
Was sind die Komponenten der ereignisgesteuerten Architektur?
Die ereignisgesteuerte Architektur umfasst Software- und Hardwarekomponenten, die bereitgestellt und verbunden werden, um Echtzeit-Kommunikation und Meldungen in Bezug auf Ereignisse zu ermöglichen. Diese Komponenten beinhalten Folgendes:
- Ereigniserzeuger: Diese Ereignisquellen – auch als Ereignisproduzenten bezeichnet – generieren ein Ereignis und veröffentlichen es dann in einem Ereigniskanal oder Ereignisbus.
- Ereignisbus: Dazu gehören Ereignisbroker, Nachrichtenwarteschlangen und Ereigniskanäle. Es handelt sich um den Pfad, über den Ereignisse von Ereigniserzeugern an Ereigniskonsumenten kommuniziert werden. Ereigniskanäle ermöglichen die asynchrone und entkoppelte Natur von EDA, wodurch die Flexibilität und Skalierbarkeit von Systemen sowie die Organisation zugehöriger Messaging-Gruppen verbessert werden.
Ereignisabonnenten: Ereignisabonnenten werden auch als Ereigniskonsumenten oder Ereignis-Listener bezeichnet. Sie empfangen und verarbeiten Ereignisse und reagieren auf sie. Zu Antworten gehören Dinge wie das Aktualisieren einer Datenbank, das Ausführen einer Aufgabe, das Auslösen eines Prozesses oder das Generieren neuer Ereignisse.
Wie funktioniert die ereignisgesteuerte Architektur?
Folgende Schritte dienen der Kommunikation von Ereignissen innerhalb einer ereignisgesteuerten Architektur:
- Ein Ereigniserzeuger erzeugt ein Ereignis und veröffentlicht diese Daten in einem oder mehreren Kanälen auf dem Ereignisbus.
- Der Ereignisabonnent „hört“ den Kanal oder die Kanäle nach Ereignissen ab, die für ihn wichtig sind, und reagiert, wenn ein relevantes Ereignis veröffentlicht wird. Er kann potenziell andere Workflows, Aktionen oder Ereignisse auslösen.
Die ereignisgesteuerte Architektur wird in der Regel in einem Publish-/Subscribe- (Pub-/Sub-) Modell oder einem Event-Streaming-Modell bereitgestellt.
- Pub/Sub: In diesem Modell, das auch als Event-Messaging-Modell bezeichnet wird, abonnieren Ereigniskonsumenten eine Klasse von Nachrichten, die von Ereigniserzeugern veröffentlicht werden. Wenn Erzeuger ein Ereignis veröffentlichen, werden die Informationen an alle Abonnenten weitergegeben, die es nutzen möchten. Dies geschieht in der Regel über einen Nachrichtenbroker, der Ereignismeldungen empfängt, bei Bedarf übersetzt, die Reihenfolge der Nachrichten verwaltet, sie für Abonnenten verfügbar macht und Nachrichten löscht, sobald sie konsumiert wurden.
- Ereignis-Streaming: In diesem Modell abonnieren Ereigniskonsumenten Ereignis-Streams, die von Produzenten an Broker gesendet und in Protokollen aufgezeichnet werden. Anstatt jedes Ereignis zu empfangen und zu konsumieren, wenn es veröffentlicht wird, können Konsumenten jederzeit dem Stream beitreten und nur die Ereignisse nutzen, die sie interessieren. Ereignisse können für einen bestimmten Zeitraum gespeichert werden, sodass sie von den Konsumenten jederzeit empfangen werden können. Einige Ereignis-Streaming-Prozesse verwenden eine Daten-Streaming-Plattform wie Apache Kafka zur Verwaltung von Einspeisung, Verarbeitung und Transformation des Ereignis-Streams. Das Ereignis-Streaming kann auch für die Verarbeitung komplexer Ereignisse verwendet werden, bei denen die Konsumenten eine große Anzahl von Ereignissen gleichzeitig verarbeiten.
Welche Vorteile bietet die ereignisgesteuerte Architektur?
Die ereignisgesteuerte Architektur bietet viele Vorteile für Unternehmen in jeder Branche.
- Erhöhte Systemflexibilität: Die lose Kopplung einer ereignisgesteuerten Architektur ermöglicht es Unternehmen, Komponenten einfach zu ändern, hinzuzufügen oder zu entfernen, ohne das gesamte System zu beeinträchtigen, wodurch es an sich ändernde Anforderungen angepasst werden kann. Für Entwickler reduziert EDA die Komplexität, da schwerfällige Workflows in eine Reihe einfacher, entkoppelter Dienste aufgeteilt werden können, die unabhängig verwaltet und asynchron über Ereignismeldungen kommuniziert werden können.
- Verbesserte Skalierbarkeit: EDA unterstützt eine einfache horizontale Skalierung, sodass Unternehmen erhöhte Workloads oder Datenverkehr bewältigen können, indem sie je nach Bedarf weitere Komponenten oder Services hinzufügen.
- Erhöhte Systemstabilität: Die asynchrone Kommunikation und die entkoppelten Komponenten von EDA tragen zu einer verbesserten Fehlertoleranz bei, da der Ausfall einer Komponente nicht zwangsläufig zu einem systemweiten Ausfall führt.
- Echtzeit-Verarbeitungsfunktionen: EDA ermöglicht die Echtzeitverarbeitung großer Datenmengen und komplexer Ereignismuster und ist damit für Unternehmen geeignet, die sofortige Einblicke oder Reaktionen auf sich schnell ändernde reale Bedingungen benötigen.
- Optimierte Ressourcennutzung: Da EDA nur auf Ereignisse reagiert, wenn diese auftreten, kann die Ressourcenauslastung optimiert und der Bedarf an kontinuierlich laufenden Prozessen reduziert werden, was potenziell zu Kosteneinsparungen und einer höheren Effizienz führt.
- Höhere Geschwindigkeit: EDA kann Ihre Systeme beschleunigen, da verschiedene Komponenten nicht aufeinander warten müssen.
Was sind Anwendungsfälle für ereignisgesteuerte Architektur?
Zu den häufigsten Anwendungsfällen für ereignisgesteuerte Architektur gehören:
- Echtzeit-Überwachung: Statt auf die Ergebnisse von regelmäßigen Check-ins und Aktualisierungen zu warten, ermöglicht EDA Anwendungen, Services und Teams, sofortige Warnmeldungen zu Anomalien, Änderungen und Aktualisierungen von Systemen zu erhalten.
- Datenreplikation: Mit EDA ist es ganz einfach, ein einzelnes Ereignis zwischen mehreren Diensten freizugeben, wodurch die Ereignisdaten in verschiedene Datenbanken kopiert werden können. EDA kann auch Systeme koordinieren, die in verschiedenen Regionen und Konten betrieben werden.
- Redundanz: Wenn ein Dienst ausfällt, können Ereignisse innerhalb eines Routers bestehen bleiben, bis der Dienst wieder hochgefahren ist und Ereignisse erneut verarbeiten kann.
- Parallelverarbeitung: Bei EDA kann ein einzelnes Ereignis mehrere Prozesse gleichzeitig auslösen.
- Integration und Interoperabilität: Dank der ereignisgesteuerten Architektur können Systeme, die auf verschiedenen Stacks ausgeführt werden, Informationen austauschen, ohne dass sie eng miteinander verbunden sein müssen.
Was sind Beispiele für eine ereignisgesteuerte Architektur?
Die ereignisgesteuerte Architektur wird in einer Vielzahl von Branchen und Systemen eingesetzt.
- E-Commerce: EDA ermöglicht es E-Commerce-Unternehmen, sofort zu reagieren, wenn ein Artikel in einen Warenkorb gelegt, ein Einkauf getätigt, eine Zahlung bearbeitet oder ein Paket versendet wird.
- IoT: Die ereignisgesteuerte Architektur ist entscheidend für die Erfassung von Daten in IoT-Systemen (Internet of Things), da sie Aktionen auslöst, wenn IoT-Geräte bestimmte Bedingungen oder Metriken erkennen.
- Aktienmarkt: Bei sich ändernden Marktbedingungen kann EDA automatisierte Handelsstrategien auslösen.
- Echtzeitanalysen: EDA kann sofort eine Analyse von Echtzeitereignissen auslösen, um Betrug zu erkennen, den Datenverkehr zu überwachen und bessere Entscheidungen basierend auf Echtzeitbedingungen zu treffen.
- Online-Gaming: Mit EDA können Online-Spiele Ereignisse wie Spieleraktionen, bewegliche Charaktere oder Aufgaben erkennen und darauf reagieren.
- Smart Homes: Sensoren und intelligente Geräte in Ihrem Zuhause können auf Änderungen von Temperatur, Bewegung, Beleuchtung und andere Ereignisse reagieren.
- Workflow-Automatisierung: Mit EDA können Unternehmen viele Schritte in einem komplexen Workflow automatisieren, wobei ein Ereignis neue Schritte in einem Prozess auslöst.
Häufig gestellte Fragen
Innerhalb von ereignisgesteuerten Systemen sind Entkopplung und lose Kopplung miteinander verbundene Konzepte. Entkopplung ist der Prozess, bei dem Abhängigkeiten zwischen verschiedenen Komponenten innerhalb des Systems beseitigt werden, sodass keine der Komponenten von der anderen abhängig ist. Dadurch können Komponenten unabhängiger sein und ein flexibleres und widerstandsfähigeres System kann entstehen. Lose Kopplung ist eine Form der Entkopplung, die die Abhängigkeit minimiert, auch wenn Komponenten nicht vollständig getrennt werden. Komponenten können weiterhin miteinander interagieren, aber auf eine Weise, die keine dauerhafte Abhängigkeit erzeugt.
Serverloses Computing ist ein Paradigma, bei dem Entwickler nach Bedarf auf Back-End-Services zugreifen können, sodass sie sich auf das Programmieren konzentrieren können, ohne sich um die Verwaltung der zugrunde liegenden Server und Infrastruktur kümmern zu müssen. Es basiert auf einer ereignisgesteuerten Architektur, in der Funktionen durch Ereignisse wie HTTP-Anfragen, Datei-Uploads und Datenbankaktualisierungen ausgelöst werden, um die Anwendungsarchitektur zu vereinfachen und die Skalierbarkeit zu verbessern.
Warum entscheiden sich Kunden für Akamai?
Akamai ist das Unternehmen für Cybersicherheit und Cloud Computing, das das digitale Leben unterstützt und schützt. Unsere marktführenden Sicherheitslösungen, überlegene Threat Intelligence und unser globales Betriebsteam bieten ein gestaffeltes Sicherheitskonzept, um die Daten und Anwendungen von Unternehmen überall zu schützen. Die Cloud-Computing-Lösungen von Akamai bieten als Full-Stack-Gesamtpaket Performance und erschwingliche Preise auf der weltweit am stärksten verteilten Plattform. Globale Unternehmen vertrauen auf Akamai für die branchenführende Zuverlässigkeit, Skalierbarkeit und Expertise, die sie benötigen, um ihr Geschäft selbstbewusst auszubauen.