Eventbasierte Architektur: Skalierbarkeit für Microservices

25.08.2023

Im letzten Teil unserer Blogserie über Software-Architekturen haben wir den Pipeline-Stil genauer beschrieben. Heute schauen wir uns die eventbasierte Architektur genauer an. Eine prägnante Zusammenfassung dieser Architektur findest du wie immer am Ende des Blogposts.

Was der eventbasierte Architekturstil kann

In der Welt der Softwarearchitektur gibt es verschiedene Stile, die auf spezifische Anforderungen und Ziele abzielen. Ein solcher Architekturstil ist die asynchrone Eventverarbeitung, die sich durch ihre Flexibilität und Skalierbarkeit auszeichnet. In diesem Blogpost werden wir uns genauer mit dieser Architektur befassen, seine Unterschiede zwischen Mediator und Broker erkunden und Vor- und Nachteile diskutieren.

Bei der asynchronen Eventverarbeitung stehen Events im Mittelpunkt. Generell kann zwischen zwei Ansätzen unterschieden werden: dem Mediator und dem Broker. Ein Broker sendet Nachrichten mit bestimmten Eigenschaften an Empfänger, die diese Eigenschaften abonniert haben. Hier liegt die Verantwortung für das Abonnieren bei den Services selbst. Der Mediator hingegen besitzt Informationen über die Geschäftsanwendung und sendet Events gezielt an die Services zur Verarbeitung. Der Mediator beinhaltet somit Geschäftslogik.

Wir empfehlen die Verwendung des Brokers gegenüber dem Mediator, da die Middleware idealerweise keine Geschäftslogik enthalten sollte. Dadurch bleibt sie entkoppelt und flexibel, während die Services die Verantwortung für das Abonnieren und die Verarbeitung der Events tragen.

Der Architekturstil der asynchronen Eventverarbeitung eignet sich besonders gut für Microservice-Architekturen. Zudem können Fachevents für KPI-Monitoring und Userfeedback für den Fortschritt effektiv verarbeitet werden. Anwendungsfälle, bei denen eine synchrone Verarbeitung nicht zwingend erforderlich ist, profitieren ebenfalls von diesem Stil.

Zeitkritische Anwendungen oder Anwendungen, die jederzeit konsistent sein müssen, sind weniger geeignete Einsatzgebiete für die asynchrone Eventverarbeitung. In solchen Szenarien ist eine synchrone Verarbeitung und sofortige Konsistenz erforderlich.

Ein großer Vorteil besteht in der hoch entkoppelten Natur der Eventprozessoren. Durch die asynchrone Verarbeitung können Services unabhängig voneinander entwickelt und skaliert werden. Dadurch wird die Flexibilität der Architektur erhöht.

Ein weiterer Vorteil liegt in der Skalierbarkeit. Durch die parallele Verarbeitung von Events können Millionen von Events gleichzeitig verarbeitet werden, was eine hohe Leistungsfähigkeit ermöglicht. Dies ist insbesondere für Microservice-Architekturen von Bedeutung, in denen einzelne Services unabhängig voneinander skaliert werden können.

Die asynchrone Eventverarbeitung bietet auch eine hohe Reaktionsfähigkeit. Events können schnell und effizient verarbeitet werden, was speziell in Echtzeit-Anwendungen von Vorteil ist. Die Architektur ermöglicht es, schnell auf eingehende Events zu reagieren und entsprechende Aktionen durchzuführen.

Darüber hinaus kann die asynchrone Eventverarbeitung eine hohe Performance erreichen. Durch die optimierte Verarbeitung von Events und den Einsatz effizienter Messaging-Protokolle kann eine effektive und schnelle Verarbeitung von Events gewährleistet werden.

Ein Nachteil der asynchronen Eventverarbeitung liegt in der komplizierten Fehlerbehandlung. Aufgrund der asynchronen Natur können Fehler schwieriger zu erkennen und zu behandeln sein. Es erfordert eine sorgfältige Planung und Implementierung, um sicherzustellen, dass Fehler angemessen behandelt werden und keine unerwünschten Auswirkungen auf das System haben.

Ein weiterer Nachteil besteht in der schlechten Wiederherstellbarkeit. Bei Systemausfällen oder unerwarteten Situationen kann die Wiederherstellung der Events eine Herausforderung darstellen. Mechanismen zur Wiederherstellung und Konsistenz müssen sorgfältig berücksichtigt werden, um sicherzustellen, dass das System zuverlässig arbeitet.

Ein weiterer Punkt ist die Möglichkeit von Dateninkonsistenzen (Eventual Consistency). Da Events asynchron verarbeitet werden, besteht die Möglichkeit, dass Dateninkonsistenzen auftreten können. Die Konsistenz des Systems muss sorgfältig verwaltet und überwacht werden, um sicherzustellen, dass die Daten zuverlässig und konsistent bleiben.

Insgesamt bietet der Architekturstil der asynchronen Eventverarbeitung viele Vorteile, wie Flexibilität, Skalierbarkeit, Reaktionsfähigkeit und hohe Performance. Dennoch müssen die Herausforderungen der Fehlerbehandlung, Wiederherstellbarkeit und Datenkonsistenz sorgfältig berücksichtigt werden, um ein robustes und zuverlässiges System zu gewährleisten.

Fazit

Der Architekturstil der asynchronen Eventverarbeitung bietet Flexibilität und Skalierbarkeit, insbesondere in Microservice-Architekturen. Es ermöglicht eine entkoppelte und parallele Verarbeitung von Events, was zu einer hohen Leistungsfähigkeit und Reaktionsfähigkeit führt. Dennoch sind eine sorgfältige Fehlerbehandlung, Wiederherstellbarkeit und die Verwaltung von Datenkonsistenz wichtige Aspekte, die berücksichtigt werden müssen. Bei der Wahl des Architekturstils sollten die individuellen Anforderungen und Ziele des Projekts beachtet werden.

Zusammenfassung

Die wichtigsten Merkmale dieses Stils haben wir für Sie kurz und knapp als Bild zusammengefasst.

Disclaimer: Der Architektur-Spicker basiert zu großen Teilen auf dem Buch Handbuch moderner Software-Architektur von O’Reilly. Für tiefergehende Informationen empfehlen wir dieses Buch zu kaufen.

Zurück zur Übersicht

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

*Pflichtfelder

*