event sourcing + cqrs

69
Event Sourcing THE BEST, UBIQUITOUS PATTERN YOU’VE NEVER HEARD OF @blimpyacht

Upload: bryan-reinero

Post on 17-Jan-2017

218 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: Event Sourcing + CQRS

Event SourcingTHE BEST, UBIQUITOUS PATTERN

YOU’VE NEVER HEARD OF

@blimpyacht

Page 2: Event Sourcing + CQRS
Page 3: Event Sourcing + CQRS
Page 4: Event Sourcing + CQRS
Page 5: Event Sourcing + CQRS

5

Page 6: Event Sourcing + CQRS
Page 7: Event Sourcing + CQRS

User: ABalance: 427

User: BBalance: 550

Page 8: Event Sourcing + CQRS

User: ABalance: 427

User: BBalance: 550

Page 9: Event Sourcing + CQRS

User: ABalance: 427

User: BBalance: 550

+5-5

Page 10: Event Sourcing + CQRS

Event Sourcing

State

Page 11: Event Sourcing + CQRS

+4-2+5+7-4+9-3-6+2+1+1-5 t(12) = 9

Event Sourcing

Page 12: Event Sourcing + CQRS

+4-2+5+7-4+9-3-6+2+1+1-5

t(5) = 10

Event Sourcing

Page 13: Event Sourcing + CQRS

+4-2+5+7-4+9-3-6+2+1+1-5

t(9) = 12

Event Sourcing

Page 14: Event Sourcing + CQRS

+4-2+5+7-4+9-3-6+2+1+1-5

Event Sourcing

a = f ’(x)

Page 15: Event Sourcing + CQRS

+4-2+5+7-4+9-3-6+2+1+1-5

Event Sourcing

+5-4+5

Page 16: Event Sourcing + CQRS
Page 17: Event Sourcing + CQRS

Res Gestae Divi Augusti

Page 18: Event Sourcing + CQRS
Page 19: Event Sourcing + CQRS
Page 20: Event Sourcing + CQRS
Page 21: Event Sourcing + CQRS
Page 22: Event Sourcing + CQRS

2ndaryPrimary

Page 23: Event Sourcing + CQRS

2ndaryPrimary

Page 24: Event Sourcing + CQRS

2ndaryPrimary

Page 25: Event Sourcing + CQRS

+4-2+5+7-4+9-3-6+2+1+1-5

Event Sourcing

Page 26: Event Sourcing + CQRS

+4-2+5+7-4+9-3-6+2+1+1-5

t(4) = 14

Event Sourcing

t(8) = 10

t(12) = 9

Page 27: Event Sourcing + CQRS

+4-2+5+7-4+9-3-6+2+1+1-5

t(4) = 14

Event Sourcing

t(8) = 10

t(12) = 9

t’(4) = -2

t’(8) = -17

t’(12) = -22

Page 28: Event Sourcing + CQRS
Page 29: Event Sourcing + CQRS

{ _id: {

ts: 1213084687000, taxi: "abboip" }, loc: {

geometry: [ -122.39488, 37.75134

] }, fare: 0, ts: ISODate("2008-06-10T07:58:07Z")}

Page 30: Event Sourcing + CQRS
Page 31: Event Sourcing + CQRS

{ _id: ObjectId("56a4215a46778b69e08ff8ff"), taxi: "abboip", start: ISODate("2008-05-17T14:51:10Z"), route: { type: "LineString", coordinates: [ [ -122.39724, 37.74977 ], [ -122.40619, 37.74896 ], [ -122.41335, 37.74831 ], [ -122.414, 37.75157 ], [ -122.41438, 37.75552 ]

] }, end: ISODate("2008-05-17T14:55:58Z")}

Page 32: Event Sourcing + CQRS
Page 33: Event Sourcing + CQRS

Data Modeling Domain EventsDomain Objects

Page 34: Event Sourcing + CQRS
Page 35: Event Sourcing + CQRS

Accounts Payable

Page 36: Event Sourcing + CQRS

Accounts Payable

Accounts Receivable

Page 37: Event Sourcing + CQRS

Accounts Payable

Accounts Receivable

Journal

Page 38: Event Sourcing + CQRS

Accounts Payable

Accounts Receivable

Journal

Ledger

Page 39: Event Sourcing + CQRS

Command QueryResponsibility

Segregation

Page 40: Event Sourcing + CQRS

CQRS

Page 41: Event Sourcing + CQRS

CRUD vs. CQRS

CRUD

Page 42: Event Sourcing + CQRS

CRUD vs. CQRS

WRITE

READ

Page 43: Event Sourcing + CQRS

CRUD vs. CQRS

Page 44: Event Sourcing + CQRS

CRUD equals CQRS

Page 45: Event Sourcing + CQRS

WRITE

READ

READ

CRUD vs. CQRS

Page 46: Event Sourcing + CQRS

WRITE

READ

Variant Read Models: VIEWS

READREADREADREAD

Page 47: Event Sourcing + CQRS

WRITE

READ

Primary

READ

CRUD vs. CQRS

Page 48: Event Sourcing + CQRS

CRUD vs. CQRS

WRITE

READ

READ

Primary

2ndary

2ndary

Page 49: Event Sourcing + CQRS

Where it Gets Tricky

Page 50: Event Sourcing + CQRS

CRUD vs. CQRS

WRITE

READ

READ

Primary

2ndary

2ndary

Page 51: Event Sourcing + CQRS

CRUD vs. CQRS

WRITE

READ

READ

Primary

2ndary

2ndary

Page 52: Event Sourcing + CQRS

Consistent Replay+4-2+5+7-4+9-3-6+2+1+1-5

t(5) = 10 Exchange Rate Server

10 / 0.88 = 8.82€

Page 53: Event Sourcing + CQRS

Consistent Replay+4-2+5+7-4+9-3-6+2+1+1-5

t(5) = 10 Exchange Rate Server

10 / 0.87 = 8.70€

Page 54: Event Sourcing + CQRS

+4-2+5+7-4

+9-3-6+2+1+1-5

0.88 Exchange Rate Server

Consistent Replay

Page 55: Event Sourcing + CQRS

Where it Gets Trickier Still

Page 56: Event Sourcing + CQRS
Page 57: Event Sourcing + CQRS
Page 58: Event Sourcing + CQRS
Page 59: Event Sourcing + CQRS
Page 60: Event Sourcing + CQRS

External Updates+4-2+5+7-4+9-3-6+2+1+1-5

Notification

Subscriber

Page 61: Event Sourcing + CQRS
Page 62: Event Sourcing + CQRS
Page 63: Event Sourcing + CQRS

External Updates+4-2+5+7-4+9-3-6+2+1+1-5

Notification

Subscriber

Page 64: Event Sourcing + CQRS

Gaining Insight

Page 65: Event Sourcing + CQRS
Page 66: Event Sourcing + CQRS
Page 67: Event Sourcing + CQRS
Page 68: Event Sourcing + CQRS
Page 69: Event Sourcing + CQRS