materialized view event sourcing cqrs eventual consistency … · 2021. 1. 9. · materialized view...

34
Materialized view Event sourcing CQRS Eventual consistency Saga DDD - Domain Driven Design 1

Upload: others

Post on 24-Mar-2021

11 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Materialized view Event sourcing CQRS Eventual consistency … · 2021. 1. 9. · Materialized view Event sourcing CQRS Eventual consistency Saga DDD - Domain Driven Design 1

■ Materialized view

■ Event sourcing

■ CQRS

■ Eventual consistency

■ Saga

■ DDD - Domain Driven Design

1

Page 2: Materialized view Event sourcing CQRS Eventual consistency … · 2021. 1. 9. · Materialized view Event sourcing CQRS Eventual consistency Saga DDD - Domain Driven Design 1

●●●

Page 3: Materialized view Event sourcing CQRS Eventual consistency … · 2021. 1. 9. · Materialized view Event sourcing CQRS Eventual consistency Saga DDD - Domain Driven Design 1
Page 4: Materialized view Event sourcing CQRS Eventual consistency … · 2021. 1. 9. · Materialized view Event sourcing CQRS Eventual consistency Saga DDD - Domain Driven Design 1

●●●

A B

A B

Page 5: Materialized view Event sourcing CQRS Eventual consistency … · 2021. 1. 9. · Materialized view Event sourcing CQRS Eventual consistency Saga DDD - Domain Driven Design 1

ř ů

ž š ěů

ž

Page 6: Materialized view Event sourcing CQRS Eventual consistency … · 2021. 1. 9. · Materialized view Event sourcing CQRS Eventual consistency Saga DDD - Domain Driven Design 1
Page 7: Materialized view Event sourcing CQRS Eventual consistency … · 2021. 1. 9. · Materialized view Event sourcing CQRS Eventual consistency Saga DDD - Domain Driven Design 1
Page 8: Materialized view Event sourcing CQRS Eventual consistency … · 2021. 1. 9. · Materialized view Event sourcing CQRS Eventual consistency Saga DDD - Domain Driven Design 1

●●

Page 9: Materialized view Event sourcing CQRS Eventual consistency … · 2021. 1. 9. · Materialized view Event sourcing CQRS Eventual consistency Saga DDD - Domain Driven Design 1

Order system Payment system

Page 10: Materialized view Event sourcing CQRS Eventual consistency … · 2021. 1. 9. · Materialized view Event sourcing CQRS Eventual consistency Saga DDD - Domain Driven Design 1

●●

Page 11: Materialized view Event sourcing CQRS Eventual consistency … · 2021. 1. 9. · Materialized view Event sourcing CQRS Eventual consistency Saga DDD - Domain Driven Design 1
Page 12: Materialized view Event sourcing CQRS Eventual consistency … · 2021. 1. 9. · Materialized view Event sourcing CQRS Eventual consistency Saga DDD - Domain Driven Design 1
Page 13: Materialized view Event sourcing CQRS Eventual consistency … · 2021. 1. 9. · Materialized view Event sourcing CQRS Eventual consistency Saga DDD - Domain Driven Design 1
Page 14: Materialized view Event sourcing CQRS Eventual consistency … · 2021. 1. 9. · Materialized view Event sourcing CQRS Eventual consistency Saga DDD - Domain Driven Design 1
Page 15: Materialized view Event sourcing CQRS Eventual consistency … · 2021. 1. 9. · Materialized view Event sourcing CQRS Eventual consistency Saga DDD - Domain Driven Design 1
Page 16: Materialized view Event sourcing CQRS Eventual consistency … · 2021. 1. 9. · Materialized view Event sourcing CQRS Eventual consistency Saga DDD - Domain Driven Design 1

●●●●

●●●●●

Page 17: Materialized view Event sourcing CQRS Eventual consistency … · 2021. 1. 9. · Materialized view Event sourcing CQRS Eventual consistency Saga DDD - Domain Driven Design 1
Page 18: Materialized view Event sourcing CQRS Eventual consistency … · 2021. 1. 9. · Materialized view Event sourcing CQRS Eventual consistency Saga DDD - Domain Driven Design 1

●●●●●

Page 19: Materialized view Event sourcing CQRS Eventual consistency … · 2021. 1. 9. · Materialized view Event sourcing CQRS Eventual consistency Saga DDD - Domain Driven Design 1

●●

●●

Page 20: Materialized view Event sourcing CQRS Eventual consistency … · 2021. 1. 9. · Materialized view Event sourcing CQRS Eventual consistency Saga DDD - Domain Driven Design 1
Page 21: Materialized view Event sourcing CQRS Eventual consistency … · 2021. 1. 9. · Materialized view Event sourcing CQRS Eventual consistency Saga DDD - Domain Driven Design 1
Page 22: Materialized view Event sourcing CQRS Eventual consistency … · 2021. 1. 9. · Materialized view Event sourcing CQRS Eventual consistency Saga DDD - Domain Driven Design 1

ANTICORRUPTION LAYER - zařizuje “čistou a jasnou” hranici mezi doménami. Veškerá komunikace a transformace dat mezi doménami probíhá přes tuto specializovanou vrstvu (API)

Q: Uffff… když mám entitu Product ve více bounded kontextech, tedy ve více microservisách, co když jeho data mohu modifikovat ve všech těchto microservisách? Kde je pak single source of truth dat o produktu?A:

1) V ideálním případě mám jedinou microservice, které mi zapouzdřuje veškeré operace nad produktem a pracuje se s jediným agregátem pro produkt.

2) Pokud ne, tak:i) Někdy mám výhodu v tom., že každý bounded context/microservice má trochu jiný agregát -

v jednom se např. spravují ceny k produktu, jinde jeho parametry a fotografieii) Jindy v jednom bounded contextu data k produktu čtu i zapisuji, v druhém pouze čtu (např.

přes materialized view)iii) Občas se bohužel stane, že v obou bounded contextech zapisuju ta samá data. Pak to

řeším přes Sagu a eventual consistency - viz následující slidy

Page 23: Materialized view Event sourcing CQRS Eventual consistency … · 2021. 1. 9. · Materialized view Event sourcing CQRS Eventual consistency Saga DDD - Domain Driven Design 1
Page 24: Materialized view Event sourcing CQRS Eventual consistency … · 2021. 1. 9. · Materialized view Event sourcing CQRS Eventual consistency Saga DDD - Domain Driven Design 1
Page 25: Materialized view Event sourcing CQRS Eventual consistency … · 2021. 1. 9. · Materialized view Event sourcing CQRS Eventual consistency Saga DDD - Domain Driven Design 1
Page 26: Materialized view Event sourcing CQRS Eventual consistency … · 2021. 1. 9. · Materialized view Event sourcing CQRS Eventual consistency Saga DDD - Domain Driven Design 1

Transakce = sekvence operací (insert, update, delete...), které tvoří logický celek

konzistentní stav | |konzistentní stav

commit

nekonzistentní mezistav

Rollback on error

Page 27: Materialized view Event sourcing CQRS Eventual consistency … · 2021. 1. 9. · Materialized view Event sourcing CQRS Eventual consistency Saga DDD - Domain Driven Design 1

Koordinátor transakce

Databáze 1 Databáze 2

Koordinátor transakce

Databáze 1 Databáze 2

●●●●

Page 28: Materialized view Event sourcing CQRS Eventual consistency … · 2021. 1. 9. · Materialized view Event sourcing CQRS Eventual consistency Saga DDD - Domain Driven Design 1

Monolitické relační systémy

(ACID)

Homogenní distribuované

systémy(ACID + 2PC)

Heterogenní distribuované

systémy(Micro services +

eventual consistency)

Heterogenní distribuované

systémy(NOSQL + CAP)

1. 2.

3.

4.

Page 29: Materialized view Event sourcing CQRS Eventual consistency … · 2021. 1. 9. · Materialized view Event sourcing CQRS Eventual consistency Saga DDD - Domain Driven Design 1
Page 30: Materialized view Event sourcing CQRS Eventual consistency … · 2021. 1. 9. · Materialized view Event sourcing CQRS Eventual consistency Saga DDD - Domain Driven Design 1
Page 31: Materialized view Event sourcing CQRS Eventual consistency … · 2021. 1. 9. · Materialized view Event sourcing CQRS Eventual consistency Saga DDD - Domain Driven Design 1

Sága a eventual consistency

Page 32: Materialized view Event sourcing CQRS Eventual consistency … · 2021. 1. 9. · Materialized view Event sourcing CQRS Eventual consistency Saga DDD - Domain Driven Design 1

Sága a eventual consistency

Page 33: Materialized view Event sourcing CQRS Eventual consistency … · 2021. 1. 9. · Materialized view Event sourcing CQRS Eventual consistency Saga DDD - Domain Driven Design 1
Page 34: Materialized view Event sourcing CQRS Eventual consistency … · 2021. 1. 9. · Materialized view Event sourcing CQRS Eventual consistency Saga DDD - Domain Driven Design 1