Veröffentlicht am

Kafka auf Kubernetes: Der Event-Broker für ereignisgesteuerte Architekturen

Teilen:
Authors

Kafka auf Kubernetes: Der Event-Broker für ereignisgesteuerte Architekturen

TL;DR

  • Kafka ist die Poststelle Ihrer Microservices. Statt dass Dienste sich direkt gegenseitig anrufen (und dabei warten, crashen oder Daten verlieren), legen sie Ereignisse in Kafka ab — und Kafka liefert sie zuverlässig an alle, die sie brauchen.
  • Kafka löst drei klassische Skalierungsprobleme: Tight Coupling (Dienste hängen nicht mehr direkt voneinander ab), synchrones Warten (ein langsamer Dienst blockiert nicht mehr die ganze Kette) und Datenverlust (Kafka persistiert Ereignisse).
  • Kafka ist kein Datenbank-Ersatz, sondern der Ereignis-Log — die DB ist der aktuelle Zustand, Kafka der Verlauf der Ereignisse. Beide ergänzen sich.
  • Ab Kafka 3.0 übernimmt KRaft die Koordination direkt in Kafka — keine externe Zookeeper-Abhängigkeit mehr.
  • Kafka ist leistungsstark, aber anspruchsvoll im Betrieb — Broker-Cluster, Partitioning, Retention, Monitoring und Skalierung brauchen Erfahrung.

Das Problem, das Kafka löst

Die „Domino-Kette" der direkten Aufrufe

Am Beispiel einer E-Commerce-App: Bestellung → Bestand aktualisieren → E-Mail senden → Rechnung → Dashboard. Jeder Dienst ruft den nächsten synchron auf:

  • Tight Coupling: Payment-Service down → ganze Bestellung friert ein.
  • Single Point of Failure: 10 Minuten Inventory-Ausfall → 2 Stunden Bestell-Backlog.
  • Datenverlust: Analytics-Service down → Black-Friday-Daten weg.

Die Lösung: Ereignisse statt Aufrufe

Statt dass Dienste sich direkt anrufen, wird Platz zwischen ihnen geschaffen — ein Broker (Kafka) sitzt in der Mitte. Der Order-Service legt ein Ereignis ab („Bestellung erstellt") und geht weiter. Kafka liefert es an alle Interessierten — asynchron, zuverlässig, verlustfrei.


Die Kafka-Konzepte

KonzeptFunktionAnalogie
Producererzeugt EreignisseAbsender
Topicorganisiert Ereignisse nach TypPostfach/Sektion
Consumerabonniert Topics, reagiertEmpfänger
PartitionAufteilung eines Topics für Skalierungmehr Arbeiter pro Sektion
Consumer Groupmehrere Instanzen teilen sich die LastTeam, das Briefe sortiert
Brokerpersistiert Ereignisse, repliziertPostfiliale
Streamkontinuierliche Verarbeitung mit AggregationEchtzeit-Analytics

Die Kaskade: Ein Ereignis löst viele aus

Bestellung → Order-Topic → mehrere Consumer reagieren:

  • Notification-Service → E-Mail an Kunden.
  • Inventory-Service → Bestand aktualisieren + neues „Inventory"-Ereignis.
  • Payment-Service → Rechnung erzeugen.
  • Analytics → Dashboard aktualisieren.

Ein Ereignis kann also Kettenreaktionen auslösen (z. B. Low-Stock-Alert → Restock-Service). Genau das macht Kafka zum Rückgrat ereignisgesteuerter Architekturen.


Warum Kafka kein Datenbank-Ersatz ist

Kafka speichert Ereignisse — aber es ersetzt keine Datenbank. Die DB ist der aktuelle Zustand; Kafka ist der Ereignis-Log. Sie ergänzen sich: Der Inventory-Service aktualisiert die DB und schreibt ein Ereignis in Kafka.

DatenbankKafka
WasAktueller ZustandEreignis-Log
LesenPunktueller ZustandVerlauf, mehrfach, jederzeit
UpdateÜberschreibenAppend-only
RolleSource of Truth für ZustandSource of Truth für Ereignisse

Der Unterschied zu klassischen Message Brokern

  • Klassische Queues: löschen Nachrichten nach Konsum.
  • Kafka: persistiert Ereignisse so lange, wie Sie wollen (Retention-Policy). Consumer können sie jederzeit und mehrfach lesen.

Analogie: Netflix (on demand — jeder schaut, wann er will) vs. Fernsehen (jeder muss zur gleichen Zeit einschalten). Kafka ist Netflix.


Kafka auf Kubernetes betreiben

Kafka ist leistungsstark — aber anspruchsvoll im Betrieb. Auf Kubernetes kommt der Betrieb der Broker-Cluster dazu:

StatefulSets & persistente Volumes

Kafka ist ein stateful Workload: Jeder Broker braucht persistenten Speicher. Auf Kubernetes wird Kafka deshalb als StatefulSet mit Persistent Volumes betrieben — der gleiche Baustein, der auch MySQL, WordPress und moderne KI-Plattformen trägt.

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: kafka
spec:
  serviceName: kafka
  replicas: 3
  selector:
    matchLabels:
      app: kafka
  template:
    metadata:
      labels:
        app: kafka
    spec:
      containers:
        - name: kafka
          image: apache/kafka:3.7
          env:
            - name: KAFKA_BROKER_ID
              valueFrom:
                fieldRef:
                  fieldPath: metadata.name
  volumeClaimTemplates:
    - metadata:
        name: data
      spec:
        accessModes: ['ReadWriteOnce']
        resources:
          requests:
            storage: 100Gi

Was professioneller Kafka-Betrieb umfasst

BereichAufgabe
Cluster-DesignPartitioning-Strategie, Replication, Retention-Policies
BetriebMonitoring, Upgrades, Failover, Sicherheit
LifecycleStatefulSets, persistente Volumes, ordentliche Broker-Verwaltung
Daten-PipelinesKafka als Fundament für Event-getriebene Architekturen, Echtzeit-Analytics

Der Bezug zu KI

Kafka ist ideal für Echtzeit-Daten-Feeds für KI: Agent-Events, LLM-Traffic-Analysen, Streaming-Anomalie-Erkennung. Die gleiche Plattform, die Bestellungen verarbeitet, kann Ereignis-Ströme für KI-Modelle liefern — betrieben auf derselben Kubernetes-Basis.


Lessons Learned & Risiken (ehrlich)

  1. Kafka ist kein „einfacher Message Broker": Partitioning, Retention und Streams wollen durchdacht sein — Schema-Design ist Architektur-Arbeit.
  2. Betrieb ist anspruchsvoll: Broker-Cluster, Replikation, Upgrades und Monitoring brauchen Erfahrung.
  3. Kein Datenbank-Ersatz: Ereignis-Log und Zustand sind verschiedene Dinge — beide richtig einsetzen.
  4. Skalierung braucht Design: Partitions und Consumer Groups müssen zum Workload passen, sonst entsteht ein Engpass.
  5. Retention hat Kosten: Lange Retention = viel Speicher. Policy bewusst wählen.

Fazit

Kafka ist kein Datenbank-Ersatz, sondern das Ereignis-Rückgrat ereignisgesteuerter Architekturen:

  1. Ereignisse statt direkter Aufrufe — entkoppelt Dienste, eliminiert synchrones Warten und Datenverlust.
  2. Producer, Topics, Partitions, Consumer Groups — die Kernkonzepte verstehen, bevor man skaliert.
  3. KRaft statt Zookeeper — moderne Koordination ab Kafka 3.0.
  4. Kafka auf Kubernetes — StatefulSets, persistente Volumes und professioneller Betrieb machen es produktionsreif.
  5. KI-ready — Echtzeit-Feeds für Agents und Analytics auf derselben Plattform.

FAQ

Ist Kafka ein Ersatz für eine Datenbank? Nein. Kafka ist ein Ereignis-Log; die DB ist der aktuelle Zustand. Sie ergänzen sich.

Wann lohnt sich Kafka? Bei hohem Event-Volumen, mehreren Konsumenten, Echtzeit-Analytics und der Notwendigkeit, Ereignisse zu persistieren. Für einfache Queue-Szenarien reicht oft ein simpler Broker.

Brauche ich noch Zookeeper? Nein — ab Kafka 3.0 übernimmt KRaft die Koordination direkt in Kafka.

Warum Kafka auf Kubernetes betreiben? Kubernetes liefert das Betriebs-Fundament: StatefulSets für Broker, persistente Volumes, Self-Healing, Monitoring und Skalierung — aus einer Hand mit den restlichen Workloads.


Verwandte Artikel

📖 Verwandte Artikel

Weitere interessante Beiträge zu ähnlichen Themen