2 Vorwort

2.1 Warum Event-Driven Architecture?

Moderne Softwaresysteme stehen vor wachsenden Anforderungen: Sie müssen skalieren, ausfallsicher sein, schnell auf Änderungen reagieren und sich nahtlos in komplexe Systemlandschaften integrieren lassen. Traditionelle, synchrone Architekturen stoßen dabei zunehmend an ihre Grenzen – nicht nur technisch, sondern auch organisatorisch, wenn Teams unabhängig voneinander entwickeln und deployen möchten.

Event-Driven Architecture (EDA) bietet einen bewährten Ansatz, um diese Herausforderungen zu meistern. Durch die konsequente Entkopplung von Systemkomponenten über asynchrone Ereignisse entstehen resiliente, skalierbare und wartbare Architekturen. Doch der Übergang von request-response-basierten zu event-getriebenen Systemen erfordert ein Umdenken – sowohl beim Design als auch bei der Implementierung.

2.2 Zielgruppe und Lernziele

Dieses Manuskript richtet sich an Softwareentwickler, Architekten, IT-Projektleiter und IT-Manager, die ein tieferes Verständnis für moderne Integrationsansätze gewinnen möchten. Technische Vorkenntnisse sind hilfreich, aber nicht zwingend erforderlich. Auch ohne Programmierhintergrund lassen sich die Konzepte und Beispiele nachvollziehen.

Nach dem Durcharbeiten des Manuskripts werden Sie:

2.3 Didaktischer Ansatz

2.3.1 Konzeptfokus statt Tool-Vertiefung

Dieses Manuskript vermittelt Architektur- und Designprinzipien, nicht die Tiefe spezifischer Technologien. Apache Kafka dient als praktisches Transportmittel für Events, steht aber nicht im Mittelpunkt. Stattdessen lernen Sie, wie event-getriebene Systeme grundsätzlich funktionieren – unabhängig von der gewählten Infrastruktur.

2.3.2 Anspruch und Tiefe

Event-Driven Architecture ist kein Randthema und kein „nice to have“-Pattern, das man nebenbei einführt. Es handelt sich um ein komplexes Paradigma, das viele gewohnte Denkweisen klassischer, sequentieller Systeme auf den Kopf stellt. Wer EDA verstehen und erfolgreich einsetzen will, muss bereit sein, sich auf neue Modelle einzulassen und diese konsequent durchzudenken.

Das bedeutet: - Das Lernvolumen ist hoch und die Konzepte greifen ineinander.
- Ein selektives Herausgreifen („Cherry Picking“) einzelner Aspekte führt in der Praxis schnell zu problematischen und schwerwiegenden Fehlern.
- Präzises Verständnis ist notwendig, da kleine Architekturentscheidungen große Auswirkungen auf Skalierbarkeit, Resilienz und Konsistenz haben können.

Dieses Manuskript legt deshalb Wert auf Klarheit, Systematik und Vollständigkeit, auch wenn dies für viele Teilnehmer bedeutet, dass sie sich mit zunächst ungewohnten oder komplexen Konzepten auseinandersetzen müssen.

2.3.3 Szenarien und Diskussionen

Ein wesentlicher Teil der Übungen besteht aus Szenarien und Diskussionsaufgaben. Gemeinsam überlegen wir, wie EDA-Konzepte in Projekten angewendet werden können, welche Vor- und Nachteile entstehen und wie konkrete Architekturen aussehen könnten. Das macht die Inhalte auch für Teilnehmer ohne Programmierkenntnisse nachvollziehbar und praxisrelevant.

2.3.4 Durchgängiges Praxisszenario

Alle Beispiele greifen ein konsistentes E-Commerce-Szenario auf: Von der Bestellabwicklung über Zahlungsverarbeitung bis hin zur Lieferlogistik. Dieses realitätsnahe Beispiel macht abstrakte Konzepte greifbar und zeigt, wie verschiedene EDA-Patterns ineinandergreifen.

2.3.5 Code als Demonstration

Code-Beispiele sind vorhanden und werden vor allem demonstrativ eingesetzt – in Spring Boot (Java) und Python. Sie verdeutlichen die Konzepte, sind aber kein zwingender Bestandteil der Übungen. Auch ohne selbst zu programmieren, können Sie die Abläufe nachvollziehen.

2.4 Struktur des Manuskripts

Das Manuskript folgt einer logisch aufbauenden Struktur in mehreren Phasen:

Thematischer Block Kapitel Inhalt
Grundlagen und Konzepte 3-8 Einleitung und EDA-Prinzipien, Motivation durch Entkopplung/Skalierung, Architekturziele und Anwendungsfelder, Abgrenzung zu REST, Events vs. Commands vs. Messages, Domain Driven Design Integration
Kommunikationsarchitektur 9-14 Asynchrone Kommunikation (Producer-Broker-Consumer), Event- vs. Message-Driven Thinking, Transportinfrastruktur mit Kafka, Topics/Partitionen/Replikation, Consumer Groups und Offset-Management, Fehlerverhalten und Resilience Patterns
Event-Modellierung und -Design 15-19 Event-Typen (Zustandsänderung, Aktion, Ableitung), Semantik und Granularität, Serialisierung und Formatwahl, Schema Evolution und Versionierung, Event-Namen, Kontrakte und Bounded Contexts
Event-Produktion 20-25 Producer-Architektur und Separation of Concerns, Ereignisse als Nebenprodukt vs. explizites Publishing, Spring Boot Event-Erzeugung (KafkaTemplate), Python Event-Erzeugung (confluent-kafka), Serialisierung, Transaktionen und Idempotenz, Logging, Fehlerbehandlung und Retry
Event-Konsumption und Verarbeitung 26-37 Consumer-Architektur und Lifecycle, Push vs. Pull-Verarbeitung, Spring Boot Eventverarbeitung (KafkaListener), Python Eventverarbeitung (polling loops), Offset-Handling (manuell vs. automatisch), Fehlertoleranz und Dead Letter Topics, Stateless vs. Stateful Processing, Event Replay und Zustandsaufbau, Kafka Streams Grundlagen
Integration und Systemkopplung 38-43 Integrationsmuster für Legacy-Systeme, Outbox Pattern für transaktionale Garantien, Change Data Capture (CDC), Eventisierung von REST/Datenbankaktionen, Synchron-asynchrone Übergänge, Systemgrenzen und Kompatibilität
Event Sourcing und CQRS 44-47 Event Sourcing Prinzipien und Herausforderungen, Unterschiede zu klassischen Write Models, Projections, Snapshots und Aggregation, CQRS als Command-Query-Separation
Workflows und Orchestrierung 48-52 Choreographie (dezentrale Workflow-Koordination), Orchestrierung (zentrale Workflow-Steuerung), Vergleich und Anwendungsszenarien, Distributed Transactions und Saga Pattern, Workflow-Modellierung mit Events
Request-Response Integration 53-56 Synchrone Schnittstellen in asynchronen Systemen, Real-time Requests aus Event-Streams, Backend-for-Frontend (BFF) Patterns, Microfrontend-Integration
Testbarkeit und Entwicklung 57-62 Unit Tests für Producer und Consumer, Contract Testing auf Event-Ebene, Integrationstests mit Testcontainers, Event-Flow-Simulation, Design für Testbarkeit, Test-first Development für EDA
Betrieb und Monitoring 63-67 Kafka-Betrieb (das Nötigste), Monitoring und Metriken (Consumer Lag, Error Rate), Logging-Strategien, Alerting für Eventfluss, Deployment-Strategien für EDA
Weiterführende Themen 68-69 Serverless Event Processing (FaaS), Event Meshes, Streaming und Cloud-Patterns, Abschließende Empfehlungen und Evolution Strategies

2.5 Technische Voraussetzungen

Die Code-Beispiele können nachvollzogen werden, wenn die technischen Voraussetzungen erfüllt sind, sie sind jedoch nicht verpflichtend für das Verständnis. Für die Szenarien und Übungen reicht es, die Konzepte zu diskutieren und zu übertragen.

2.6 Wie Sie dieses Manuskript nutzen

2.6.1 Sequenzielles Lernen

Die Kapitel bauen inhaltlich aufeinander auf, besonders ab Kapitel 4. Für ein vollständiges Verständnis empfiehlt sich das sequenzielle Durcharbeiten.

2.6.2 Selektive Vertiefung

Wenn Sie bereits EDA-Erfahrung haben, können Sie nach den Grundlagen (Kapitel 1-3) gezielt zu spezifischen Themen springen. Querverweise helfen bei der Navigation.

2.6.3 Diskussionen und Szenarien

Übungen zielen auf Anwendung und Reflexion, nicht nur auf Code. Der Schwerpunkt liegt auf Verständnis, Diskussion und Transfer in die Praxis.

2.7 Ein Wort zu Kafka

Apache Kafka wird in diesem Manuskript als Mittel zum Zweck eingesetzt, nicht als Lernziel. Sie erhalten das notwendige Kafka-Grundverständnis für die Beispiele, aber keine tiefgehende Kafka-Schulung. Die vermittelten EDA-Prinzipien lassen sich ebenso mit anderen Event-Brokern wie RabbitMQ, AWS EventBridge oder Azure Service Bus umsetzen.