SlideShare ist ein Scribd-Unternehmen logo
1 von 187
Downloaden Sie, um offline zu lesen
Shared Data
in verteilten Architekturen
#WISSENTEILEN
Lars Röwekamp (CIO New Technologies)
@mobileLarson | @_openknowledge
@mobileLarson
CIO New Technologies
OPEN KNOWLEDGE
Lars Röwekamp
Architecture
Microservices
Cloud
AI & ML
<
<
<
<
#WISSENTEILEN
ÜBER OPEN KNOWLEDGE
Branchenneutrale Softwareentwicklung & IT-Beratung
#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
MI CR O
SER VI CES
ARCHI TEC TURE
So will ich
arbeiten!
#WISSENTEILEN
MI CR O
SER VI CES
ARCHI TEC TURE
unabhängig
• entwickeln
• testen
• deployen
• skalieren
So will ich
arbeiten!
#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
Database
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 …
Konzept:
Ein spezieller Service
CustOrders liefert die
gewünschte Übersicht.
#WISSENTEILEN
Cust
Orders
GET customerorders/123 …
Konzept:
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ösungsidee:
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ösungsidee:
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ösungsidee:
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ösungsidee:
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ösungsidee:
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ösungsidee:
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
Lösungsidee #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
Herausforderung:
Die dafür benötigten
Infos der Kunden und
Bestellungen liegen in
unterschiedlichen
Services.
#WISSENTEILEN
Cust
Orders
Orders
Customer
Lösungsidee #2:
Ein spezieller Service
CustOrders hält die
gewünschte Übersicht in
einer eigenen DB vor.*
Herausforderung #2:
Ä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
Data change
benötigte Daten von
Customer & Order
Domain Event:
„Order changed“
Lösungsidee #2+:
Der CustOrders Service
wird via Domänen-Event
über die Änderung
“informiert“.
Herausforderung #2:
Änderungen an den
Originaldaten müssen
propagiert werden.
*Integration der Daten
lesend via Replikat
schreibend via Data Owner
#WISSENTEILEN
Cust
Orders
Orders
Customer
*Integration der Daten
lesend via optimiertem Replikat
schreibend via Data Owner
Data change
Domain Event:
„Order changed“
„Materialized View“*
CustumerOrders
Lösungsidee #2+:
Der CustOrders Service
wird via Domänen-Event
über die Änderung
“informiert“.
Herausforderung #2:
Änderungen an den
Originaldaten müssen
propagiert werden.
#WISSENTEILEN
Cust
Orders
Orders
Customer
Data change
Domain Event:
„Order changed“
Lösungsidee #2+:
Der CustOrders Service
wird via Domänen-Event
über die Änderung
“informiert“.
Herausforderung #2:
Ä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ösungsidee #2+:
Der CustOrders Service
wird via Domänen-Event
über die Änderung
“informiert“.
Herausforderung #2:
Ä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
#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:
Der Bestell-Service wird
via Domänen-Event über
Löschung des Kunden
Informiert.
Customer 123
Integrity out of sync
#WISSENTEILEN
Cust
Orders
Orders
Customer
Herausforderung:
Ein Kunde wird gelöscht.
Orders of Customer 123
Idee:
Der Bestell-Service wird
via Domänen-Event über
Löschung des Kunden
Informiert.
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:
Der Bestell-Service wird
via Domänen-Event über
Löschung des Kunden
Informiert.
Customer 123
Customer MQ customer 123 deleted
Integrity out of sync*
*eventual integrity
#WISSENTEILEN
Cust
Orders
Orders
Customer
Herausforderung:
Ein Kunde wird gelöscht.
Ist die so entstehende
Eventual Integrity
fachlich akzeptabel?
Wenn ja, alles OK.
Wenn nein, …
Orders of Customer 123
Idee:
Der Bestell-Service wird
via Domänen-Event über
Löschung des Kunden
Informiert.
Customer 123
Integrity in sync
Customer MQ
#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:
Der Kunde wird lediglich
als gelöscht markiert und
die APIs Bedarf angepasst.
#WISSENTEILEN
Cust
Orders
Orders
Customer
Idee #2:
Der Kunde wird lediglich
als gelöscht markiert und
die APIs Bedarf angepasst.
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:
Der Kunde wird lediglich
als gelöscht markiert und
die APIs Bedarf angepasst.
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:
Der Kunde wird lediglich
als gelöscht markiert und
die APIs Bedarf angepasst.
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
Konsistenz
von Daten
über Servicegrenzen hinweg
A B
TX
#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
(Quelle: Microservices Pattern, Chris Richardson)
#WISSENTEILEN
(Quelle: Microservices Pattern, Chris Richardson)
#WISSENTEILEN
Wie garantiere ich
die Konsistenz der Daten
über Servicegrenzen
hinweg?
#WISSENTEILEN
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
Was ihr
mitnehmen
solltet.
Wow, das ist ja
wirklich einfach.
Was kann da bitte
schon schiefgehen?
#WISSENTEILEN
Die
„Saga“
Strategie
#WISSENTEILEN
Die
„Saga“
Strategie
#WISSENTEILEN
Die
„Saga“
Strategie
CA = Compensation Action a.k.a.
Compensation Transaction
#WISSENTEILEN
Die
„Saga“
Strategie
CA = Compensation Action a.k.a.
Compensation Transaction
„Every Ti has its Ci“
#WISSENTEILEN
Verteilte Transaktionen via SAGAs
• wohldefinierte Abfolge von Compensation
Actions realisieren verteiltes Rollback
• Compensation Actions 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 = PENDING
APPORVED
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
*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
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!
* SAGA = ACD (ACID ohne Isolation)
#WISSENTEILEN
Fehlende Isolation: „lost updates“
create order SAGA
ORDER
create
#WISSENTEILEN
Fehlende Isolation: „lost updates“
create order SAGA
ORDER
create
cancel order SAGA
cancel
#WISSENTEILEN
Fehlende Isolation: „lost updates“
create order SAGA
ORDER
create approve
cancel order SAGA
cancel
#WISSENTEILEN
Fehlende Isolation: „dirty reads“
cancel order SAGA
CUSTOMER
increase credit
(from 0 to 100)
order value = 100
#WISSENTEILEN
Fehlende Isolation: „dirty reads“
cancel order SAGA
CUSTOMER
increase credit
(from 0 to 100)
delivery can‘t
be stopped
- CA needed!
#WISSENTEILEN
Fehlende Isolation: „dirty reads“
cancel order SAGA
CUSTOMER
increase credit
(from 0 to 100)
delivery can‘t
be stopped
- CA needed!
decrease credit (CA)
(from 100 to 0)
#WISSENTEILEN
Fehlende Isolation: „dirty reads“
cancel order SAGA
CUSTOMER
create order SAGA
decrease credit
(to 10)
read credit
(100)
increase credit
(from 0 to 100)
decrease credit (CA)
(from 100 to 0)
#WISSENTEILEN
Fehlende Isolation: „dirty reads“
cancel order SAGA
CUSTOMER
create order SAGA
decrease credit
(to 10)
read credit
(100)
increase credit
(from 0 to 100)
decrease credit (CA)
(from 100 to 0)
#WISSENTEILEN
Was ihr
mitnehmen
solltet. Cool,
verstanden.
#WISSENTEILEN
Was ihr
mitnehmen
solltet.
#WISSENTEILEN
„Microservices ohne
Database-per-Service
macht keinen Sinn.“
#WISSENTEILEN
„Es kann nur
eine gültige Quelle
je Entität geben.“
#WISSENTEILEN
„Denke in
fachlichen
statt in technischen
Transaktionen.“
#WISSENTEILEN
„Denke in Domänen
statt in Entitäten.“
#WISSENTEILEN
„Nutze
Domänen-Events
zur Kommunikation von
Entitäten-Änderungen.“
#WISSENTEILEN
„Verwende
Aggregation
zur Kommunikation von
Massenänderungen.“
#WISSENTEILEN
Shared Data in
verteilten Architekturen
Lars Röwekamp | @mobileLarson
BESTEN DANK!
#WISSENTEILEN
Microservices Pattern
#WISSENTEILEN
Shared Data in
verteilten Architekturen
Lars Röwekamp | @mobileLarson
Feedback
erwünscht!
#WISSENTEILEN
Microservices Pattern
#WISSENTEILEN
© Sharon McCutcheon – pexels.com (Folie 01)
© Monstera – pexels.com (Folie 04)
© Andrea Piascquadio – pexels.com (Folie 21, 22, 248)
© Gert Altmann – pexels.com (Folie 177)
Alle weiteren Bilder und Icons der Präsentation sind entweder von pexels.com,
pixabay.com, unsplash.com, flaticon.com oder von mir selbst erstellt.
Bildernachweis

Weitere ähnliche Inhalte

Was ist angesagt?

Mehr Sicherheit durch Automatisierung
Mehr Sicherheit durch AutomatisierungMehr Sicherheit durch Automatisierung
Mehr Sicherheit durch AutomatisierungOPEN KNOWLEDGE GmbH
 
Spaß mit Microservices: Transaktionen
Spaß mit Microservices: TransaktionenSpaß mit Microservices: Transaktionen
Spaß mit Microservices: TransaktionenOPEN KNOWLEDGE GmbH
 
Auf gehts in die Cloud: „Das kann doch nicht so schwer sein!“
Auf gehts in die Cloud: „Das kann doch nicht so schwer sein!“Auf gehts in die Cloud: „Das kann doch nicht so schwer sein!“
Auf gehts in die Cloud: „Das kann doch nicht so schwer sein!“OPEN KNOWLEDGE GmbH
 
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
 
API-Design, Microarchitecture und Testing
API-Design, Microarchitecture und TestingAPI-Design, Microarchitecture und Testing
API-Design, Microarchitecture und TestingOPEN KNOWLEDGE GmbH
 
Microservices Architecture: Architektur und Patterns
Microservices Architecture: Architektur und PatternsMicroservices Architecture: Architektur und Patterns
Microservices Architecture: Architektur und PatternsOPEN 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
 
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
 
Web-API-Design jenseits von REST und Request/Response
Web-API-Design jenseits von REST und Request/ResponseWeb-API-Design jenseits von REST und Request/Response
Web-API-Design jenseits von REST und Request/ResponseOPEN KNOWLEDGE GmbH
 
Das passende Backend für meine Apps
Das passende Backend für meine AppsDas passende Backend für meine Apps
Das passende Backend für meine AppsOPEN KNOWLEDGE GmbH
 
Herausforderung „Multi-Channel Architecture”
Herausforderung „Multi-Channel Architecture”Herausforderung „Multi-Channel Architecture”
Herausforderung „Multi-Channel Architecture”OPEN KNOWLEDGE GmbH
 
CQRS, der etwas andere Architekturansatz
CQRS, der etwas andere ArchitekturansatzCQRS, der etwas andere Architekturansatz
CQRS, der etwas andere ArchitekturansatzOPEN 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
 
Herausforderung „Multi-Channel“-Architektur
Herausforderung „Multi-Channel“-ArchitekturHerausforderung „Multi-Channel“-Architektur
Herausforderung „Multi-Channel“-ArchitekturOPEN 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
 
Amazon Lightsail Webinar
Amazon Lightsail WebinarAmazon Lightsail Webinar
Amazon Lightsail WebinarAWS Germany
 

Was ist angesagt? (20)

Enterprise Java on Steroids
Enterprise Java on SteroidsEnterprise Java on Steroids
Enterprise Java on Steroids
 
Mehr Sicherheit durch Automatisierung
Mehr Sicherheit durch AutomatisierungMehr Sicherheit durch Automatisierung
Mehr Sicherheit durch Automatisierung
 
Spaß mit Microservices: Transaktionen
Spaß mit Microservices: TransaktionenSpaß mit Microservices: Transaktionen
Spaß mit Microservices: Transaktionen
 
Auf gehts in die Cloud: „Das kann doch nicht so schwer sein!“
Auf gehts in die Cloud: „Das kann doch nicht so schwer sein!“Auf gehts in die Cloud: „Das kann doch nicht so schwer sein!“
Auf gehts in die Cloud: „Das kann doch nicht so schwer 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?
Von „less Server“ bis „Serverless“: Wie viel Cloud soll es sein?
 
API-Design, Microarchitecture und Testing
API-Design, Microarchitecture und TestingAPI-Design, Microarchitecture und Testing
API-Design, Microarchitecture und Testing
 
Serverless Survival Guide
Serverless Survival GuideServerless Survival Guide
Serverless Survival Guide
 
Microservices Architecture: Architektur und Patterns
Microservices Architecture: Architektur und PatternsMicroservices Architecture: Architektur und Patterns
Microservices Architecture: Architektur und Patterns
 
Microservices Migration: Vom Monolithen zu Microservices
Microservices Migration: Vom Monolithen zu MicroservicesMicroservices Migration: Vom Monolithen zu Microservices
Microservices Migration: Vom Monolithen zu Microservices
 
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?
 
Web-API-Design jenseits von REST und Request/Response
Web-API-Design jenseits von REST und Request/ResponseWeb-API-Design jenseits von REST und Request/Response
Web-API-Design jenseits von REST und Request/Response
 
Less Server vs. Serverless?
Less Server vs. Serverless?Less Server vs. Serverless?
Less Server vs. Serverless?
 
Das passende Backend für meine Apps
Das passende Backend für meine AppsDas passende Backend für meine Apps
Das passende Backend für meine Apps
 
Business-Mehrwert durch KI
Business-Mehrwert durch KIBusiness-Mehrwert durch KI
Business-Mehrwert durch KI
 
Herausforderung „Multi-Channel Architecture”
Herausforderung „Multi-Channel Architecture”Herausforderung „Multi-Channel Architecture”
Herausforderung „Multi-Channel Architecture”
 
CQRS, der etwas andere Architekturansatz
CQRS, der etwas andere ArchitekturansatzCQRS, der etwas andere Architekturansatz
CQRS, der etwas andere Architekturansatz
 
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
 
Herausforderung „Multi-Channel“-Architektur
Herausforderung „Multi-Channel“-ArchitekturHerausforderung „Multi-Channel“-Architektur
Herausforderung „Multi-Channel“-Architektur
 
Modern Lightweight Enterprise Architectures mit Java
Modern Lightweight Enterprise Architectures mit JavaModern Lightweight Enterprise Architectures mit Java
Modern Lightweight Enterprise Architectures mit Java
 
Amazon Lightsail Webinar
Amazon Lightsail WebinarAmazon Lightsail Webinar
Amazon Lightsail Webinar
 

Ähnlich wie Shared Data in verteilten Systemen

Shared Data in verteilten Architekturen
Shared Data in verteilten ArchitekturenShared Data in verteilten Architekturen
Shared Data in verteilten ArchitekturenOPEN KNOWLEDGE GmbH
 
Mittendrin statt nur dabei: Microservices und Transaktionen
Mittendrin statt nur dabei: Microservices und TransaktionenMittendrin statt nur dabei: Microservices und Transaktionen
Mittendrin statt nur dabei: Microservices und TransaktionenOPEN 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
 
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
 
Azure SQL Database vs. Azure SQL Data Warehouse
Azure SQL Database vs. Azure SQL Data WarehouseAzure SQL Database vs. Azure SQL Data Warehouse
Azure SQL Database vs. Azure SQL Data WarehousepmOne Analytics 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
 
Wie SAP Emarsys Customer Engagement Sie optimal bei der Erreichung Ihrer Mar...
 Wie SAP Emarsys Customer Engagement Sie optimal bei der Erreichung Ihrer Mar... Wie SAP Emarsys Customer Engagement Sie optimal bei der Erreichung Ihrer Mar...
Wie SAP Emarsys Customer Engagement Sie optimal bei der Erreichung Ihrer Mar...IBsolution GmbH
 
E-Commerce Total: Manuskript zu Folge 18: Professionelle Online-Shop Entwicklung
E-Commerce Total: Manuskript zu Folge 18: Professionelle Online-Shop EntwicklungE-Commerce Total: Manuskript zu Folge 18: Professionelle Online-Shop Entwicklung
E-Commerce Total: Manuskript zu Folge 18: Professionelle Online-Shop EntwicklungHenrik Steffen
 
Etecture Blockchain MeetUp
Etecture Blockchain MeetUpEtecture Blockchain MeetUp
Etecture Blockchain MeetUpRoman Kessler
 
Confluent DCCS Retail Webinare - Kundenerwartungen im Wandel
Confluent DCCS Retail Webinare - Kundenerwartungen im WandelConfluent DCCS Retail Webinare - Kundenerwartungen im Wandel
Confluent DCCS Retail Webinare - Kundenerwartungen im Wandelconfluent
 
API-First Design mit Swagger/OAS
API-First Design mit Swagger/OASAPI-First Design mit Swagger/OAS
API-First Design mit Swagger/OASOPEN KNOWLEDGE GmbH
 
Web Analytics - TWT Agentur Vorstellung
Web Analytics - TWT Agentur Vorstellung Web Analytics - TWT Agentur Vorstellung
Web Analytics - TWT Agentur Vorstellung TWT
 
TV Tracking mit Hilfe von Web Analyse
TV Tracking mit Hilfe von Web AnalyseTV Tracking mit Hilfe von Web Analyse
TV Tracking mit Hilfe von Web AnalyseAT Internet
 
Mehrere Apps, ein Backend: Windows Azure Mobile Services in der Praxis
Mehrere Apps, ein Backend: Windows Azure Mobile Services in der PraxisMehrere Apps, ein Backend: Windows Azure Mobile Services in der Praxis
Mehrere Apps, ein Backend: Windows Azure Mobile Services in der PraxisJan Hentschel
 
Windows Azure Mobile Services
Windows Azure Mobile ServicesWindows Azure Mobile Services
Windows Azure Mobile ServicesJan Hentschel
 

Ähnlich wie Shared Data in verteilten Systemen (20)

Shared Data in verteilten Architekturen
Shared Data in verteilten ArchitekturenShared Data in verteilten Architekturen
Shared Data in verteilten Architekturen
 
Mittendrin statt nur dabei: Microservices und Transaktionen
Mittendrin statt nur dabei: Microservices und TransaktionenMittendrin statt nur dabei: Microservices und Transaktionen
Mittendrin statt nur dabei: Microservices und Transaktionen
 
Hands-On Microservices mit Java
Hands-On Microservices mit JavaHands-On Microservices mit Java
Hands-On Microservices mit Java
 
Web-API Design in Java
Web-API Design in JavaWeb-API Design in Java
Web-API Design in Java
 
App-Delivery-Pipeline
App-Delivery-PipelineApp-Delivery-Pipeline
App-Delivery-Pipeline
 
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
 
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
 
Azure SQL Database vs. Azure SQL Data Warehouse
Azure SQL Database vs. Azure SQL Data WarehouseAzure SQL Database vs. Azure SQL Data Warehouse
Azure SQL Database vs. Azure SQL Data Warehouse
 
Java EE meets Microservices
Java EE meets MicroservicesJava EE meets Microservices
Java EE meets 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
 
Wie SAP Emarsys Customer Engagement Sie optimal bei der Erreichung Ihrer Mar...
 Wie SAP Emarsys Customer Engagement Sie optimal bei der Erreichung Ihrer Mar... Wie SAP Emarsys Customer Engagement Sie optimal bei der Erreichung Ihrer Mar...
Wie SAP Emarsys Customer Engagement Sie optimal bei der Erreichung Ihrer Mar...
 
IT Outsourcing Agentur Berlin
IT Outsourcing Agentur BerlinIT Outsourcing Agentur Berlin
IT Outsourcing Agentur Berlin
 
E-Commerce Total: Manuskript zu Folge 18: Professionelle Online-Shop Entwicklung
E-Commerce Total: Manuskript zu Folge 18: Professionelle Online-Shop EntwicklungE-Commerce Total: Manuskript zu Folge 18: Professionelle Online-Shop Entwicklung
E-Commerce Total: Manuskript zu Folge 18: Professionelle Online-Shop Entwicklung
 
Etecture Blockchain MeetUp
Etecture Blockchain MeetUpEtecture Blockchain MeetUp
Etecture Blockchain MeetUp
 
Confluent DCCS Retail Webinare - Kundenerwartungen im Wandel
Confluent DCCS Retail Webinare - Kundenerwartungen im WandelConfluent DCCS Retail Webinare - Kundenerwartungen im Wandel
Confluent DCCS Retail Webinare - Kundenerwartungen im Wandel
 
API-First Design mit Swagger/OAS
API-First Design mit Swagger/OASAPI-First Design mit Swagger/OAS
API-First Design mit Swagger/OAS
 
Web Analytics - TWT Agentur Vorstellung
Web Analytics - TWT Agentur Vorstellung Web Analytics - TWT Agentur Vorstellung
Web Analytics - TWT Agentur Vorstellung
 
TV Tracking mit Hilfe von Web Analyse
TV Tracking mit Hilfe von Web AnalyseTV Tracking mit Hilfe von Web Analyse
TV Tracking mit Hilfe von Web Analyse
 
Mehrere Apps, ein Backend: Windows Azure Mobile Services in der Praxis
Mehrere Apps, ein Backend: Windows Azure Mobile Services in der PraxisMehrere Apps, ein Backend: Windows Azure Mobile Services in der Praxis
Mehrere Apps, ein Backend: Windows Azure Mobile Services in der Praxis
 
Windows Azure Mobile Services
Windows Azure Mobile ServicesWindows Azure Mobile Services
Windows Azure Mobile Services
 

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
 
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
 
Maschinen ohne Gewissen: wenn KI auf Ethik trifft
Maschinen ohne Gewissen: wenn KI auf Ethik trifftMaschinen ohne Gewissen: wenn KI auf Ethik trifft
Maschinen ohne Gewissen: wenn KI auf Ethik trifftOPEN KNOWLEDGE GmbH
 
Modern Web: Trends der Webentwicklung
Modern Web: Trends der WebentwicklungModern Web: Trends der Webentwicklung
Modern Web: Trends der WebentwicklungOPEN KNOWLEDGE GmbH
 

Mehr von OPEN KNOWLEDGE GmbH (16)

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
 
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...
 
Maschinen ohne Gewissen: wenn KI auf Ethik trifft
Maschinen ohne Gewissen: wenn KI auf Ethik trifftMaschinen ohne Gewissen: wenn KI auf Ethik trifft
Maschinen ohne Gewissen: wenn KI auf Ethik trifft
 
Modern Web: Trends der Webentwicklung
Modern Web: Trends der WebentwicklungModern Web: Trends der Webentwicklung
Modern Web: Trends der Webentwicklung
 

Shared Data in verteilten Systemen