eventzentrierte architekturen
DESCRIPTION
Das Herz vieler Geschäftsanwendungen bildet ein objektorientiertes Domänenmodell. Zur Modellierung und Implementierung eines solchen Domänenmodells existiert eine Vielzahl von Möglichkeiten. Eine dieser Alternativen ist die explizite Modellierung aller Zustandsübergänge in Form von Events. Dieser Ansatz bietet unter anderem folgende Vorteile: • Vereinfachter Support durch vollständigen Audit Log • Einfache Integration von Drittsystemen • Leichtere Skalierbarkeit Die wesentlichen Patterns im Zusammenhang mit dieser Form der Modellierung sind "Event Sourcing" und "Command-Query-Responsibility-Segregation" (CQRS). Die dargestellten Konzepte werden durch Beispiele aus dem Projekteinsatz mit Groovy/Grails illustriert.TRANSCRIPT
![Page 1: Eventzentrierte Architekturen](https://reader034.vdocuments.us/reader034/viewer/2022051513/547d9963b37959582b8b5307/html5/thumbnails/1.jpg)
Eventzentrierte Architekturen
Event Sourcing & CQRS
@ndrssmn
![Page 2: Eventzentrierte Architekturen](https://reader034.vdocuments.us/reader034/viewer/2022051513/547d9963b37959582b8b5307/html5/thumbnails/2.jpg)
![Page 3: Eventzentrierte Architekturen](https://reader034.vdocuments.us/reader034/viewer/2022051513/547d9963b37959582b8b5307/html5/thumbnails/3.jpg)
![Page 4: Eventzentrierte Architekturen](https://reader034.vdocuments.us/reader034/viewer/2022051513/547d9963b37959582b8b5307/html5/thumbnails/4.jpg)
Event Stream eines Printmedium
1) Printmedium was created
2) Product was placed
3) Multiple Frames were removed
4) Product was configured
![Page 5: Eventzentrierte Architekturen](https://reader034.vdocuments.us/reader034/viewer/2022051513/547d9963b37959582b8b5307/html5/thumbnails/5.jpg)
![Page 6: Eventzentrierte Architekturen](https://reader034.vdocuments.us/reader034/viewer/2022051513/547d9963b37959582b8b5307/html5/thumbnails/6.jpg)
Event Sourcing
![Page 7: Eventzentrierte Architekturen](https://reader034.vdocuments.us/reader034/viewer/2022051513/547d9963b37959582b8b5307/html5/thumbnails/7.jpg)
![Page 8: Eventzentrierte Architekturen](https://reader034.vdocuments.us/reader034/viewer/2022051513/547d9963b37959582b8b5307/html5/thumbnails/8.jpg)
CommandQueryResponsibilitySegregation
![Page 9: Eventzentrierte Architekturen](https://reader034.vdocuments.us/reader034/viewer/2022051513/547d9963b37959582b8b5307/html5/thumbnails/9.jpg)
![Page 10: Eventzentrierte Architekturen](https://reader034.vdocuments.us/reader034/viewer/2022051513/547d9963b37959582b8b5307/html5/thumbnails/10.jpg)
Event Sourcing + CQRS
● Events ermöglichen– Lose Kopplung durch Messaging
● Skalierbarkeit (und Performance)– Verteilung
– Caching (HTTP Resources, Event Streams als application/atom+xml)
● Kombinierbar mit– REST
– Reaktiver Programmierung (Zustand = foldLeft(Event...))
– Web Sockets
– Microservices
– Polyglot Persistence
● Vereinfacht Complex Event Processing
![Page 11: Eventzentrierte Architekturen](https://reader034.vdocuments.us/reader034/viewer/2022051513/547d9963b37959582b8b5307/html5/thumbnails/11.jpg)
Herausforderungen
● Aggregat-Modellierung● Eventual Consistency● Versionierung von Events
![Page 12: Eventzentrierte Architekturen](https://reader034.vdocuments.us/reader034/viewer/2022051513/547d9963b37959582b8b5307/html5/thumbnails/12.jpg)
Nächster SoCraMOB Open Space
Samstag, 16. August
Osnabrück
Anmeldung:https://www.softwerkskammer.org/activities/socramob-openspace-2014-3
![Page 13: Eventzentrierte Architekturen](https://reader034.vdocuments.us/reader034/viewer/2022051513/547d9963b37959582b8b5307/html5/thumbnails/13.jpg)
Links● Greg Young: Unleash Your Domain
http://www.infoq.com/presentations/greg-young-unshackle-qcon08
● Martin Fowler: Event Sourcinghttp://martinfowler.com/eaaDev/EventSourcing.html
● Martin Fowler: CQRShttp://martinfowler.com/bliki/CQRS.html
● Philip Jander: Persistenz mit Event Sourcinghttp://heise.de/-1974051
● Marco Heimeshoff, Philip Jander: CQRS – neues Architekturprinzip zur Trennung von Befehlen und Abfragenhttp://www.heise.de/-1797489.html
● DDD/CQRS Mailing Listehttps://groups.google.com/forum/#!forum/dddcqrs
● Greg Youngs Event Storehttp://geteventstore.com/
● RserviceBushttp://rubygems.org/gems/rservicebus