SlideShare ist ein Scribd-Unternehmen logo
#WISSENTEILEN
Aus der Rubrik „Spaß mit Microservices“
Transaktionen
#WISSENTEILEN
Lars Röwekamp | @_openKnowledge | @mobileLarson
#WISSENTEILEN
ÜBER OPEN KNOWLEDGE
Branchenneutrale Softwareentwicklung & IT-Beratung
#WISSENTEILEN
ÜBER MICH
Wer bin ich - und wenn ja, wie viele?
• CIO New Technologies
• Enterprise & Mobile
• Autor, Speaker, Coach & Mentor
• Snowboard & MTB Enthusiast (a.k.a. “stets bemüht“)
Lars Röwekamp (a.k.a. @mobileLarson)
#WISSENTEILEN#WISSENTEILEN
Agenda:
Wo liegt das Problem?
Die Alternative a.k.a. „Plan B“
TX via SAGA Pattern
#WISSENTEILEN
Wo liegt das
Problem?
#WISSENTEILEN
Der fette
MONOLITH
#WISSENTEILEN
#WISSENTEILEN
Use-Case
#WISSENTEILEN
Use-Case
#WISSENTEILEN
Use-Case
#WISSENTEILEN
Hey, lasst uns Microservices machen …
#WISSENTEILEN
Lasst und zusammengehörige Logik finden.
#WISSENTEILEN
Und in „kleine“ Services zerlegen.
#WISSENTEILEN
Upps, das gilt natürlich auch für die DB!
#WISSENTEILEN
Database per Service Pattern
#WISSENTEILEN
Use-Case
#WISSENTEILEN
Use-Case
#WISSENTEILEN
Use-Case
TX
#WISSENTEILEN
Das klappt nie im Leben!
(Anonymous, DB Admin)
#WISSENTEILEN
Wir brauchen Transaktionen!
(Anonymous, DB Admin)
#WISSENTEILEN#WISSENTEILEN
Die Alternative
a.k.a. „Plan B“
#WISSENTEILEN#WISSENTEILEN
„Benötigen wir wirklich eine
Transaktion oder gibt es einen
fachlich sinnvollen Plan B?“
#WISSENTEILEN
„Starbucks does not know
Two-Phase-Commit“
http://www.enterpriseintegrationpatterns.com/ramblings/18_starbucks.html
#WISSENTEILEN
The Real World is
not transactional!
#WISSENTEILEN
The Online World is
not transactional!
#WISSENTEILEN
#WISSENTEILEN
Plan „B“
Strategies
Order
Service
Inventory
Service
#2
#WISSENTEILEN
Strategie #1
Lazy Evaluation
#WISSENTEILEN
Plan B - Strategy #1: Lazy Evaluation
a.k.a. die „es kommt, wie es kommt“ Strategie
• TX fachlich aufsplitten, sequentiell
durchführen und schauen, ob es klappt
• im Problemfall alternative Logik ausführen
#WISSENTEILEN
Lazy
Evaluation
Order
Service
Inventory
Service
#2
#WISSENTEILEN
Lazy
Evaluation
Order
Service
Inventory
Service
checkOut
#2
#WISSENTEILEN
Lazy
Evaluation
Order
Service
Inventory
Service
checkOut
#1
decrement
#WISSENTEILEN
Strategie #2
Beeing Optimistic
#WISSENTEILEN
Plan B - Strategy #2: Beeing Optimistic
a.k.a. die „es wird schon gutgehen“ Strategie
• wie “Lazy Evaluation“ nur mit erhöhter
Wahrscheinlichkeit, dass die „Transaktion“
erfolgreich abläuft.
#WISSENTEILEN
Beeing
Optimistic
Order
Service
Inventory
Service
#2
#4
least known value
of items available:
#WISSENTEILEN
Beeing
Optimistic
Order
Service
Inventory
Service
checkOut
#2
#4
least known value
of items available:
#WISSENTEILEN
Beeing
Optimistic
Order
Service
Inventory
Service
checkOut
#1
decrement
#1
least known value
of items available:
#WISSENTEILEN
Strategie #3
Safeguard
#WISSENTEILEN
Plan B - Strategy #3: Safeguard
a.k.a. die „frag besser nochmal nach“ Strategie
• wie “Beeing Optimistic“ nur auf Basis von
„nearly Real-Time“ Daten
#WISSENTEILEN
Optimistic
w/ Safeguard
Order
Service
Inventory
Service
#2
#4
least known value
of items available:
#WISSENTEILEN
Optimistic
w/ Safeguard
Order
Service
Inventory
Service
checkOut
#2
#4
least known value
of items available:
#WISSENTEILEN
Optimistic
w/ Safeguard
Order
Service
Inventory
Service
checkOut
#2
inventory?
#4
least known value
of items available:
#WISSENTEILEN
Optimistic
w/ Safeguard
Order
Service
Inventory
Service
checkOut
#2
2 items left!
#2
least known value
of items available:
#WISSENTEILEN
Optimistic
w/ Safeguard
Order
Service
Inventory
Service
checkOut
#1
decrement
#1
least known value
of items available:
#WISSENTEILEN
Strategie #4
Plan „B“
#WISSENTEILEN
Order
Service
Inventory
Service
#0
Good to have
a Plan „B“
#1
least known value
of items available:
#WISSENTEILEN
Good to have
a Plan „B“
Order
Service
Inventory
Service
#0
checkOut
#1
least known value
of items available:
#WISSENTEILEN
Good to have
a Plan „B“
Order
Service
Inventory
Service
#0
checkOut
#1
least known value
of items available:
„Ist der
Datenstand
konsistent?“
#WISSENTEILEN
Good to have
a Plan „B“
Order
Service
Inventory
Service
#0
checkOut
#1
least known value
of items available:
„Kann ich
pünktlich
liefern?“*
*„Und ist der Datenstand
letztendlich konsistent
(aka eventual consistency)?“
#WISSENTEILEN#WISSENTEILEN
Plan B? Schön & gut, aber ich
brauche meine Transaktionen!
#WISSENTEILEN#WISSENTEILEN
TX via
SAGA Pattern
#WISSENTEILEN
Microservices mit „eigenen“ Daten
#WISSENTEILEN
Fachliche TX über Servicegrenzen hinweg
#WISSENTEILEN
(Quelle: Microservices Pattern, Chris Richardson)
#WISSENTEILEN
(Quelle: Microservices Pattern, Chris Richardson)
#WISSENTEILEN
(Quelle: Microservices Pattern, Chris Richardson)
„Sichtbarkeit"
Order Service
„Sichtbarkeit“
Customer Service
#WISSENTEILEN
it‘s all about
consistency
- eventual -
#WISSENTEILEN
Wie garantiere ich die Konsistent der
Daten über Servicegrenzen hinweg?
#WISSENTEILEN
Strategie #1
überdenke die
Servicegrenzen
#WISSENTEILEN
Die
„Service“
Strategie
#WISSENTEILEN
Die
„Service“
Strategie
#WISSENTEILEN
Geänderte Servicegrenzen
• technologisch eine super Lösung, aber …
• Problem der Verantwortlichkeiten
• Problem Bounded Context / Domänen Modell
• Vorteile der Microservices gehen verloren
• „Big Ball of Mud“ lässt grüßen
#WISSENTEILEN
Strategie #2
XA mit 2PC
#WISSENTEILEN
Die
„XA“
Strategie
#WISSENTEILEN
Die
„XA“
Strategie
Btw: DB locks
Btw: Chatty O(4n)
mit Retries = (n^2)
Btw: CAP Theorem
#WISSENTEILEN
Verteilte Transaktionen via XA
• aus Developer-Sicht wie lokale TX, aber …
• Verlust der losen Kopplung, da synchrone IPC
• kein Support durch „moderne Plattformen“*
* Cloud-Komponenten, noSQL, MQs
#WISSENTEILEN
Strategie #3
DIY 2PC
#WISSENTEILEN
Die
„DIY 2PC“
Strategie*
*Nein, das willst du nicht. Glaube mir!
#WISSENTEILEN
Strategie #4
Business TX via
SAGA Pattern
#WISSENTEILEN
Quelle:
SAGAS, Hector Garcia-Molina
& Kenneth Salem, January 1987
Die
„Saga“
Strategie
#WISSENTEILEN
Verteilte Transaktionen via SAGAs
SAGA Idee:
Abbilden einer verteilten fachlichen
Transaktion durch eine Abfolge lokaler
technischer Transitionen / Transaktionen
#WISSENTEILEN
Verteilte Transaktionen via SAGAs
#WISSENTEILEN
Verteilte Transaktionen via SAGAs
• Konsistenz von Daten zwischen Services
wird durch eine wohldefinierte Abfolge lokaler
Transitionen/Transaktionen erreicht.
• Service kommuniziert „erfolgreiche“ lokale
Transition/Transaktion an den nächsten
beteiligten Service*.
*mehr dazu später
#WISSENTEILEN
Die
„Saga“
Strategie
Invariante:
sum(open order)
is smaller or equals
customer.creditLimit
#WISSENTEILEN
Die
„Saga“
Strategie
Invariante:
sum(open order)
is smaller or equals
customer.creditLimit
#WISSENTEILEN
Die
„Saga“
Strategie
Invariante:
sum(open order)
is smaller or equals
customer.creditLimit
#WISSENTEILEN
Die
„Saga“
Strategie
Invariante:
sum(open order)
is smaller or equals
customer.creditLimit
#WISSENTEILEN
Die
„Saga“
Strategie
Invariante:
sum(open order)
is smaller or equals
customer.creditLimit
#WISSENTEILEN
Die
„Saga“
Strategie
Invariante:
sum(open order)
is smaller or equals
customer.creditLimit
#WISSENTEILEN
Wow, that
is simple!
What can
go wrong?
#WISSENTEILEN
Die
„Saga“
Strategie
#WISSENTEILEN
Die
„Saga“
Strategie
#WISSENTEILEN
Die
„Saga“
Strategie
CA = Compensation Algorith a.k.a.
Compensation Transaction
#WISSENTEILEN
Die
„Saga“
Strategie
CA = Compensation Algorith a.k.a.
Compensation Transaction
„Every Ti has its Ci“
#WISSENTEILEN
Verteilte Transaktionen via SAGAs
• wohldefinierte Abfolge von Compensation
Algorithms realisieren verteiltes Rollback
• Compensation Algorithms sind fachlicher
Code und somit Applikationslogik
• Abfolge von lokalen TXs & CAs kann
beliebig komplex werden!
#WISSENTEILEN
Frage:
Wie koordiniert
man das Ganze?
#WISSENTEILEN
Steuerung von SAGAs
TX 1
TX 2
TX 3
TX 4
TX 5
TX 6
order = PENDING
item = PENDINGAPPORVED
APPORVED
#WISSENTEILEN
Steuerung von SAGAs
• Choreographie
• Orchestrierung
#WISSENTEILEN
Steuerung von SAGAs
• Choreographie
• Orchestrierung
#WISSENTEILEN
Choreographie von SAGAs
• implizite Sequenzsteuerung
• verteilte Koordination durch Eventfluss
• „Wissen“ liegt bei den beteiligten Services
#WISSENTEILEN
Saga via
Choreography
#WISSENTEILEN
Saga via
Choreography
#WISSENTEILEN
Saga via
Choreography
#WISSENTEILEN
Saga via
Choreography
#WISSENTEILEN
Saga via
Choreography
#WISSENTEILEN
Saga via
Choreography
#WISSENTEILEN
Choreographie von SAGAs
• pro
lose gekoppelt (Teilnehmer kennen sich nicht)
relativ einfach zu implementieren
• contra
i.d.R. zyklische Abhängigkeiten
erhöhte Komplexität im Domänen-Modell
kein zentraler Business-Code (wann valide?)
#WISSENTEILEN
Choreographie von SAGAs
• btw lose Kopplung
Teilnehmer kennen sich zwar nicht, wissen aber
genau, was bei einem Event zu tun ist und wie
im Anschluss – durch ein eigenes Event – zu
antworten ist (a.k.a. pseudo lose Kopplung)
#WISSENTEILEN
Steuerung von SAGAs
• Choreographie
• Orchestrierung
#WISSENTEILEN
Orchestrierung von SAGAs
• explizite Sequenzsteuerung
• zentraler SAGA-Koordinator im Service
• Command / Handler Pattern
• beteiligte Services haben kein „Wissen“
#WISSENTEILEN
Saga via Orchestration
#WISSENTEILEN
Saga via Orchestration
#WISSENTEILEN
Saga via Orchestration
#WISSENTEILEN
Saga via Orchestration
#WISSENTEILEN
Saga via Orchestration
#WISSENTEILEN
Saga via Orchestration
#WISSENTEILEN
Saga via Orchestration
#WISSENTEILEN
Saga via Orchestration
#WISSENTEILEN
Saga via Orchestration
#WISSENTEILEN
Saga via Orchestration
#WISSENTEILEN
Saga via Orchestration
#WISSENTEILEN
Orchestration von SAGAs
• pro
Logik ist einfach(er) zu verstehen
fachliche Kopplung nur unidirektional
keine zyklischen Abhängigkeiten
Separation of Concerns (Domain Logic vs. TX)
#WISSENTEILEN
Orchestration von SAGAs
• contra
„Smart Orchestrator & Dump Services“ Pattern,
d.h. Risiko, zu viel Business Logic im
Orchestrator zu zentralisieren
#WISSENTEILEN
Orchestration von SAGAs
• btw Orchestrator
Will man den wirklich selber bauen? Nein!
Alternative 1: Saga Framework
Alternative 2: Lightweight Workflow Engine
#WISSENTEILEN
Frage:
Und das kann
funktionieren?
#WISSENTEILEN
Konsistenz von Daten und Nachrichten
• Services veröffentlichen „Erfolgs“-Nachricht
direkt nach lokaler TX
• lokale TX und „Erfolgs“-Nachricht sind
atomare Einheit aus Sicht des Services
• garantierte Beendigung der Business TX*
*Message Broker buffered bei Bedarf die Message
#WISSENTEILEN
Konsistenz von Daten und Nachrichten
#WISSENTEILEN
Konsistenz von Daten und Nachrichten
#WISSENTEILEN
Konsistenz von Daten und Nachrichten
#WISSENTEILEN
Konsistenz von Daten und Nachrichten
#WISSENTEILEN
Konsistenz von Daten und Nachrichten
#WISSENTEILEN
Fehlende Isolation
• SAGA = ACD (ACID ohne Isolation)
• fehlende Isolation kann zu Anomalien führen
(lost updates, dirty reads, event race condition)
• Anomalien müssen soweit minimiert bzw.
verhindert werden, dass sie fachlich vertretbar
sind!
#WISSENTEILEN
#WISSENTEILEN
Überdenke deine
Prozesse
#WISSENTEILEN
Überdenke deine
Servicegrenzen
#WISSENTEILEN
Realisiere fachliche
Transaktionen
#WISSENTEILEN
Realisiere fachliche
Kompensationen
#WISSENTEILEN
Die Weisheit des Tages:
„Wenn deine Service-Landkarte am Ende
genauso aussieht, wie dein Monolith,
dann hattest du entweder vorher
kein Problem oder wirst zukünftig
eine Menge Probleme haben!“
#WISSENTEILEN
Verteilte Transaktionen via SAGAs
• „Database per Service“ Pattern erfordert
Alternative zu gewohnten Transaktionen
• Sagas simulieren verteilte Transaktion durch
Abfolge lokaler Transaktionen
• Saga Abfolge wird durch Choreographie oder
Orchestrierung koordiniert
#WISSENTEILEN
Herausforderungen von SAGAs
• Atomicity
Database & Event TX je Teilnehmer
• Reliability
Reliable Event-basierte Kommunikation
• Coupling
durch Choreographie oder Orchestration geht
die lose Kopplung teilweise verloren
#WISSENTEILEN
Herausforderungen von SAGAs
• Rollback
Compensation Transactions statt Rollback
• Isolation
SAGAs sind evtl. verflochten, d.h.
Intermediate-States sind für alle sichtbar
#WISSENTEILEN
? ? ?
@mobileLarson
@_openKnowledge
#WISSENTEILEN
Ressourcen
• SAGA Frameworks
Eventuate Tram Sagas
• Lightweight Workflow Engines
Zeebe.io
• See also
https://github.com/meirwah/awesome-workflow-engines
#WISSENTEILEN
Kontakt
LARS RÖWEKAMP
CIO NEW TECHNOLOGIES
lars.roewekamp@openknowledge.de
+49 (0)441 4082 – 0
@mobileLarson
@_openknowledge
OFFENKUNDIGGUT
#WISSENTEILEN
Bildnachweise
#19 © vasakna – fotolia.com
#25 © rawpixel.com – shutterstock.com
#43 © vadymvdrobot – fotolia.com
#82 © pathdoc – shutterstock.com
#119 © garagestock – shutterstock.com
All other pictures inside this presentation orginate
from pixabay.com or were created by my own.

Weitere ähnliche Inhalte

PDF
Ukpabia collins portfolio 2020
PPTX
Switching domain 3 months before an IPO - Lucia Lecesne - BrightonSEO April 2022
PPTX
How to leverage SEO and other channels to expand into Chinese market
PPTX
UI設計の土台になる考え方-インテリジェントネット社内勉強会
PDF
スクラム入門ワークショップ
PDF
非エンジニアのためのこれだけは押さえておきたいWEBサービスの基礎技術
PDF
Speed up alt text generation without coding skills
PPTX
security in neo4j
Ukpabia collins portfolio 2020
Switching domain 3 months before an IPO - Lucia Lecesne - BrightonSEO April 2022
How to leverage SEO and other channels to expand into Chinese market
UI設計の土台になる考え方-インテリジェントネット社内勉強会
スクラム入門ワークショップ
非エンジニアのためのこれだけは押さえておきたいWEBサービスの基礎技術
Speed up alt text generation without coding skills
security in neo4j

Was ist angesagt? (8)

PDF
「ウチの事業部の商品をWebサイト・アプリで目立たせて!」私だけじゃなかった! 社内政治と落としどころの見つけ方
PPTX
ドメイン駆動設計の学習曲線とブレークポイント
PDF
Cómo Gestionar Proyectos SEO Complejos de Forma Exitosa #SEonthebeach
PPTX
Views on Views of Video SEO - MozCon 2023
PDF
Understanding your competitor’s business to be truly successful at SEO
PDF
Building LinkedIn's Learning Platform with MongoDB
PDF
Jupyter notebook を用いた文芸的インフラ運用のススメ
PDF
End-to-end dialogue systems, or a feature which wasn’t meant to happen | Rasa...
「ウチの事業部の商品をWebサイト・アプリで目立たせて!」私だけじゃなかった! 社内政治と落としどころの見つけ方
ドメイン駆動設計の学習曲線とブレークポイント
Cómo Gestionar Proyectos SEO Complejos de Forma Exitosa #SEonthebeach
Views on Views of Video SEO - MozCon 2023
Understanding your competitor’s business to be truly successful at SEO
Building LinkedIn's Learning Platform with MongoDB
Jupyter notebook を用いた文芸的インフラ運用のススメ
End-to-end dialogue systems, or a feature which wasn’t meant to happen | Rasa...
Anzeige

Ähnlich wie Spaß mit Microservices: Transaktionen (9)

PDF
Aus der Rubrik "Spaß mit Microservices": Transaktionen
PDF
Mittendrin statt nur dabei: Microservices und Transaktionen
PDF
Microservices Architecture: Architektur und Patterns
PDF
Shared Data in verteilten Architekturen
PDF
Shared Data in verteilten Systemen
PDF
Microservices Migration: Vom Monolithen zu Microservices
PDF
Der goldene Schnitt – Wie schneide ich Microservices richtig?
PDF
Die Matrix: Enterprise-Architekturen jenseits von Microservices
PDF
Hilfe, ich will meinen Monolithen zurück!
Aus der Rubrik "Spaß mit Microservices": Transaktionen
Mittendrin statt nur dabei: Microservices und Transaktionen
Microservices Architecture: Architektur und Patterns
Shared Data in verteilten Architekturen
Shared Data in verteilten Systemen
Microservices Migration: Vom Monolithen zu Microservices
Der goldene Schnitt – Wie schneide ich Microservices richtig?
Die Matrix: Enterprise-Architekturen jenseits von Microservices
Hilfe, ich will meinen Monolithen zurück!
Anzeige

Mehr von OPEN KNOWLEDGE GmbH (20)

PPTX
Warum der Computer "Nein" sagt - Mehr Nachvollziehbarkeit dank Explainable AI
PDF
Machine Learning? Ja gerne! Aber was und wie? Eine Kurzanleitung für den erfo...
PDF
From Zero to still Zero: Die schönsten Fehler auf dem Weg in die Cloud
PDF
Der Spagat zwischen BIAS und FAIRNESS (2024)
PDF
FEHLENDE DATEN? (K)EIN PROBLEM!: Die Kunst der Data Imputation
PPTX
Nie wieder Log-Files!
PDF
Cloud-native and Enterprise Java? Hold my beer!
PPTX
From Zero to still Zero: The most beautiful mistakes going into the cloud.
PDF
API Expand Contract
PDF
Ready for the Future: Jakarta EE in Zeiten von Cloud Native & Co
PDF
Machine Learning mit TensorFlow.js
PDF
KI und Architektur
PDF
It's not Rocket Science: Neuronale Netze
PDF
Business-Mehrwert durch KI
PDF
Mehr Sicherheit durch Automatisierung
PDF
API-Design, Microarchitecture und Testing
PDF
Supersonic Java für die Cloud: Quarkus
PDF
Das ist doch alles nur Frontend - Wer braucht da schon Architektur?
PDF
Auf geht‘s in die Cloud: „Das kann doch nicht so schwer sein!“
PDF
Das Product Goal oder "Ohne Ziele laufen eben alle in die Richtung, die ihnen...
Warum der Computer "Nein" sagt - Mehr Nachvollziehbarkeit dank Explainable AI
Machine Learning? Ja gerne! Aber was und wie? Eine Kurzanleitung für den erfo...
From Zero to still Zero: Die schönsten Fehler auf dem Weg in die Cloud
Der Spagat zwischen BIAS und FAIRNESS (2024)
FEHLENDE DATEN? (K)EIN PROBLEM!: Die Kunst der Data Imputation
Nie wieder Log-Files!
Cloud-native and Enterprise Java? Hold my beer!
From Zero to still Zero: The most beautiful mistakes going into the cloud.
API Expand Contract
Ready for the Future: Jakarta EE in Zeiten von Cloud Native & Co
Machine Learning mit TensorFlow.js
KI und Architektur
It's not Rocket Science: Neuronale Netze
Business-Mehrwert durch KI
Mehr Sicherheit durch Automatisierung
API-Design, Microarchitecture und Testing
Supersonic Java für die Cloud: Quarkus
Das ist doch alles nur Frontend - Wer braucht da schon Architektur?
Auf geht‘s in die Cloud: „Das kann doch nicht so schwer sein!“
Das Product Goal oder "Ohne Ziele laufen eben alle in die Richtung, die ihnen...

Spaß mit Microservices: Transaktionen