SlideShare ist ein Scribd-Unternehmen logo
1 von 153
Downloaden Sie, um offline zu lesen
Shared Data
in verteilten Architekturen
#WISSENTEILEN
Lars Röwekamp (CIO New Technologies)
@mobileLarson | @_openknowledge
info@openknowledge.de.
Shared Data
in verteilten Architekturen
#WISSENTEILEN
Lars Röwekamp | @mobileLarson
#WISSENTEILEN
Lars Röwekamp (CIO New Technologies)
@mobileLarson | @_openknowledge
@mobileLarson
CIO New Technologies
OPEN KNOWLEDGE
Lars Röwekamp
Cloud
AI & ML
Architecture
Microservices
<
<
<
<
#WISSENTEILEN
Lars Röwekamp (CIO New Technologies)
@mobileLarson | @_openknowledge
OPEN KNOWLEDGE
@_openknowledge
Und da arbeite ich >
#WISSENTEILEN
Wo bitte liegt das
Problem
#WISSENTEILEN
MONOLITH
ACHTUNG: von Natur aus böse!
#WISSENTEILEN
MONOLITH
ACHTUNG: von Natur aus böse!
So kann ich
nicht arbeiten!
#WISSENTEILEN
So will ich
arbeiten!
Microservices
Architecture
#WISSENTEILEN
So will ich
arbeiten!
unabhängig
• entwickeln
• testen
• deployen
• skalieren
#WISSENTEILEN
Ok, es gibt
Challenges …
#WISSENTEILEN
Ok, es gibt
Challenges …
• DS per Service
#WISSENTEILEN
Ok, es gibt
Challenges …
• DS per Service
• Poly Persistence
#WISSENTEILEN
Ok, es gibt
Challenges …
• DS per Service
• Poly Persistence
• Joins
AB
B
A
#WISSENTEILEN
Ok, es gibt
Challenges …
• DS per Service
• Poly Persistence
• Joins
• Redundanz
A‘‘
A‘
A
#WISSENTEILEN
Ok, es gibt
Challenges …
• DS per Service
• Poly Persistence
• Joins
• Redundanz
• Integrität
A B
#WISSENTEILEN
Ok, es gibt
Challenges …
• DS per Service
• Poly Persistence
• Joins
• Redundanz
• Integrität
• Konsistenz
A B
TX
Hilfe, ich will meine
monolithische
Datenbank
zurück!
#WISSENTEILEN
Halt, nicht so schnell!
Lösungen
müssen her.
#WISSENTEILEN
JOINS
von Daten
über Servicegrenzen hinweg
#WISSENTEILEN
B
A
Joins
von Daten
über Servicegrenzen hinweg
#WISSENTEILEN
AB
B
A
Joins
von Daten
über Servicegrenzen hinweg
#WISSENTEILEN
Anforderung:
Übersicht der letzten Bestellungen eines Kunden anzeigen
#WISSENTEILEN
Cust
Orders
GET customerorders/123 …
Idee:
Ein spezieller Service
CustOrders liefert die
gewünschte Übersicht.
#WISSENTEILEN
Cust
Orders
GET customerorders/123 …
Idee:
Ein spezieller Service
CustOrders liefert die
gewünschte Übersicht.
Herausforderung:
Die dafür benötigten
Infos der Kunden und
Bestellungen liegen in
unterschiedlichen
Services.
? Orders
Customer
#WISSENTEILEN
Lösung:
Ein spezieller Service
CustOrders liefert die
gewünschte Übersicht
via API Composition.
Herausforderung:
Die dafür benötigten
Infos der Kunden und
Bestellungen liegen in
unterschiedlichen
Services.
Cust
Orders
Orders
Customer
GET customerorders/123 …
#WISSENTEILEN
Lösung:
Ein spezieller Service
CustOrders liefert die
gewünschte Übersicht
via API Composition.
Herausforderung:
Die dafür benötigten
Infos der Kunden und
Bestellungen liegen in
unterschiedlichen
Services.
Cust
Orders
Orders
Customer
GET customerorders/123 …
Aufruf der
Data Owner APIs*
Data Owner
*Integration der Daten
lesend via Data Owner
schreibend via Data Owner
#WISSENTEILEN
Koordination der Aufrufe
Lösung:
Ein spezieller Service
CustOrders liefert die
gewünschte Übersicht
via API Composition.
Herausforderung:
Die dafür benötigten
Infos der Kunden und
Bestellungen liegen in
unterschiedlichen
Services.
Cust
Orders
Orders
Customer
#WISSENTEILEN
Koordination der Aufrufe
Aggregation der Ergebnisse
Lösung:
Ein spezieller Service
CustOrders liefert die
gewünschte Übersicht
via API Composition.
Herausforderung:
Die dafür benötigten
Infos der Kunden und
Bestellungen liegen in
unterschiedlichen
Services.
Cust
Orders
Orders
Customer
#WISSENTEILEN
Koordination der Aufrufe
Aggregation der Ergebnisse
Resilience im “Fall des Falles“
Lösung:
Ein spezieller Service
CustOrders liefert die
gewünschte Übersicht
via API Composition.
Herausforderung:
Die dafür benötigten
Infos der Kunden und
Bestellungen liegen in
unterschiedlichen
Services.
Cust
Orders
Orders
Customer
#WISSENTEILEN
Koordination der Aufrufe
Aggregation der Ergebnisse
Resilience im “Fall des Falles“
btw: starre Kopplung
Lösung:
Ein spezieller Service
CustOrders liefert die
gewünschte Übersicht
via API Composition.
Herausforderung:
Die dafür benötigten
Infos der Kunden und
Bestellungen liegen in
unterschiedlichen
Services.
Cust
Orders
Orders
Customer
!
#WISSENTEILEN
Cust
Orders
Idee #2:
Ein spezieller Service
CustOrders hält die
gewünschte Übersicht in
einer eigenen DB vor.*
GET customerorders/123 …
* Database-per-Service Pattern
benötigte Daten von
Customer & Order
#WISSENTEILEN
Cust
Orders
Orders
Customer
Idee #2:
Ein spezieller Service
CustOrders hält die
gewünschte Übersicht in
einer eigenen DB vor.*
Herausforderung:
Änderungen an den
Originaldaten müssen
propagiert werden.
?
* Database-per-Service Pattern
Data change
benötigte Daten von
Customer & Order
#WISSENTEILEN
Cust
Orders
Orders
Customer
Lösung #2:
Der Service CustOrders wird
via Domänen-Events über
Änderungen „informiert“.
Herausforderung:
Änderungen an den
Originaldaten müssen
propagiert werden.
*Integration der Daten
lesend via Replikat
schreibend via Data Owner
Data change
benötigte Daten von
Customer & Order
Domain Event:
„Order changed“
#WISSENTEILEN
Cust
Orders
Orders
Customer
Lösung #2:
Der Service CustOrders wird
via Domänen-Events über
Änderungen „informiert“
(aka CQRS*).
Herausforderung:
Änderungen an den
Originaldaten müssen
propagiert werden.
*Integration der Daten
lesend via optimiertem Replikat
schreibend via Data Owner
Data change
Domain Event:
„Order changed“
Materialized View*
CustumerOrders
#WISSENTEILEN
Cust
Orders
Orders
Customer
Data change
Domain Event:
„Order changed“
Lösung #2:
Der Service CustOrders wird
via Domänen-Events über
Änderungen „informiert“.
Herausforderung:
Änderungen an den
Originaldaten müssen
propagiert werden.
Order NEW
Order OLD
WARNING:
Eventual Consistency, d.h.
Original und Replikat sind
für einen kurzen Augenblick
out-of-sync!
#WISSENTEILEN
Cust
Orders
Orders
Customer
Data change
Domain Event:
„Order changed“
Lösung #2:
Der Service CustOrders wird
via Domänen-Events über
Änderungen „informiert“.
Herausforderung:
Änderungen an den
Originaldaten müssen
propagiert werden.
Dies führt zu Eventual
Consistency. Ist das
fachlich ein Problem?
Wenn nicht, alles OK! Order NEW
Order OLD
#WISSENTEILEN
Redundanz
von Daten
über Servicegrenzen hinweg
#WISSENTEILEN
A
Redundanz
von Daten
über Servicegrenzen hinweg
#WISSENTEILEN
A‘‘
A‘
A
Redundanz
von Daten
über Servicegrenzen hinweg
#WISSENTEILEN
Eine einzelne
Information genau
an einem Ort*
*How to survive working with Data?
#WISSENTEILEN
Anforderung:
Aufgeben einer Bestellung eines Kunden*
* so kundenfreundlich und effizient wie möglich
#WISSENTEILEN
Checkout
Konzept:
Der gesamte Bestellvorgang
kann im „Normalfall“ mit Hilfe
des Checkout-Service
abgehandelt werden.
Orders
#WISSENTEILEN
Checkout
Konzept:
Der gesamte Bestellvorgang
kann im „Normalfall“ mit Hilfe
des Checkout-Service
abgehandelt werden.
Orders
Herausforderung:
Wie kommen die notwendigen
Daten zum Checkout-Service?
#WISSENTEILEN
Checkout
Konzept:
Der gesamte Bestellvorgang
kann im „Normalfall“ mit Hilfe
des Checkout-Service
abgehandelt werden.
Datenversorgung:
Zu dem Zweck hält der
Checkout-Service ein
Replikat der notwendigen
Daten*.
Orders
Preferred Delivery Address
Preferred Payment Method
*ggf. als eigene Domänen-Repräsentation
#WISSENTEILEN
Checkout
POST https://ok-shop.de/orders
Orders
Preferred Delivery Address
Preferred Payment Method
Konzept:
Der gesamte Bestellvorgang
kann im „Normalfall“ mit Hilfe
des Checkout-Service
abgehandelt werden.
#WISSENTEILEN
Checkout
201 created
Location: …/orders/1234
Orders
Preferred Delivery Address
Preferred Payment Method
Konzept:
Der gesamte Bestellvorgang
kann im „Normalfall“ mit Hilfe
des Checkout-Service
abgehandelt werden.
#WISSENTEILEN
Checkout
Orders
Preferred Delivery Address
Preferred Payment Method
Konzept:
Der gesamte Bestellvorgang
kann im „Normalfall“ mit Hilfe
des Checkout-Service
abgehandelt werden.
Herausforderung:
Die bevorzugte Lieferadresse
bzw. Zahlungsmethode soll
nicht zur Anwendung kommen.
#WISSENTEILEN
Checkout
Orders
Preferred Delivery Address
Preferred Payment Method
Konzept:
Der gesamte Bestellvorgang
kann im „Normalfall“ mit Hilfe
des Checkout-Service
abgehandelt werden.
Alternative Adresse:
… im „Ausnahmefall“ wird
der Address-Service zur
Auswahl einer alternativen
Adresse herangezogen.
#WISSENTEILEN
Address Checkout
Orders
Preferred Delivery Address
Preferred Payment Method
Addresses
Preferred Delivery Address
Lösungsidee:
… im „Ausnahmefall“ wird
der Address-Service zur
Auswahl einer anderen
Adresse herangezogen.
#WISSENTEILEN
Address Checkout
Orders
Preferred Delivery Address
Preferred Payment Method
Addresses
Preferred Delivery Address
GET …/addresses
(list all addresses)
Lösungsidee:
… im „Ausnahmefall“ wird
der Address-Service zur
Auswahl einer anderen
Adresse herangezogen.
#WISSENTEILEN
Address Checkout
Orders
Preferred Delivery Address
Preferred Payment Method
Addresses
Preferred Delivery Address
200 ok
[
„list of
addresses“
]
Lösungsidee:
… im „Ausnahmefall“ wird
der Address-Service zur
Auswahl einer anderen
Adresse herangezogen.
#WISSENTEILEN
Address Checkout
Orders
Preferred Delivery Address
Preferred Payment Method
Addresses
Preferred Delivery Address
PUT …/addresses/123
(change pref. delivery address)
Lösungsidee:
… im „Ausnahmefall“ wird
der Address-Service zur
Auswahl einer anderen
Adresse herangezogen.
#WISSENTEILEN
Address Checkout
Orders
Preferred Delivery Address
Preferred Payment Method
Addresses
Preferred Delivery Address
204 no content
[ ]
Lösungsidee:
… im „Ausnahmefall“ wird
der Address-Service zur
Auswahl einer anderen
Adresse herangezogen.
#WISSENTEILEN
Address Checkout
Orders
Preferred Delivery Address
Preferred Payment Method
Addresses
Preferred Delivery Address
Address MQ
Lösungsidee:
… im „Ausnahmefall“ wird
der Address-Service zur
Auswahl einer anderen
Adresse herangezogen.
#WISSENTEILEN
Address Checkout
Orders
Preferred Delivery Address
Preferred Payment Method
Addresses
Preferred Delivery Address
Address MQ
pref. delivery
address changed
Lösungsidee:
… im „Ausnahmefall“ wird
der Address-Service zur
Auswahl einer anderen
Adresse herangezogen.
#WISSENTEILEN
Address Checkout
Orders
Preferred Delivery Address
Preferred Payment Method
Addresses
Preferred Delivery Address
Address MQ
pref. delivery address changed
Lösungsidee:
… im „Ausnahmefall“ wird
der Address-Service zur
Auswahl einer anderen
Adresse herangezogen.
#WISSENTEILEN
Address Checkout
Orders
Preferred Delivery Address
Preferred Payment Method
Addresses
Preferred Delivery Address
Address MQ
pref. delivery
address changed
Lösungsidee:
… im „Ausnahmefall“ wird
der Address-Service zur
Auswahl einer anderen
Adresse herangezogen.
#WISSENTEILEN
Address Checkout
Orders
Preferred Delivery Address
Preferred Payment Method
Addresses
Preferred Delivery Address
Address MQ
Lösungsidee:
… im „Ausnahmefall“ wird
der Address-Service zur
Auswahl einer anderen
Adresse herangezogen.
#WISSENTEILEN
Checkout
Orders
Preferred Delivery Address
Preferred Payment Method
Konzept:
Der gesamte Bestellvorgang
kann im „Normalfall“ mit Hilfe
des Checkout-Service
abgehandelt werden.
Herausforderung:
Eine neue Adresse, die
bisher dem System noch
nicht bekannt ist, soll zur
Anwendung kommen.
#WISSENTEILEN
Checkout
Orders
Preferred Delivery Address
Preferred Payment Method
Konzept:
Der gesamte Bestellvorgang
kann im „Normalfall“ mit Hilfe
des Checkout-Service
abgehandelt werden.
Neue Adresse anlegen:
… auch neue Adressen
werden ausschließlich
über den Data-Owner
Address-Service angelegt
und im Anschluss repliziert.
#WISSENTEILEN
Address
Lösungsidee:
… auch neue Adressen
werden ausschließlich
über den Data-Owner
Address-Service angelegt
und im Anschluss repliziert.
Checkout
Orders
Preferred Delivery Address
Preferred Payment Method
Addresses
Preferred Delivery Address
NEW Preferred Delivery Address
new Address
#WISSENTEILEN
Address Checkout
Orders
Preferred Delivery Address
Preferred Payment Method
Addresses
Preferred Delivery Address
Lösungsidee:
… auch neue Adressen
werden ausschließlich
über den Data-Owner
Address-Service angelegt
und im Anschluss repliziert.
#WISSENTEILEN
Integrität
von Daten
über Servicegrenzen hinweg
#WISSENTEILEN
A B
Integrität
von Daten
über Servicegrenzen hinweg
#WISSENTEILEN
A B
Integrität
von Daten
über Servicegrenzen hinweg
#WISSENTEILEN
A B
Integrität
von Daten
über Servicegrenzen hinweg
#WISSENTEILEN
Anforderung:
Übersicht der letzten Bestellungen eines Kunden anzeigen
#WISSENTEILEN
Cust
Orders
Orders
Customer
GET customerorders/123 …
Ausgangssituation:
Kundendaten und
zugehörige Bestellungen
sind in unterschiedlichen
Services abgelegt.
*API Composition Pattern
*
Customer 123 Orders of Customer 123
#WISSENTEILEN
Cust
Orders
Orders
Customer
Ausgangssituation:
Kundendaten und
zugehörige Bestellungen
sind in unterschiedlichen
Services abgelegt.
Herausforderung:
Ein Kunde wird gelöscht.
Customer 123 Orders of Customer 123
#WISSENTEILEN
Cust
Orders
Orders
Customer
Ausgangssituation:
Kundendaten und
zugehörige Bestellungen
sind in unterschiedlichen
Services abgelegt.
Herausforderung:
Ein Kunde wird gelöscht.
DELETE customer/123 Was passiert mit
den Bestellungen
von Kunde 123?
Customer 123 Orders of Customer 123
#WISSENTEILEN
Cust
Orders
Orders
Customer
Herausforderung:
Ein Kunde wird gelöscht.
Orders of Customer 123
Idee:
Den Bestell-Service via
Domänen-Event über
Löschung des Kunden
informieren
Customer 123
Integrity out of sync
#WISSENTEILEN
Cust
Orders
Orders
Customer
Herausforderung:
Ein Kunde wird gelöscht.
Orders of Customer 123
Idee:
Den Bestell-Service via
Domänen-Event über
Löschung des Kunden
informieren
Customer 123
Integrity out of sync*
Customer MQ
customer 123 deleted
*eventual integrity
#WISSENTEILEN
Cust
Orders
Orders
Customer
Herausforderung:
Ein Kunde wird gelöscht.
Orders of Customer 123
Idee:
Den Bestell-Service via
Domänen-Event über
Löschung des Kunden
informieren
Customer 123
Customer MQ customer 123 deleted
Integrity out of sync*
*eventual integrity
#WISSENTEILEN
Cust
Orders
Orders
Customer
Herausforderung:
Ein Kunde wird gelöscht.
Orders of Customer 123
Idee:
Den Bestell-Service via
Domänen-Event über
Löschung des Kunden
informieren
Customer 123
Integrity in sync*
Customer MQ
*eventual integrity
#WISSENTEILEN
Cust
Orders
Orders
Customer
Herausforderung:
Ein Kunde wird gelöscht.
DELETE customer/123
Customer 123 Orders of Customer 123
*
*als gelöscht markiert
Idee #2:
Kunde als gelöscht
markieren und APIs
bei Bedarf adaptieren
#WISSENTEILEN
Cust
Orders
Orders
Customer
Idee #2:
Kunde als gelöscht
markieren und APIs
bei Bedarf adaptieren
Herausforderung:
Ein Kunde wird gelöscht.
Customer 123 Orders of Customer 123
GET customerorders/123 …
*
*als gelöscht markiert
#WISSENTEILEN
Cust
Orders
Orders
Customer
Idee #2:
Kunde als gelöscht
markieren und APIs
bei Bedarf adaptieren
Herausforderung:
Ein Kunde wird gelöscht.
Customer 123 Orders of Customer 123
GET customerorders/123 …
*
*als gelöscht markiert
Kunde 123 im Status „aktiv“?
GET customer/123
200
OK
#WISSENTEILEN
Cust
Orders
Orders
Customer
Idee #2:
Kunde als gelöscht
markieren und APIs
bei Bedarf adaptieren
Herausforderung:
Ein Kunde wird gelöscht.
Customer 123 Orders of Customer 123
GET customerorders/123 …
*
*als gelöscht markiert
Kunde 123 im Status „aktiv“?
GET customer/123
404
Not Found
#WISSENTEILEN
Cust
Orders
Orders
Customer
Herausforderung:
Ein Kunde wird gelöscht.
DELETE customer/123
Customer 123 Orders of Customer 123
*
*in einer Transaktion löschen
Idee #3:
Kunde und zugehörige
Bestellungen in einer TX
löschen.
*
#WISSENTEILEN
Cust
Orders
Orders
Customer
Herausforderung:
Ein Kunde wird gelöscht.
DELETE customer/123
Customer 123 Orders of Customer 123
Idee #3:
Kunde und zugehörige
Bestellungen in einer TX
löschen.
TX
#WISSENTEILEN
Dein Ernst? Kunden und
zugehörige Bestellungen
in einer TX löschen?
#WISSENTEILEN
Konsistenz
von Daten
über Servicegrenzen hinweg
#WISSENTEILEN
Konsistenz
von Daten
über Servicegrenzen hinweg
A B
#WISSENTEILEN
Konsistenz
von Daten
über Servicegrenzen hinweg
A B
TX
#WISSENTEILEN
Transaktionen*
sichern Konsistenz
* Transactions vs. Database-per-Service Pattern
#WISSENTEILEN
Die Alternative
aka „Plan B“*
* Transactions vs. Eventual Consistency
#WISSENTEILEN
The Real World is
not transactional!
#WISSENTEILEN
The Online World is
not transactional!
#WISSENTEILEN
#WISSENTEILEN
Order
Service
Inventory
Service
#2
#WISSENTEILEN
The Optimist
„Es wird schon irgendwie gutgehen.“
Strategie #1
#WISSENTEILEN
Order
Service
Inventory
Service
checkOut
#2
The
Optimist
#WISSENTEILEN
Order
Service
Inventory
Service
checkOut
#2
order-id xyz
The
Optimist
#WISSENTEILEN
The
Optimist
Order
Service
Inventory
Service
#1
decrement
checkOut
order-id xyz
#WISSENTEILEN
The Fortune-Teller
„Es wird alles gut, vertraue mir!“
Strategie #2
#WISSENTEILEN
The
Fortune-Teller
Order
Service
Inventory
Service
#2
#4
checkOut
last known value
of items available:
#WISSENTEILEN
The
Fortune-Teller
Order
Service
Inventory
Service
#2
#4
checkOut
order-id xyz
last known value
of items available:
#WISSENTEILEN
The
Fortune-Teller
Order
Service
Inventory
Service
#1
decrement
#1
checkOut
order-id xyz
last known value
of items available:
#WISSENTEILEN
The Safeguard
„Ich frage besser noch mal nach!“
Strategie #3
#WISSENTEILEN
The
Safeguard
Order
Service
Inventory
Service
#2
#4
last known value
of items available:
checkOut
#WISSENTEILEN
The
Safeguard
Order
Service
Inventory
Service
#2
#4
last known value
of items available:
checkOut
inventory?
#WISSENTEILEN
The
Safeguard
Order
Service
Inventory
Service
#2
#2
last known value
of items available:
checkOut
inventory?
2 items left!
#WISSENTEILEN
The
Safeguard
Order
Service
Inventory
Service
#2
#2
last known value
of items available:
checkOut
order-id xyz
inventory?
2 items left!
#WISSENTEILEN
The
Safeguard
Order
Service
Inventory
Service
#1
#1
last known value
of items available:
decrement
checkOut
order-id xyz
#WISSENTEILEN
The Plan “B“
„Es gibt immer eine Alternative!“
Strategie #4
#WISSENTEILEN
Order
Service
Inventory
Service
#0
checkOut
#1
Plan „B“
last known value
of items available:
#WISSENTEILEN
Order
Service
Inventory
Service
#0
checkOut
#1
„Ist der
Datenstand
konsistent?“
Plan „B“
last known value
of items available:
#WISSENTEILEN
Order
Service
Inventory
Service
#0
checkOut
„Kann ich
pünktlich
liefern?“*
Plan „B“
last known value
of items available:
#1
#WISSENTEILEN
Order
Service
Inventory
Service
#0
checkOut
„Kann ich
pünktlich
liefern?“*
* … und ist der Datenstand
letztendlich konsistent
(aka eventual consistency)?
Plan „B“
last known value
of items available:
#0
#WISSENTEILEN
#WISSENTEILEN
Plan B? Schön & gut, aber ich
brauche meine Transaktionen!
#WISSENTEILEN
A B
TX
Konsistenz
von Daten
über Servicegrenzen hinweg
#WISSENTEILEN
DISCLAIMER
Im folgenden Beispiel wird davon ausgegangen,
dass die gezeigten Services bereits „optimal“
geschnitten sind und somit aus Sicht der
fachlichen Modellierung keine weitere
Optimierung möglich ist.
“
#WISSENTEILEN
Verteilte Transaktionen via SAGAs
SAGA Idee:
Abbilden einer verteilten fachlichen
Transaktion durch eine Abfolge lokaler
technischer Transitionen / Transaktionen
#WISSENTEILEN
Verteilte Transaktionen via SAGAs
order = PENDING
item = PENDING
TX 1
TX 2
TX 3
TX 4
TX 5
TX 6
APPROVED
APPROVED
#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
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
*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
Was ihr
mitnehmen
solltet. Cool,
verstanden.
Und wo finde ich mehr dazu?
#WISSENTEILEN
Was ihr
mitnehmen
solltet.
https://de.slideshare.net/_openknowledge/spa-mit-microservices-transaktionen
#WISSENTEILEN
Was ihr
mitnehmen
solltet.
#WISSENTEILEN
„Microservices ohne
Database-per-Service
macht keinen Sinn.“
#WISSENTEILEN
„Es kann nur
eine gültige Quelle
für eine bestimmte
Entität geben.“
#WISSENTEILEN
„Nutze
Domänen-Events
zur Kommunikation von
Entitäten-Änderungen.“
#WISSENTEILEN
„Verwende
Eventual Consistency
wann immer fachlich
möglich.“
#WISSENTEILEN
„Denke in
fachlichen
statt in technischen
Transaktionen.“
#WISSENTEILEN
#WISSENTEILEN
Zeit für
Fragen?
Immer!
#WISSENTEILEN
#WISSENTEILEN
Vielen
Dank!
#WISSENTEILEN
by open knowledge GmbH
@_openKnowledge | @mobileLarson
Lars Röwekamp, CIO New Technologies
#WISSENTEILEN
#WISSENTEILEN
BILDNACHWEIS
Folie 01: © Merena, iStockphoto.com
Folie 20: © Photoplotnikov, iStockphoto.com
All other pictures, drawings and icons originate from
• pexels.com,
• pixabay.com,
• unsplash.com,
• flaticon.com
or were made by my own.
#WISSENTEILEN
JOINS
von Daten
eXtended
BONUS
Material:
#WISSENTEILEN
Anforderung:
Ergebnis der Suche eines (ggf anonymen) Nutzers anzeigen
#WISSENTEILEN
Search
Ausgangssituation:
Ein Search-Service
liefert Suchergebnisse
#WISSENTEILEN
Search
Ausgangssituation:
Ein Search-Service
liefert Suchergebnisse
RESTfull
• Resources via URI
• State Transfer via http Methods
• Headers, Caches, Status-Codes …
#WISSENTEILEN
Search
https://ok-shop.de/search?query= …
Ausgangssituation:
Ein Search-Service
liefert Suchergebnisse
#WISSENTEILEN
Search
ok 200
[
…
„list of products“
…
]
Ausgangssituation:
Ein Search-Service
liefert Suchergebnisse
#WISSENTEILEN
Search
no content 204
[ ]
Ausgangssituation:
Ein Search-Service
liefert Suchergebnisse
#WISSENTEILEN
Search
Super
Search
?
Herausforderung:
Der aktuelle Search-Service
soll um einen zweiten
SuperSearch-Service
ergänzt werden.
#WISSENTEILEN
Search
Super
Search
search?query= … supersearch?query= …
Koordination der Aufrufe
Aggregation der Ergebnisse
Resilience im “Fall des Falles“
btw: starre Kopplung
Idee:
zwei Search-Services
#WISSENTEILEN
Simple
Search
Super
Search
simplesearch?query= … supersearch?query= …
Search
API
search?query= …
Koordination der Aufrufe
Aggregation der Ergebnisse
Resilience im “Fall des Falles“
btw: starre Kopplung
Idee #2:
zwei Search-Services
plus API Composition
#WISSENTEILEN
Simple
Search
Super
Search
search?query= …
Search
API
Aggregation der Ergebnisse
Koordination der Aufrufe
Resilience im “Fall des Falles“
Search MQ Result MQ
Idee #3:
zwei Search-Services
plus API Composition
plus Entkoppelung
#WISSENTEILEN
Simple
Search
Super
Search
Search
API
Search MQ Result MQ
User gibt einen
Suchbegriff ein …
Idee #3:
zwei Search-Services
plus API Composition
plus Entkoppelung
#WISSENTEILEN
Simple
Search
Super
Search
search?query= …
Search
API
Search MQ Result MQ
Idee #3:
zwei Search-Services
plus API Composition
plus Entkoppelung
#WISSENTEILEN
Simple
Search
Super
Search
Search
API
Search MQ Result MQ
„Search“ Msg
Idee #3:
zwei Search-Services
plus API Composition
plus Entkoppelung
#WISSENTEILEN
Simple
Search
Super
Search
Search
API
Search MQ Result MQ
Idee #3:
zwei Search-Services
plus API Composition
plus Entkoppelung
#WISSENTEILEN
Simple
Search
Super
Search
Search
API
Search MQ Result MQ „Simple Search“ Result Msg
Idee #3:
zwei Search-Services
plus API Composition
plus Entkoppelung
#WISSENTEILEN
Simple
Search
Super
Search
Search
API
Search MQ Result MQ „Super Search“ Result Msg
Idee #3:
zwei Search-Services
plus API Composition
plus Entkoppelung
#WISSENTEILEN
Simple
Search
Super
Search
Search
API
Search MQ Result MQ
Idee #3:
zwei Search-Services
plus API Composition
plus Entkoppelung
#WISSENTEILEN
Simple
Search
Super
Search
Search
API
Search MQ Result MQ
ok 200
[
…
„merged list
of products“
…
]
Idee #3:
zwei Search-Services
plus API Composition
plus Entkoppelung
#WISSENTEILEN
Simple
Search
Super
Search
Search
API
Search MQ Result MQ
Idee #3:
zwei Search-Services
plus API Composition
plus Entkoppelung
#WISSENTEILEN
Simple
Search
Super
Search
Search
API
Search MQ Result MQ
Idee #3:
zwei Search-Services
plus API Composition
plus Entkoppelung
TIMEOUT
#WISSENTEILEN
Simple
Search
Super
Search
Search
API
Search MQ Result MQ
ok 200
[
…
„list of products“
of SIMPLE SEARCH only
]
Idee #3:
zwei Search-Services
plus API Composition
plus Entkoppelung

Weitere ähnliche Inhalte

Ähnlich wie Shared Data in verteilten Architekturen

Von „less Server“ bis „Serverless“: Wie viel Cloud soll es sein?
Von „less Server“ bis „Serverless“: Wie viel Cloud soll es sein?Von „less Server“ bis „Serverless“: Wie viel Cloud soll es sein?
Von „less Server“ bis „Serverless“: Wie viel Cloud soll es sein?OPEN KNOWLEDGE GmbH
 
Hilfe, ich will meinen Monolithen zurück!
Hilfe, ich will meinen Monolithen zurück!Hilfe, ich will meinen Monolithen zurück!
Hilfe, ich will meinen Monolithen zurück!OPEN KNOWLEDGE GmbH
 
Herausforderung „Multi-Channel“-Architektur
Herausforderung „Multi-Channel“-ArchitekturHerausforderung „Multi-Channel“-Architektur
Herausforderung „Multi-Channel“-ArchitekturOPEN KNOWLEDGE GmbH
 
Herausforderung „Multi-Channel Architecture”
Herausforderung „Multi-Channel Architecture”Herausforderung „Multi-Channel Architecture”
Herausforderung „Multi-Channel Architecture”OPEN KNOWLEDGE GmbH
 
Aus der Rubrik "Spaß mit Microservices": Transaktionen
Aus der Rubrik "Spaß mit Microservices": TransaktionenAus der Rubrik "Spaß mit Microservices": Transaktionen
Aus der Rubrik "Spaß mit Microservices": TransaktionenOPEN KNOWLEDGE GmbH
 
CQRS, der etwas andere Architekturansatz
CQRS, der etwas andere ArchitekturansatzCQRS, der etwas andere Architekturansatz
CQRS, der etwas andere ArchitekturansatzOPEN KNOWLEDGE GmbH
 
Modern Lightweight Enterprise Architectures mit Java
Modern Lightweight Enterprise Architectures mit JavaModern Lightweight Enterprise Architectures mit Java
Modern Lightweight Enterprise Architectures mit JavaOPEN KNOWLEDGE GmbH
 
Zukunftssichere Architekturen mit Microservices
Zukunftssichere Architekturen mit MicroservicesZukunftssichere Architekturen mit Microservices
Zukunftssichere Architekturen mit MicroservicesOPEN KNOWLEDGE GmbH
 
Mobile- & Offline-First: Mehr als nur Buzzword-Bingo
Mobile- & Offline-First: Mehr als nur Buzzword-BingoMobile- & Offline-First: Mehr als nur Buzzword-Bingo
Mobile- & Offline-First: Mehr als nur Buzzword-BingoOPEN KNOWLEDGE GmbH
 
Die Matrix: Enterprise-Architekturen jenseits von Microservices
Die Matrix: Enterprise-Architekturen jenseits von MicroservicesDie Matrix: Enterprise-Architekturen jenseits von Microservices
Die Matrix: Enterprise-Architekturen jenseits von MicroservicesOPEN KNOWLEDGE GmbH
 
Microservices Migration: Vom Monolithen zu Microservices
Microservices Migration: Vom Monolithen zu MicroservicesMicroservices Migration: Vom Monolithen zu Microservices
Microservices Migration: Vom Monolithen zu MicroservicesOPEN KNOWLEDGE GmbH
 
Offline-first Architekturen: Wer bitte braucht schon Internet
Offline-first Architekturen: Wer bitte braucht schon InternetOffline-first Architekturen: Wer bitte braucht schon Internet
Offline-first Architekturen: Wer bitte braucht schon InternetOPEN KNOWLEDGE GmbH
 
Web APIs jenseits von REST & Request/Response
Web APIs jenseits von REST & Request/ResponseWeb APIs jenseits von REST & Request/Response
Web APIs jenseits von REST & Request/ResponseOPEN KNOWLEDGE GmbH
 
Web Analytics - TWT Agentur Vorstellung
Web Analytics - TWT Agentur Vorstellung Web Analytics - TWT Agentur Vorstellung
Web Analytics - TWT Agentur Vorstellung TWT
 

Ähnlich wie Shared Data in verteilten Architekturen (20)

Von „less Server“ bis „Serverless“: Wie viel Cloud soll es sein?
Von „less Server“ bis „Serverless“: Wie viel Cloud soll es sein?Von „less Server“ bis „Serverless“: Wie viel Cloud soll es sein?
Von „less Server“ bis „Serverless“: Wie viel Cloud soll es sein?
 
Hilfe, ich will meinen Monolithen zurück!
Hilfe, ich will meinen Monolithen zurück!Hilfe, ich will meinen Monolithen zurück!
Hilfe, ich will meinen Monolithen zurück!
 
Herausforderung „Multi-Channel“-Architektur
Herausforderung „Multi-Channel“-ArchitekturHerausforderung „Multi-Channel“-Architektur
Herausforderung „Multi-Channel“-Architektur
 
Herausforderung „Multi-Channel Architecture”
Herausforderung „Multi-Channel Architecture”Herausforderung „Multi-Channel Architecture”
Herausforderung „Multi-Channel Architecture”
 
Aus der Rubrik "Spaß mit Microservices": Transaktionen
Aus der Rubrik "Spaß mit Microservices": TransaktionenAus der Rubrik "Spaß mit Microservices": Transaktionen
Aus der Rubrik "Spaß mit Microservices": Transaktionen
 
Hands-On Microservices mit Java
Hands-On Microservices mit JavaHands-On Microservices mit Java
Hands-On Microservices mit Java
 
CQRS, der etwas andere Architekturansatz
CQRS, der etwas andere ArchitekturansatzCQRS, der etwas andere Architekturansatz
CQRS, der etwas andere Architekturansatz
 
Modern Lightweight Enterprise Architectures mit Java
Modern Lightweight Enterprise Architectures mit JavaModern Lightweight Enterprise Architectures mit Java
Modern Lightweight Enterprise Architectures mit Java
 
Zukunftssichere Architekturen mit Microservices
Zukunftssichere Architekturen mit MicroservicesZukunftssichere Architekturen mit Microservices
Zukunftssichere Architekturen mit Microservices
 
Mobile- & Offline-First: Mehr als nur Buzzword-Bingo
Mobile- & Offline-First: Mehr als nur Buzzword-BingoMobile- & Offline-First: Mehr als nur Buzzword-Bingo
Mobile- & Offline-First: Mehr als nur Buzzword-Bingo
 
Die Matrix: Enterprise-Architekturen jenseits von Microservices
Die Matrix: Enterprise-Architekturen jenseits von MicroservicesDie Matrix: Enterprise-Architekturen jenseits von Microservices
Die Matrix: Enterprise-Architekturen jenseits von Microservices
 
Microservices Migration: Vom Monolithen zu Microservices
Microservices Migration: Vom Monolithen zu MicroservicesMicroservices Migration: Vom Monolithen zu Microservices
Microservices Migration: Vom Monolithen zu Microservices
 
Offline-first Architekturen: Wer bitte braucht schon Internet
Offline-first Architekturen: Wer bitte braucht schon InternetOffline-first Architekturen: Wer bitte braucht schon Internet
Offline-first Architekturen: Wer bitte braucht schon Internet
 
Java EE meets Microservices
Java EE meets MicroservicesJava EE meets Microservices
Java EE meets Microservices
 
Less Server vs. Serverless?
Less Server vs. Serverless?Less Server vs. Serverless?
Less Server vs. Serverless?
 
App-Delivery-Pipeline
App-Delivery-PipelineApp-Delivery-Pipeline
App-Delivery-Pipeline
 
Web-API Design in Java
Web-API Design in JavaWeb-API Design in Java
Web-API Design in Java
 
Web APIs jenseits von REST & Request/Response
Web APIs jenseits von REST & Request/ResponseWeb APIs jenseits von REST & Request/Response
Web APIs jenseits von REST & Request/Response
 
IT Outsourcing Agentur Berlin
IT Outsourcing Agentur BerlinIT Outsourcing Agentur Berlin
IT Outsourcing Agentur Berlin
 
Web Analytics - TWT Agentur Vorstellung
Web Analytics - TWT Agentur Vorstellung Web Analytics - TWT Agentur Vorstellung
Web Analytics - TWT Agentur Vorstellung
 

Mehr von OPEN KNOWLEDGE GmbH

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

Mehr von OPEN KNOWLEDGE GmbH (20)

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

Shared Data in verteilten Architekturen