Download - CQRS, der etwas andere Architekturansatz
![Page 1: CQRS, der etwas andere Architekturansatz](https://reader030.vdocuments.pub/reader030/viewer/2022020410/5882bdde1a28abb2478b54c1/html5/thumbnails/1.jpg)
C Q R SDer etwas andere Architekturansatz
Lars RöwekampCIO New Technologies
@mobileLarson@_openknowledge
#WISSENTEILEN
![Page 2: CQRS, der etwas andere Architekturansatz](https://reader030.vdocuments.pub/reader030/viewer/2022020410/5882bdde1a28abb2478b54c1/html5/thumbnails/2.jpg)
Branchenneutrale Softwareentwicklung und IT-Beratung
ÜBER OPEN KNOWLEDGE
#WISSENTEILEN
![Page 3: CQRS, der etwas andere Architekturansatz](https://reader030.vdocuments.pub/reader030/viewer/2022020410/5882bdde1a28abb2478b54c1/html5/thumbnails/3.jpg)
Lars Röwekamp (a.k.a. @mobileLarson)
ÜBER MICH
LR
#WISSENTEILEN
Wer bin ich - und wen ja, wie viele?
• CIO New Technologies • Enterprise & Mobile • Autor, Speaker, Coach & Mentor
• Snowboard & MTB Enthusiast• mehrfacher Vater, einfacher Ehemann
![Page 4: CQRS, der etwas andere Architekturansatz](https://reader030.vdocuments.pub/reader030/viewer/2022020410/5882bdde1a28abb2478b54c1/html5/thumbnails/4.jpg)
Es könnte alles so einfach sein!
![Page 5: CQRS, der etwas andere Architekturansatz](https://reader030.vdocuments.pub/reader030/viewer/2022020410/5882bdde1a28abb2478b54c1/html5/thumbnails/5.jpg)
#WISSENTEILEN
CQRS
![Page 6: CQRS, der etwas andere Architekturansatz](https://reader030.vdocuments.pub/reader030/viewer/2022020410/5882bdde1a28abb2478b54c1/html5/thumbnails/6.jpg)
#WISSENTEILEN
CQRS
![Page 7: CQRS, der etwas andere Architekturansatz](https://reader030.vdocuments.pub/reader030/viewer/2022020410/5882bdde1a28abb2478b54c1/html5/thumbnails/7.jpg)
#WISSENTEILEN
CQRS
Greetingsfrom
Eric
![Page 8: CQRS, der etwas andere Architekturansatz](https://reader030.vdocuments.pub/reader030/viewer/2022020410/5882bdde1a28abb2478b54c1/html5/thumbnails/8.jpg)
#WISSENTEILEN
CQRS
Greetingsfrom
Eric
![Page 9: CQRS, der etwas andere Architekturansatz](https://reader030.vdocuments.pub/reader030/viewer/2022020410/5882bdde1a28abb2478b54c1/html5/thumbnails/9.jpg)
#WISSENTEILEN
CQRS
Greetingsfrom
Eric
In sich konsistentes Modell viaAggregates, Entities, Value Objects, Builder, Services, Repositories, ...
Validierung, Relationen, Mapping, Rules ...
![Page 10: CQRS, der etwas andere Architekturansatz](https://reader030.vdocuments.pub/reader030/viewer/2022020410/5882bdde1a28abb2478b54c1/html5/thumbnails/10.jpg)
Isses aber nich ...
![Page 11: CQRS, der etwas andere Architekturansatz](https://reader030.vdocuments.pub/reader030/viewer/2022020410/5882bdde1a28abb2478b54c1/html5/thumbnails/11.jpg)
#WISSENTEILEN
CQRS
Greetingsfrom
Eric
In sich konsistentes Modell viaAggregates, Entities, Value Objects, Builder, Services, Repositories, ...
Validierung, Relationen, Mapping, Rules ...
![Page 12: CQRS, der etwas andere Architekturansatz](https://reader030.vdocuments.pub/reader030/viewer/2022020410/5882bdde1a28abb2478b54c1/html5/thumbnails/12.jpg)
#WISSENTEILEN
CQRS Write
![Page 13: CQRS, der etwas andere Architekturansatz](https://reader030.vdocuments.pub/reader030/viewer/2022020410/5882bdde1a28abb2478b54c1/html5/thumbnails/13.jpg)
#WISSENTEILEN
CQRS Read
![Page 14: CQRS, der etwas andere Architekturansatz](https://reader030.vdocuments.pub/reader030/viewer/2022020410/5882bdde1a28abb2478b54c1/html5/thumbnails/14.jpg)
#WISSENTEILEN
CQRS
![Page 15: CQRS, der etwas andere Architekturansatz](https://reader030.vdocuments.pub/reader030/viewer/2022020410/5882bdde1a28abb2478b54c1/html5/thumbnails/15.jpg)
#WISSENTEILEN
CQRS ReadWrite
![Page 16: CQRS, der etwas andere Architekturansatz](https://reader030.vdocuments.pub/reader030/viewer/2022020410/5882bdde1a28abb2478b54c1/html5/thumbnails/16.jpg)
#WISSENTEILEN
CQRS
![Page 17: CQRS, der etwas andere Architekturansatz](https://reader030.vdocuments.pub/reader030/viewer/2022020410/5882bdde1a28abb2478b54c1/html5/thumbnails/17.jpg)
#WISSENTEILEN
CQRS
![Page 18: CQRS, der etwas andere Architekturansatz](https://reader030.vdocuments.pub/reader030/viewer/2022020410/5882bdde1a28abb2478b54c1/html5/thumbnails/18.jpg)
#WISSENTEILEN
CQRS
![Page 19: CQRS, der etwas andere Architekturansatz](https://reader030.vdocuments.pub/reader030/viewer/2022020410/5882bdde1a28abb2478b54c1/html5/thumbnails/19.jpg)
#WISSENTEILEN
CQRS
Verletzung des SRP auf Architekturebene
![Page 20: CQRS, der etwas andere Architekturansatz](https://reader030.vdocuments.pub/reader030/viewer/2022020410/5882bdde1a28abb2478b54c1/html5/thumbnails/20.jpg)
#WISSENTEILEN
CQRS
Benutzerinteraktion vs. Datenbereitstellung
![Page 21: CQRS, der etwas andere Architekturansatz](https://reader030.vdocuments.pub/reader030/viewer/2022020410/5882bdde1a28abb2478b54c1/html5/thumbnails/21.jpg)
#WISSENTEILEN
CQRS
Domänen-Modell als Kompromiss für „Read“ & „Write“
![Page 22: CQRS, der etwas andere Architekturansatz](https://reader030.vdocuments.pub/reader030/viewer/2022020410/5882bdde1a28abb2478b54c1/html5/thumbnails/22.jpg)
CQRS
#WISSENTEILEN
Domänen-Modell als Kompromiss für R & W
• Business vs. Technologie? • Entities, DTOs, VOs?• Architektur Over-Engineering• Optimistic Locking• Caching
![Page 23: CQRS, der etwas andere Architekturansatz](https://reader030.vdocuments.pub/reader030/viewer/2022020410/5882bdde1a28abb2478b54c1/html5/thumbnails/23.jpg)
CQRS
#WISSENTEILEN
Domänen-Modell als Kompromiss für R & W
• Read vs. Write Performance• Read vs. Write Skalierung• Read vs. Write Optimierung
![Page 24: CQRS, der etwas andere Architekturansatz](https://reader030.vdocuments.pub/reader030/viewer/2022020410/5882bdde1a28abb2478b54c1/html5/thumbnails/24.jpg)
CQRS
#WISSENTEILEN
Klassische Ein-Domänen Architektur
Die Komplexität der Änderungen & Erweiterungen steigt mit der Komplexität des Domänenmodells
![Page 25: CQRS, der etwas andere Architekturansatz](https://reader030.vdocuments.pub/reader030/viewer/2022020410/5882bdde1a28abb2478b54c1/html5/thumbnails/25.jpg)
„A single model cannot beappropriate for reporting,
searching, and transactionalbehaviors.” Greg Young
![Page 26: CQRS, der etwas andere Architekturansatz](https://reader030.vdocuments.pub/reader030/viewer/2022020410/5882bdde1a28abb2478b54c1/html5/thumbnails/26.jpg)
„Every method should either bea command, that performs an action or a query that returns
data to the caller, but not both.”Bertrand Meyer
![Page 27: CQRS, der etwas andere Architekturansatz](https://reader030.vdocuments.pub/reader030/viewer/2022020410/5882bdde1a28abb2478b54c1/html5/thumbnails/27.jpg)
„Every method should either bea command, that performs an action or a query that returns
data to the caller, but not both.”Bertrand Meyer
![Page 28: CQRS, der etwas andere Architekturansatz](https://reader030.vdocuments.pub/reader030/viewer/2022020410/5882bdde1a28abb2478b54c1/html5/thumbnails/28.jpg)
Bertrand Meyer
C ommandQ ueryR ?S ?
![Page 29: CQRS, der etwas andere Architekturansatz](https://reader030.vdocuments.pub/reader030/viewer/2022020410/5882bdde1a28abb2478b54c1/html5/thumbnails/29.jpg)
Bertrand Meyer
C ommandQ ueryR esponsibilityS egregation
![Page 30: CQRS, der etwas andere Architekturansatz](https://reader030.vdocuments.pub/reader030/viewer/2022020410/5882bdde1a28abb2478b54c1/html5/thumbnails/30.jpg)
#WISSENTEILEN
CQRS
![Page 31: CQRS, der etwas andere Architekturansatz](https://reader030.vdocuments.pub/reader030/viewer/2022020410/5882bdde1a28abb2478b54c1/html5/thumbnails/31.jpg)
#WISSENTEILEN
CQRS
![Page 32: CQRS, der etwas andere Architekturansatz](https://reader030.vdocuments.pub/reader030/viewer/2022020410/5882bdde1a28abb2478b54c1/html5/thumbnails/32.jpg)
#WISSENTEILEN
CQRS
![Page 33: CQRS, der etwas andere Architekturansatz](https://reader030.vdocuments.pub/reader030/viewer/2022020410/5882bdde1a28abb2478b54c1/html5/thumbnails/33.jpg)
#WISSENTEILEN
CQRS
CreateCutomer
CutomerCreated
Find all Customers with ...
![Page 34: CQRS, der etwas andere Architekturansatz](https://reader030.vdocuments.pub/reader030/viewer/2022020410/5882bdde1a28abb2478b54c1/html5/thumbnails/34.jpg)
#WISSENTEILEN
CQRS// BEFORE: CRUD based interface with no DDD usage
interface CustomerService {
Customer createCustomer(Customer cust); void updateCustomer(Customer cust); void deleteCustomer(String id);
Customer getCustomer(String id); List<Customer> findCustomer(String query);
}
![Page 35: CQRS, der etwas andere Architekturansatz](https://reader030.vdocuments.pub/reader030/viewer/2022020410/5882bdde1a28abb2478b54c1/html5/thumbnails/35.jpg)
#WISSENTEILEN
CQRS// AFTER: CQRS based interfaces with DDD usage
interface CustomerQueryService {
Customer findCustomerWith(Name uniqueName);List<Customer> findAllCustomerMatching(SearchQuery sq);
}
interface CustomerCommandService {
Customer moveTo(Address newAddress);Customer marry(Name newName, Partner partner);
}
![Page 36: CQRS, der etwas andere Architekturansatz](https://reader030.vdocuments.pub/reader030/viewer/2022020410/5882bdde1a28abb2478b54c1/html5/thumbnails/36.jpg)
Und was bedeutet das für die
Architektur?
![Page 37: CQRS, der etwas andere Architekturansatz](https://reader030.vdocuments.pub/reader030/viewer/2022020410/5882bdde1a28abb2478b54c1/html5/thumbnails/37.jpg)
#WISSENTEILEN
CQRS
ReadSide...
• optimiertfürAbfragen• kurzeAntwortzeiten• unterschiedliche„Sichten“• einfachzuskalieren• möglichstdenormalisiert
WriteSide...
• „Kommandos“ausführen• Validierung• Datenkonsistenz• ACID• VerhaltenTeilderDomäne
![Page 38: CQRS, der etwas andere Architekturansatz](https://reader030.vdocuments.pub/reader030/viewer/2022020410/5882bdde1a28abb2478b54c1/html5/thumbnails/38.jpg)
#WISSENTEILEN
CQRS
![Page 39: CQRS, der etwas andere Architekturansatz](https://reader030.vdocuments.pub/reader030/viewer/2022020410/5882bdde1a28abb2478b54c1/html5/thumbnails/39.jpg)
#WISSENTEILEN
CQRS
![Page 40: CQRS, der etwas andere Architekturansatz](https://reader030.vdocuments.pub/reader030/viewer/2022020410/5882bdde1a28abb2478b54c1/html5/thumbnails/40.jpg)
#WISSENTEILEN
CQRS
![Page 41: CQRS, der etwas andere Architekturansatz](https://reader030.vdocuments.pub/reader030/viewer/2022020410/5882bdde1a28abb2478b54c1/html5/thumbnails/41.jpg)
#WISSENTEILEN
CQRS
![Page 42: CQRS, der etwas andere Architekturansatz](https://reader030.vdocuments.pub/reader030/viewer/2022020410/5882bdde1a28abb2478b54c1/html5/thumbnails/42.jpg)
#WISSENTEILEN
CQRS
![Page 43: CQRS, der etwas andere Architekturansatz](https://reader030.vdocuments.pub/reader030/viewer/2022020410/5882bdde1a28abb2478b54c1/html5/thumbnails/43.jpg)
#WISSENTEILEN
CQRS
![Page 44: CQRS, der etwas andere Architekturansatz](https://reader030.vdocuments.pub/reader030/viewer/2022020410/5882bdde1a28abb2478b54c1/html5/thumbnails/44.jpg)
#WISSENTEILEN
CQRS
![Page 45: CQRS, der etwas andere Architekturansatz](https://reader030.vdocuments.pub/reader030/viewer/2022020410/5882bdde1a28abb2478b54c1/html5/thumbnails/45.jpg)
#WISSENTEILEN
FAZIT
„Starbucksdoes notuseTwo-PhaseCommit“
http://www.enterpriseintegrationpatterns.com/ramblings/18_starbucks.html
![Page 46: CQRS, der etwas andere Architekturansatz](https://reader030.vdocuments.pub/reader030/viewer/2022020410/5882bdde1a28abb2478b54c1/html5/thumbnails/46.jpg)
#WISSENTEILEN
CQRS
![Page 47: CQRS, der etwas andere Architekturansatz](https://reader030.vdocuments.pub/reader030/viewer/2022020410/5882bdde1a28abb2478b54c1/html5/thumbnails/47.jpg)
#WISSENTEILEN
CQRS
![Page 48: CQRS, der etwas andere Architekturansatz](https://reader030.vdocuments.pub/reader030/viewer/2022020410/5882bdde1a28abb2478b54c1/html5/thumbnails/48.jpg)
#WISSENTEILEN
CQRS
![Page 49: CQRS, der etwas andere Architekturansatz](https://reader030.vdocuments.pub/reader030/viewer/2022020410/5882bdde1a28abb2478b54c1/html5/thumbnails/49.jpg)
#WISSENTEILEN
CQRS
![Page 50: CQRS, der etwas andere Architekturansatz](https://reader030.vdocuments.pub/reader030/viewer/2022020410/5882bdde1a28abb2478b54c1/html5/thumbnails/50.jpg)
#WISSENTEILEN
CQRS Write Read
![Page 51: CQRS, der etwas andere Architekturansatz](https://reader030.vdocuments.pub/reader030/viewer/2022020410/5882bdde1a28abb2478b54c1/html5/thumbnails/51.jpg)
Moment, was macht ihr da mit meinen
„Entities“?
![Page 52: CQRS, der etwas andere Architekturansatz](https://reader030.vdocuments.pub/reader030/viewer/2022020410/5882bdde1a28abb2478b54c1/html5/thumbnails/52.jpg)
#WISSENTEILEN
CQRS & Event Sourcing
... Änderungen „sammeln“ statt State updaten!
State vs. immutable Facts ...
BTW: Immutable!
![Page 53: CQRS, der etwas andere Architekturansatz](https://reader030.vdocuments.pub/reader030/viewer/2022020410/5882bdde1a28abb2478b54c1/html5/thumbnails/53.jpg)
#WISSENTEILEN
CQRS & Event Sourcing
... Änderungen „sammeln“ statt State updaten!
State vs. immutable Facts ...
BTW: Immutable!
![Page 54: CQRS, der etwas andere Architekturansatz](https://reader030.vdocuments.pub/reader030/viewer/2022020410/5882bdde1a28abb2478b54c1/html5/thumbnails/54.jpg)
#WISSENTEILEN
CQRS & Event Sourcing
... Änderungen „sammeln“ statt State updaten!
State vs. immutable Facts ...
![Page 55: CQRS, der etwas andere Architekturansatz](https://reader030.vdocuments.pub/reader030/viewer/2022020410/5882bdde1a28abb2478b54c1/html5/thumbnails/55.jpg)
#WISSENTEILEN
CQRS & Event Sourcing
... Änderungen „sammeln“ statt State updaten!
State vs. immutable Facts ...
![Page 56: CQRS, der etwas andere Architekturansatz](https://reader030.vdocuments.pub/reader030/viewer/2022020410/5882bdde1a28abb2478b54c1/html5/thumbnails/56.jpg)
CQRS & Event Sourcing
#WISSENTEILEN
Festhalten der Änderungen via Events
• speichern der Events in korrekter Reihenfolge• vollständige Historie implizit• keine „Updates“ oder „Deletes“• kein „Current State“
• „Current State“ ergibt sich durch „Replay“ der Events für einen bestimmten Zeitpunkt!
![Page 57: CQRS, der etwas andere Architekturansatz](https://reader030.vdocuments.pub/reader030/viewer/2022020410/5882bdde1a28abb2478b54c1/html5/thumbnails/57.jpg)
CQRS & Event Sourcing
#WISSENTEILEN
Festhalten der Änderungen via Events
• „Kein“ Locking bei konkurrierenden Zugriffen (Repräsentation durch zwei Events)
• Evolution des Models problemlos möglich (neueinspielen der Events)
• Tests auf Command- & Eventebene (wenn dieses Command, dann das Ergebnis)
![Page 58: CQRS, der etwas andere Architekturansatz](https://reader030.vdocuments.pub/reader030/viewer/2022020410/5882bdde1a28abb2478b54c1/html5/thumbnails/58.jpg)
WT#?
![Page 59: CQRS, der etwas andere Architekturansatz](https://reader030.vdocuments.pub/reader030/viewer/2022020410/5882bdde1a28abb2478b54c1/html5/thumbnails/59.jpg)
Wo bleibt da die Konsistenz?
![Page 60: CQRS, der etwas andere Architekturansatz](https://reader030.vdocuments.pub/reader030/viewer/2022020410/5882bdde1a28abb2478b54c1/html5/thumbnails/60.jpg)
#WISSENTEILEN
FAZIT
„Starbucksdoes notuseTwo-PhaseCommit“
http://www.enterpriseintegrationpatterns.com/ramblings/18_starbucks.html
![Page 61: CQRS, der etwas andere Architekturansatz](https://reader030.vdocuments.pub/reader030/viewer/2022020410/5882bdde1a28abb2478b54c1/html5/thumbnails/61.jpg)
Ist das nicht super langsam?
![Page 62: CQRS, der etwas andere Architekturansatz](https://reader030.vdocuments.pub/reader030/viewer/2022020410/5882bdde1a28abb2478b54c1/html5/thumbnails/62.jpg)
CQRS & Event Sourcing
#WISSENTEILEN
Ist das nicht super langsam?
• In der Regel wenige Events pro Aggregate
• Problem bei langlebenden Entities• Problem bei regelmäßigen Änderungen
• Snapshots als Lösung (Momento Pattern) • ABER: Events niemals ändern/löschen!
![Page 63: CQRS, der etwas andere Architekturansatz](https://reader030.vdocuments.pub/reader030/viewer/2022020410/5882bdde1a28abb2478b54c1/html5/thumbnails/63.jpg)
#WISSENTEILEN
CQRS & Event Sourcing
![Page 64: CQRS, der etwas andere Architekturansatz](https://reader030.vdocuments.pub/reader030/viewer/2022020410/5882bdde1a28abb2478b54c1/html5/thumbnails/64.jpg)
#WISSENTEILEN
CQRS & Event Sourcing
![Page 65: CQRS, der etwas andere Architekturansatz](https://reader030.vdocuments.pub/reader030/viewer/2022020410/5882bdde1a28abb2478b54c1/html5/thumbnails/65.jpg)
#WISSENTEILEN
CQRS & Event Sourcing
![Page 66: CQRS, der etwas andere Architekturansatz](https://reader030.vdocuments.pub/reader030/viewer/2022020410/5882bdde1a28abb2478b54c1/html5/thumbnails/66.jpg)
#WISSENTEILEN
CQRS & Event Sourcing
![Page 67: CQRS, der etwas andere Architekturansatz](https://reader030.vdocuments.pub/reader030/viewer/2022020410/5882bdde1a28abb2478b54c1/html5/thumbnails/67.jpg)
Still timefor a Demo?
![Page 68: CQRS, der etwas andere Architekturansatz](https://reader030.vdocuments.pub/reader030/viewer/2022020410/5882bdde1a28abb2478b54c1/html5/thumbnails/68.jpg)
#WISSENTEILEN
CQRS & Event Sourcing
(siehehttps://blog.jayway.com/2013/03/08/aggregates-event-sourcing-distilled/)
![Page 69: CQRS, der etwas andere Architekturansatz](https://reader030.vdocuments.pub/reader030/viewer/2022020410/5882bdde1a28abb2478b54c1/html5/thumbnails/69.jpg)
Muss das denn so kompliziert sein?
![Page 70: CQRS, der etwas andere Architekturansatz](https://reader030.vdocuments.pub/reader030/viewer/2022020410/5882bdde1a28abb2478b54c1/html5/thumbnails/70.jpg)
CQRS & Event Sourcing
#WISSENTEILEN
JA! Denn, ...
• es ist extrem schnell für den Anwender• es ist extrem einfach skalierbar• es ist extrem einfach erweiterbar• das Domänen-Modell bleibt konsistent
• Fehler können rekonstruiert werden• Auditing & History gibt es quasi geschenkt
![Page 71: CQRS, der etwas andere Architekturansatz](https://reader030.vdocuments.pub/reader030/viewer/2022020410/5882bdde1a28abb2478b54c1/html5/thumbnails/71.jpg)
#WISSENTEILEN
![Page 72: CQRS, der etwas andere Architekturansatz](https://reader030.vdocuments.pub/reader030/viewer/2022020410/5882bdde1a28abb2478b54c1/html5/thumbnails/72.jpg)
#WISSENTEILEN
FAZIT
![Page 73: CQRS, der etwas andere Architekturansatz](https://reader030.vdocuments.pub/reader030/viewer/2022020410/5882bdde1a28abb2478b54c1/html5/thumbnails/73.jpg)
#WISSENTEILEN
FAZIT
![Page 74: CQRS, der etwas andere Architekturansatz](https://reader030.vdocuments.pub/reader030/viewer/2022020410/5882bdde1a28abb2478b54c1/html5/thumbnails/74.jpg)
#WISSENTEILEN
FAZIT
![Page 75: CQRS, der etwas andere Architekturansatz](https://reader030.vdocuments.pub/reader030/viewer/2022020410/5882bdde1a28abb2478b54c1/html5/thumbnails/75.jpg)
#WISSENTEILEN
FAZIT
![Page 76: CQRS, der etwas andere Architekturansatz](https://reader030.vdocuments.pub/reader030/viewer/2022020410/5882bdde1a28abb2478b54c1/html5/thumbnails/76.jpg)
FAZIT
#WISSENTEILEN
Die Benefits
• Fachlichkeit im Fokus (auch im Code!)• Optimierung auf „Komponentenebene“• max. Performance für High-Load Szenarien• getrennte Evolution möglich (fachl./tech.)• detaillierte Nachverfolgung aller Vorgänge• Total Cost of Ownership
![Page 77: CQRS, der etwas andere Architekturansatz](https://reader030.vdocuments.pub/reader030/viewer/2022020410/5882bdde1a28abb2478b54c1/html5/thumbnails/77.jpg)
FAZIT
#WISSENTEILEN
Die Pitfals
• Komplexität gegenüber CRUD Anwendungen• Performance bei Event-Replay• Seiteneffekte durch Event-Replay / Snapshot• Eventual Consistency in Query Views• Concurrent Writes durch Commands• Ramp-Up Zeit
![Page 78: CQRS, der etwas andere Architekturansatz](https://reader030.vdocuments.pub/reader030/viewer/2022020410/5882bdde1a28abb2478b54c1/html5/thumbnails/78.jpg)
#WISSENTEILEN
Two modelsto rule them all.
FAZIT
![Page 79: CQRS, der etwas andere Architekturansatz](https://reader030.vdocuments.pub/reader030/viewer/2022020410/5882bdde1a28abb2478b54c1/html5/thumbnails/79.jpg)
#WISSENTEILEN
Focus on Business first!
FAZIT
![Page 80: CQRS, der etwas andere Architekturansatz](https://reader030.vdocuments.pub/reader030/viewer/2022020410/5882bdde1a28abb2478b54c1/html5/thumbnails/80.jpg)
#WISSENTEILEN
Schrei nach Consistencyist meist das Fehlen eines
fachlichen Plan B!
FAZIT
![Page 81: CQRS, der etwas andere Architekturansatz](https://reader030.vdocuments.pub/reader030/viewer/2022020410/5882bdde1a28abb2478b54c1/html5/thumbnails/81.jpg)
#WISSENTEILEN
Microservices & JEE?Best Friends Forever!
FAZIT„BFF“
Best Friends Forever!
![Page 82: CQRS, der etwas andere Architekturansatz](https://reader030.vdocuments.pub/reader030/viewer/2022020410/5882bdde1a28abb2478b54c1/html5/thumbnails/82.jpg)
#WISSENTEILEN
![Page 83: CQRS, der etwas andere Architekturansatz](https://reader030.vdocuments.pub/reader030/viewer/2022020410/5882bdde1a28abb2478b54c1/html5/thumbnails/83.jpg)
#WISSENTEILEN
? # !
![Page 84: CQRS, der etwas andere Architekturansatz](https://reader030.vdocuments.pub/reader030/viewer/2022020410/5882bdde1a28abb2478b54c1/html5/thumbnails/84.jpg)
LARS RÖWEKAMPCIO NEW TECHNOLOGIES
[email protected]+49 (0) 441 4082 – 0
@mobileLarson@_openknowledge
OFFENKUNDIGGUT
KOTAKT
#WISSENTEILEN
![Page 85: CQRS, der etwas andere Architekturansatz](https://reader030.vdocuments.pub/reader030/viewer/2022020410/5882bdde1a28abb2478b54c1/html5/thumbnails/85.jpg)
#80: © marekuliasz– shutterstock.com#1, #45, #79: pixabay.com
Icons in this presentation designed by “Freepik”,
BILDNACHWEISE
#WISSENTEILEN