1
Patrik Kleindl
Christoph Portsch
Mit Kafka auf dem Weg zur
Entkopplung
2
Solutions beyond
Buzzwords
Christoph Portsch
Solution Architect
Industrie: Logistik, Telekommunikation
Fokus: Event Streaming, Continuous Delivery,
Domain Driven Design
Gemeinsames
Kundenprojekt
2015
2020
Österreichs größte
Management- &
Technologieberatung
Patrik Kleindl
Solution Architect
Industrie: Telekommunikation, Finanz, Logistik
Fokus: Event Streaming, Performance Tuning
Was war die Ausgangssituation?
4
Der Monolith und seine Kopplungen
Feature
Feature Feature
Feature
Feature
Implementierungs-Kopplung
Temporale Kopplung
Deployment Kopplung
Feature Development
Gemeinsamer Technologie
Stack
Verfügbarkeit der Features
entspricht Verfügbarkeit des
Systems
Kernsystem 09:00-17:00
Deployment umfasst alle
Änderungen
Komplexe Organisation
MonolithAS 400
25 Jahre entwickeln
ohne Regeln
Welche Ziele verfolgte der Kunde?
6
Monolith
Business Ziele des Kunden
Beschleunigung
Time 2 Market
für neue Features
Skalierung
Feature
Development
2
Erhöhung spezifischer
Feature
Verfügbarkeiten
3
Feature Feature
Feature
Feature
1
FeatureFeatureFeature
Feature
Die Mission:
Monolith
Die zentrale Frage
Mode of Dataflow?
Mo
n
o th
li
1. Ansatz:
Request & Response über HTTP
10
Warum?
• Natürlicher Coding
Ansatz
• Einfacher Weg zur
Kommunikation
• Leichteres Testing &
Operating
• Keine zusätzliche
Infrastruktur
Client Server
Request
Response
Client Server
11
Request & Response über HTTP
Monolith
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
 Entkoppelt durch APIs
 Koordination von APIs (API
Mindset)
 Separate Deployment Pipelines
 Blue/Green Deployments
 Kein Big-Bang
Implementierungs-Kopplung
Deployment Kopplung
12
Request & Response über HTTP
Monolith
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Verfügbarkeit gekoppelt mit Upstream
Performance limitiert durch Upstream
Betrieb = „Distributed Murder Detective“
Temporale Kopplung
13
Request & Response über HTTP
Dezentrale Daten zur Erhöhung der Verfügbarkeit
Monolith
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
 Batch Job führt zu Eventual
Consistency
 Schreiben der Daten komplex
Temporale Kopplung
Batchjob
2. Ansatz:
Traditionelles Messaging
15
Warum?
• Broker zur Reduktion
der gegenseitigen
Kopplung
• Entkopplung der
Verfügbarkeit
zwischen Publisher &
Subscriber
• Verschub von Daten
aus einer hohen
Kopplung hin zu einer
losen Kopplung
Client
Message
Publisher Subscriber
Message
Subscriber
Message
Message
Broker
16
Messaging
Monolith
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
 Entkoppelt durch Messages
 Koordination von
Message Schemas (API Mindset)
 Deployment Strategie für neue
Infrastruktur
 Unabhängige Deployment Pipeline pro
Feature
Implementierungs-Kopplung
Deployment Kopplung
17
Messaging
Monolith
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Kein Log von Messages vorhanden
Einmalige Deployment Kopplung
Feature
New
Feature Deployment Kopplung
Migration
18
Messaging
Teilweise Entkopplung erreicht
Messaging Integration mit Monolith
war nicht möglich
Monolith
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Temporale Kopplung
New
Feature
Migration
Feature
Feature
Monolith
Messaging
Integration
3
1
2
New
Feature
Migration
Feature
Feature
Monolith
Messaging
Integration
3
1
2
Was passiert
laufend?
Integration des Monolithen?
Was ist in der
Vergangenheit
passiert?
Die Kombination?
Event Streaming
Stream of
GPS Signals
Stream of
Geofences
Stream of
Arrivals
Apache Kafka
Event Streaming Plattform
Sink Connectors
Source
Connectors
APIs für
unterschiedliche
Sprachen
Kafka
Broker
KStreams
& KSQL
Writes sind
append
only
Reads sind
single seek
& scan
Partition 1
Partition n
Verteiltes Event-Log
als Messaging System
Apache Kafka
Event Streaming Plattform
3. Ansatz:
Event Streaming
25
Event Streaming
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
 Entkoppelt durch Messages
 Unterstützung durch Schema
Evolution
 Deployment Strategie für neue
Infrastruktur
 Unabhängiges Deployment Pipeline
pro Feature
Monolith
Implementierungs-Kopplung
Deployment Kopplung
26
Event Streaming
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Monolith
Temporale Kopplung
 Zeitliche Unabhängigkeit
zum Monolithen
Integration des Monolithen
28
Event oder State?
Monolith
Event Driven ArchitectureState Replication
Change Data Capture
29
Auswirkungen und Probleme
Convenience
Messages
Event  State 
State  Event 
Re-Prozessierung
Performance
Impact
Stream Re-Prozessierung
Event
Streaming
Stream
Event
Streaming
Stream
Offset
Reset
33
Bestellung
+ Drop-Off Punkt
Versandauftrag
+ Drop-Off Punkt
Stream Re-Prozessierung
Monolith Stream
Stream
Stream
Stream
Kunde
Neuere Messages während Re-Prozessierung erst später verarbeitet
Einfluss durch Log Retention (z.B. 13 Monate)
Tritt auch bei Stream Topologie Änderungen auf
Auswirkung auf gesamte Kaskade
Temporale Kopplung
34
Start der
Re-Prozessierung
Auswirkung auf zwei
weitere Streams bzw.
Topics
35
Maßnahmen zum Handling der Stream Re-Prozessierung
Idempotenz bei
erneuter
Verarbeitung
Zeitraum
beschränken
Mehrstufiges
Rollout von Topics
Scale-Out der
Streams
Fachliche Filter
verwenden
Topic Konfiguration
37
Topic Konfiguration
Koordination von Deployments notwendig
Kritische Konfigurationswerte im Topic (Log
Retention, Cleanup Policy)
Consumer
Consumer
Producer
Deployment Kopplung
38
Topic Konfiguration
 Unabhängiges Deployment
 Jedes Deployment konfiguriert notwendige Topics
 Defaults überschreiben keine Master
Konfiguration
Producer
Consumer
Consumer
Deployment Kopplung
Ein Stream ist tot
RIP!
40
Ein Stream ist tot – RIP!
1 2 43 5 6
Uncaught
Exception
2 31
Stream
Stream
Stream
Verarbeitung neuer Daten wird blockiert
Manueller Eingriff notwendig
Auswirkung auf gesamte Kaskade
Auslöser sind inkonsistente Daten
Temporale Kopplung
Stream
41
Vom Format zum Schema
Avro
• Schema als „Contract“
• Kafka Integration mit Schema
Registry
• Kafka übernimmt Schema
Validierung
• Unterstützt Schema Evolution
(Transformation in Reader
Schema)
• Performant & geringer
Overhead pro Message
JSON
• Kein strikt definiertes Format
• Fehlender „Contract“ zwischen
Producer & Consumer
• Kafka übernimmt keine Format-
Validierung
• Overhead & Verbosity
42
Optionale Parameter mit Konsequenzen
Stream
Uncaught
Exception
Inkonsistente Daten erfordern „optionale“ Werte
Default Werte häufig NULL
Nur schwaches Schema
Code erfordert viele Null-Checks
Temporale Kopplung
Monolith
2 31
Stream
1 32 4 5
Bestellung
+ Drop-Off Punkt = NULL
Key Points – Fragen?
Request &
Response
Messaging
Event
Streaming
Monolith
44
www.bearingpoint.com
Thank you.
+ 43 1 506 32 0
patrik.kleindl@bearingpoint.com
christoph.portsch@bearingpoint.com
BearingPoint GmbH
Schwarzenbergplatz 5
AT-1030 Wien, Österreich
From BearingPoint Austria
45
STAND 2.12 –
2.22
11 UNTERNEHMEN AUS DEM
ÖKOSYSTEM RUND UM APACHE
KAFKA
ÜBER 30 KAFKA-EXPERTEN VOR ORT
MÖGLICHKEIT ZUM AUSTAUSCH MIT
DEN SPRECHERN IM TALK LAB
…UND KAFFEE UND GEWINNSPIELE
HABEN WIR AUCH ;-)
46

OOP2020_Kafka_Entkopplung