Buchbesprechung: Event-Driven Architecture in Golang

Der Packt-Verlag präsentiert eine neue umfassende Einführung in die eventorientierte Programmierung – zugeschnitten auf Go-Entwicklerinnen und -Entwickler.

In Pocket speichern vorlesen Druckansicht
Buchrezension: Game Development with Blender and Godot

(Bild: Blackboard/Shutterstock.com)

Lesezeit: 6 Min.
Von
  • Tam Hanna
Inhaltsverzeichnis

Michael Stack
Event-Driven Architecture in Golang
Building complex systems with asynchronicity and eventual consistency
Packt, November 2022
384 Seiten, ab 11,99 Euro (Print und E-Book)
ISBN: 9781803238012

Eher konservativ eingestellte Softwareentwicklerinnen und -entwickler sind mitunter der Meinung, dass Ted Faison in seinem Klassiker "Event-Based Programming: Taking Events to the Limit" alles gesagt hat, was es zu eventorientierter Programmierung zu sagen gibt. So lesenswert dieses Werk auch ist, so veraltet sind die darin erwähnten Programmiersprachen. Mit "Event-Driven Architecture in Golang" von Michael Stack schickt der Packt-Verlag ein neues englischsprachiges Buch ins Rennen, das sich an die Bedürfnisse all jener richtet, die ein eventorientiertes System mit Go zusammenstellen wollen.

Stack setzt dabei als Mindestversion Go 1.17 voraus und nutzt Windows 10 als Ausführungsumgebung – im Vorwort verspricht er allerdings, dass ein "Gutteil" der Beispiele sowohl unter Ubuntu Linux als auch im Windows Subsystem für Linux ausführbar bleibt.

Das erste Kapitel widmet sich der Vermittlung der Grundlagen des eventgetriebenen Designs. Interessant empfand der Rezensent die hexagonalen Diagramme, die – und das dürfte ein Spezifikum des Autors sein – zur Vermittlung des Event-Flows in Solutions verwendet werden. Vom Stoffumfang her bietet dieser Teil des Werks keinen Anlass zur Kritik. Stack führt eine Art Web-Shop-Verwaltungssystem ein, das die Leser auch durch den Rest des Lehrbuchs begleitet und Konzepte praktisch erfahrbar macht. Quasi nebenbei erklärt der Autor die Vorteile eventorientierter Systeme und geht auch kurz auf Probleme ein, die sich Entwicklerinnen und Entwickler mit schlecht strukturierten eventorientierten Systemen einhandeln können.

(Bild: Packt)

Die Weiterentwicklung der Softwarearchitektur in den letzten Jahren hat dazu geführt, dass eventorientierte Entwicklungs- und Design-Prozesse heute nicht mehr im Abseits stehen. Stattdessen sind sie in einen mehr oder weniger komplizierten Entwicklungsprozess eingebunden, in dem auch andere unterstützende Technologien wie Domain-driven Design und die berühmt-berüchtigte Command Query Responsibility Segregation tummeln. Stack geht auf diese Themenkreise kurz ein, um sie in Bezug auf die eigentliche Aufgabe der eventorientierten Architektur vorzustellen und abzuklopfen. Allerdings kann ein Kapitel eines knapp 400 Seiten langen Lehrbuchs natürlich keine Komplettvorstellung liefern.

Zu guter Letzt präsentiert der Autor Methoden und Prozesse, um das eigentliche Planen der im Softwaresystem zu implementierenden Event-Architekturen zu erleichtern. Er setzt dabei auf das eigentlich im Bereich des Domain-driven Design weitverbreitete Event Storming – die Vorstellung der Prozesse gelingt Stack verständlich und nachvollziehbar.

Nach dem Besprechen der zur eventorientierten Architektur gehörenden Design Patterns beginnt der Autor mit der Inbetriebnahme der in der Einleitung erwähnten Webshop-Verwaltung, die sich interessierte Leserinnen und Leser bei Bedarf als Docker-Container auf den eigenen Rechner laden können. Im nächsten Schritt folgt das Einpflegen von Domänen-Events, was den ersten Kontakt zwischen Go-Entwicklern und -Entwicklerinnen und den Prinzipien der eventorientierten Programmierung darstellt.

Anschließend wendet sich der Autor dem Event Sourcing zu: Darunter versteht er das Verarbeiten von Events, indem sie an einen Append-only-Datenstrom angehängt werden. Die Restauration des aktuellen beziehungsweise letztgültigen Zustands des Systems erfolgt stets durch Parsen des kompletten Stromes. Was auf den ersten Blick nach Verschwenden von Rechenleistung aussieht, erweist sich in der Praxis aufgrund der Protokollierung als hilfreich. In diesen beiden Kapiteln programmiert Stack viel von Hand.

Im sechsten Kapitel, das asynchrone Verbindungen behandelt, kommt der Autor auf die Eventsysteme zurück – als Basis dient NATS JetStream. Die darauffolgenden Experimente vertiefen die Integration zwischen der Monolithen-Applikation und dem JetStream-Eventsystem. Stack führt zudem erste Experimente im Bereich der Daten-Persistenz unter Einsatz von PostgreSQL durch.

Der Autor rundet sein Werk mit dem Konzept der transnationalen Messages ab und geht auch auf das im englischsprachigen Raum immer populärere Architekturkonzept der Saga ein.

Viele Lehrbücher beschränken sich allzu oft darauf, das Implementieren eines bestimmten Design Pattern vorzustellen. Wie Anwenderinnen und Anwender das daraus entstehende System zum Schaffen von Werten einsetzen können, bleibt nur allzu oft ihnen selbst überlassen.

Stack geht erfreulicherweise einen anderen Weg: Der dritte und letzte logische Block seines Buchs setzt sich mit dem Testen eventorientierter Systeme auseinander. Er präsentiert eine Auswahl verschiedener Testverfahren. Grundkenntnisse des Softwaretestens im Allgemeinen sowie speziell im Testen von Go-Applikationen sind hilfreich, wenn Leser und Leserinnen den maximalen Wert aus dem (kompakten) Kapitel ziehen möchten.

Für die Nutzung seiner Lehrbeispiele greift Stack auf Docker als Ausführungsumgebung zurück, das Deployment erfolgt in die AWS-Cloud und zur Orchestrierung kommt Terraform zum Einsatz. Lobenswert ist aus Sicht des Rezensenten, dass der Autor grundlegend auf die Interaktion mit AWS als Ganzes eingeht.

Zum Schluss präsentiert Stack noch eine Gruppe von Softwaresystemen, die beim Monitoring des eventorientierten Clusters hilfreich sind. Deren Besprechung fällt kurz aus, ist aber nützlich für die Praxis.

Wer wie der Rezensent einst mit Klassikern zu eventorientierter Programmierung aufgewachsen ist und mehr über die heutige eventorientierte Entwicklung erfahren möchte, bereut den Kauf des Buchs sicherlich nicht. Lohnend ist das Werk auch für all jene, die ein Team von "Gofern" zu managen haben, dessen Mitglieder noch keine Erfahrung in eventorientierter Entwicklung mitbringen.

Tam Hanna
befasst sich seit dem Jahr 2004 mit Handcomputern und Elektronik. Derzeit liegt sein Fokus auf interdisziplinären Anwendungen von Informationstechnologie.

(map)