eventzentrierte architekturen (jug münster)

18
Eventzentrierte Architekturen Event Sourcing & CQRS @ndrssmn

Upload: ndrssmn

Post on 21-Nov-2014

110 views

Category:

Technology


1 download

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 (JUG Münster)

Eventzentrierte Architekturen

Event Sourcing & CQRS

@ndrssmn

Page 2: Eventzentrierte Architekturen (JUG Münster)
Page 3: Eventzentrierte Architekturen (JUG Münster)
Page 4: Eventzentrierte Architekturen (JUG Münster)

Event Sourcing

Page 5: Eventzentrierte Architekturen (JUG Münster)

1) Printmedium was created

2) Product was placed

5) Multiple Frames were removed

11) Product was configured

Page 6: Eventzentrierte Architekturen (JUG Münster)
Page 7: Eventzentrierte Architekturen (JUG Münster)

http://127.0.1.1:8082/

SELECT *FROM eventsWHERE aggregate_id = '86ea6d38-5854-43c8-9f91-85b2a3000c21';

Page 8: Eventzentrierte Architekturen (JUG Münster)

Page 9: Eventzentrierte Architekturen (JUG Münster)

Eager oder Lazy Fetching?

Page 10: Eventzentrierte Architekturen (JUG Münster)

CommandQueryResponsibilitySegregation

Page 11: Eventzentrierte Architekturen (JUG Münster)
Page 12: Eventzentrierte Architekturen (JUG Münster)

ES+CQRS

● Replay der Events● Befüllen neuer Read Models mit historischen Daten

Page 13: Eventzentrierte Architekturen (JUG Münster)

http://127.0.1.1:8082/

DELETE FROM PRINTED_MATERIAL_MASTERS;

$ jconsole

Page 14: Eventzentrierte Architekturen (JUG Münster)

`

ES+CQRS

Page 15: Eventzentrierte Architekturen (JUG Münster)

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 16: Eventzentrierte Architekturen (JUG Münster)

Herausforderungen

● Aggregat-Modellierung● Eventual Consistency● Versionierung von Events● Einbindung in bestehende Systeme

(Bounded Contexts und Anti Corruption Layer)

Page 17: Eventzentrierte Architekturen (JUG Münster)

Nächster SoCraMOB Open Space

Samstag, 29. November

Bielefeld

Anmeldung:https://www.softwerkskammer.org/activities/socramob-2014-4

Page 18: Eventzentrierte Architekturen (JUG Münster)

Links● Greg Young: Unleash Your Domainhttp://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/group/dddcqrs

● Greg Youngs Event Storehttp://geteventstore.com/

● Axon Frameworkhttp://www.axonframework.org/