Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

CQRS + Event Sourcing

No description
by

Moritz Müller

on 21 September 2015

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of CQRS + Event Sourcing

CQRS
Code
Probleme?
Wofür steht CQRS?
C
ommand and
Q
uery
R
esponsibility
S
egregation
Commands: Verändern den Zustand eines Systems. Liefern keine Daten zurück
Queries: Liefern Daten. Beeinflussen den Zustand eines Systems nicht
Code
Command- und Query-Stack
Sql DataReader
Micro ORM
Denormalised data
NoSql
ORM
Service bus
Normalized
data
Sql
Eventual consistency
Code
Command-Stack mit Service Bus
Integration verteilter Dienste
Messaging
Lost messages
Transactions
Command-Stack mit Service Bus
NServiceBus-Framework
NServiceBus Saga
Add accommodation command
Validation handler
Persistence handler
Publish handler
Message queues
Code
CQRS - Zusammenfassung
Ursprünglich "erfunden" von Bertrand Meyer
Eiffel Programmiersprache
Definiert von Young und Dahan
Was CQRS nicht ist
Architektur-Pattern
Message queues
Service bus
Event sourcing
Was CQRS ist
Aufteilung der Klassen im Hinblick auf Commands und Queries
CQRS - Zusammenfassung
Vorteile
passende Modelle für Schreib- und Lesezugriff
Lesezugriff kann mit simplen Technologien erfolgen, z.B. .Net DataReader, Dto-Klassen (+ Automapper)
Unterschiedliche Datenbanken für Lesen/Schreiben
Asymmetrisches Skalieren
Nachteile / Risiken
"Used when it shouldn't"
Eventual consistency ???
Service bus ???
CQRS - Zusammenfassung
Mythen
CQRS == ES && ES == CQRS
CQRS funktioniert nur mit Eventual consistency
CQRS benötigt Messages Queues / Services Bus
Neue Ideen für die Datenhaltung
Warum nicht Domain-Events persistieren?
Datenbank besteht aus Events
Weg vom "Last-known good state"
Domain
Database
ItemAdded event
ItemAdded event
ItemAdded event
ItemRemoved event
Last-known good state
Code
NEventStore
"NEventStore is a persistence library used to abstract different storage implementations when using event sourcing as storage mechanism"
Speicherung von Events
Sql/NoSql
Event-Stream
Event-Replay
Last-known good state
Code
Snapshots
True
1234.56
Marge
AF13-DF..
Event store
Snapshot
What-if-scenarios
Code
Noch schnellere Queries
Reports
CQRS + ES
Code
Event sourcing
"Tracking anything that happened"
Was-wäre-wenn-Szenarien
Verhaltens-Analysen
Vorteile
Augen auf!
Paradigmenwechsel
Welchen Vorteil bringt es uns?
Event-Replay
So while CQRS is a pattern I'm happy to have in my toolbox, I wouldn't keep it at the top.
Event Sourcing
+
Example 01
Example 02
Example 03
Example 04
Example 05
Example 05
Code
Example 06
Example 07
Example 08
Performance
Eingabe-Logik komplizierter als Ausgabe
Veränderte Event-Daten?
Veränderte Methoden?
Event-History neu erzeugen
Adapter-Event-Handler
Message queues
Message queues
Full transcript