microservice data patterns€¦ · 18 join developers.redhat.com id name phone address birth 1 burr...

42
Microservice Data Patterns: CQRS & Event Sourcing Edson Yanaga Director of Developer Experience @yanaga

Upload: others

Post on 15-Jun-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Microservice Data Patterns€¦ · 18 Join developers.redhat.com ID NAME PHONE ADDRESS BIRTH 1 Burr 222-222-2323 901 South St 12/12/1968 2 Edson 222-333-3434 112 North Dr 03/03/1978

Microservice Data Patterns: CQRS & Event Sourcing

Edson Yanaga Director of Developer Experience @yanaga

Page 2: Microservice Data Patterns€¦ · 18 Join developers.redhat.com ID NAME PHONE ADDRESS BIRTH 1 Burr 222-222-2323 901 South St 12/12/1968 2 Edson 222-333-3434 112 North Dr 03/03/1978

Join developers.redhat.com 2

Java Champion Microsoft MVP

Page 3: Microservice Data Patterns€¦ · 18 Join developers.redhat.com ID NAME PHONE ADDRESS BIRTH 1 Burr 222-222-2323 901 South St 12/12/1968 2 Edson 222-333-3434 112 North Dr 03/03/1978

http://developers.redhat.com/promotions/migrating-to-microservice-databases

Page 4: Microservice Data Patterns€¦ · 18 Join developers.redhat.com ID NAME PHONE ADDRESS BIRTH 1 Burr 222-222-2323 901 South St 12/12/1968 2 Edson 222-333-3434 112 North Dr 03/03/1978

Code is easy, state is hard

Page 5: Microservice Data Patterns€¦ · 18 Join developers.redhat.com ID NAME PHONE ADDRESS BIRTH 1 Burr 222-222-2323 901 South St 12/12/1968 2 Edson 222-333-3434 112 North Dr 03/03/1978

How was data managed 10 years ago?

Page 6: Microservice Data Patterns€¦ · 18 Join developers.redhat.com ID NAME PHONE ADDRESS BIRTH 1 Burr 222-222-2323 901 South St 12/12/1968 2 Edson 222-333-3434 112 North Dr 03/03/1978

Terrified about Entity Beans

Page 7: Microservice Data Patterns€¦ · 18 Join developers.redhat.com ID NAME PHONE ADDRESS BIRTH 1 Burr 222-222-2323 901 South St 12/12/1968 2 Edson 222-333-3434 112 North Dr 03/03/1978

Hibernate to the rescue!

Page 8: Microservice Data Patterns€¦ · 18 Join developers.redhat.com ID NAME PHONE ADDRESS BIRTH 1 Burr 222-222-2323 901 South St 12/12/1968 2 Edson 222-333-3434 112 North Dr 03/03/1978

Replacing XML with @Annotations

Page 9: Microservice Data Patterns€¦ · 18 Join developers.redhat.com ID NAME PHONE ADDRESS BIRTH 1 Burr 222-222-2323 901 South St 12/12/1968 2 Edson 222-333-3434 112 North Dr 03/03/1978

POJOs as an (Anemic) Domain Model

Page 10: Microservice Data Patterns€¦ · 18 Join developers.redhat.com ID NAME PHONE ADDRESS BIRTH 1 Burr 222-222-2323 901 South St 12/12/1968 2 Edson 222-333-3434 112 North Dr 03/03/1978

Event Sourcing

Page 11: Microservice Data Patterns€¦ · 18 Join developers.redhat.com ID NAME PHONE ADDRESS BIRTH 1 Burr 222-222-2323 901 South St 12/12/1968 2 Edson 222-333-3434 112 North Dr 03/03/1978

Join developers.redhat.com 11

ID CUSTOMER_ID BALANCE

1001 990 1000

1002 991 0

1003 991 -500

1004 992 300

Account

Page 12: Microservice Data Patterns€¦ · 18 Join developers.redhat.com ID NAME PHONE ADDRESS BIRTH 1 Burr 222-222-2323 901 South St 12/12/1968 2 Edson 222-333-3434 112 North Dr 03/03/1978

Join developers.redhat.com 12

ID ACCOUNT_ID TIMESTAMP OP AMOUNT

1 1001 1234567890 C 1000

2 1002 1234567891 C 200

3 1001 1234567900 D 300

4 1001 1234567995 D 150

Transactions

Page 13: Microservice Data Patterns€¦ · 18 Join developers.redhat.com ID NAME PHONE ADDRESS BIRTH 1 Burr 222-222-2323 901 South St 12/12/1968 2 Edson 222-333-3434 112 North Dr 03/03/1978

Enables you to think in the Events that happened in the

system

Page 14: Microservice Data Patterns€¦ · 18 Join developers.redhat.com ID NAME PHONE ADDRESS BIRTH 1 Burr 222-222-2323 901 South St 12/12/1968 2 Edson 222-333-3434 112 North Dr 03/03/1978

CQS (Command-Query Separation)

“Asking a question should not change the answer” (Bertrand Meyer)

Page 15: Microservice Data Patterns€¦ · 18 Join developers.redhat.com ID NAME PHONE ADDRESS BIRTH 1 Burr 222-222-2323 901 South St 12/12/1968 2 Edson 222-333-3434 112 North Dr 03/03/1978

“Asking a question should not change the answer”

(Bertrand Meyer)

Page 16: Microservice Data Patterns€¦ · 18 Join developers.redhat.com ID NAME PHONE ADDRESS BIRTH 1 Burr 222-222-2323 901 South St 12/12/1968 2 Edson 222-333-3434 112 North Dr 03/03/1978

CQRS (Command Query

Responsibility Segregation)

Page 17: Microservice Data Patterns€¦ · 18 Join developers.redhat.com ID NAME PHONE ADDRESS BIRTH 1 Burr 222-222-2323 901 South St 12/12/1968 2 Edson 222-333-3434 112 North Dr 03/03/1978

Join developers.redhat.com 17

CQRS (Command Query Responsibility Segregation)

Page 18: Microservice Data Patterns€¦ · 18 Join developers.redhat.com ID NAME PHONE ADDRESS BIRTH 1 Burr 222-222-2323 901 South St 12/12/1968 2 Edson 222-333-3434 112 North Dr 03/03/1978

Join developers.redhat.com 18

ID NAME PHONE ADDRESS BIRTH

1 Burr 222-222-2323 901 South St 12/12/1968

2 Edson 222-333-3434 112 North Dr 03/03/1978

3 John 111-456-4545 666 Iron St 06/06/1966

4 Doe 333-789-7890 777 Boeing Dr 07/07/1977

INSERT INTO CUSTOMER(ID,NAME,PHONE,ADDRESS,BIRTH);

SELECT * FROM CUSTOMER;

Page 19: Microservice Data Patterns€¦ · 18 Join developers.redhat.com ID NAME PHONE ADDRESS BIRTH 1 Burr 222-222-2323 901 South St 12/12/1968 2 Edson 222-333-3434 112 North Dr 03/03/1978

Join developers.redhat.com 19

SELECT ID, NAME, PHONE FROM CUSTOMER;

SELECT ID, NAME, ADDRESS FROM CUSTOMER;

Page 20: Microservice Data Patterns€¦ · 18 Join developers.redhat.com ID NAME PHONE ADDRESS BIRTH 1 Burr 222-222-2323 901 South St 12/12/1968 2 Edson 222-333-3434 112 North Dr 03/03/1978

Join developers.redhat.com 20

CQRS with separate data stores

Page 21: Microservice Data Patterns€¦ · 18 Join developers.redhat.com ID NAME PHONE ADDRESS BIRTH 1 Burr 222-222-2323 901 South St 12/12/1968 2 Edson 222-333-3434 112 North Dr 03/03/1978

Join developers.redhat.com 21

SELECT ID, NAME, AGE, AVG_BILL FROM CUSTOMER_REPORT_VIEW;

SELECT ID, PHONE, LAST_PAYMENT_AMOUNT FROM CUSTOMER_BILLING_VIEW;

Page 22: Microservice Data Patterns€¦ · 18 Join developers.redhat.com ID NAME PHONE ADDRESS BIRTH 1 Burr 222-222-2323 901 South St 12/12/1968 2 Edson 222-333-3434 112 North Dr 03/03/1978

CQRS & Event Sourcing

Page 23: Microservice Data Patterns€¦ · 18 Join developers.redhat.com ID NAME PHONE ADDRESS BIRTH 1 Burr 222-222-2323 901 South St 12/12/1968 2 Edson 222-333-3434 112 North Dr 03/03/1978

Join developers.redhat.com 23

ID CUSTOMER_ID BALANCE

1001 990 10001002 991 0

1003 991 -500

1004 992 300

Account

ID ACCOUNT_ID TIMESTAMP OP AMOUNT

1 1001 1234567890 C 1000

2 1002 1234567891 C 200

3 1001 1234567900 D 300

4 1001 1234567995 D 150

Transactions

Page 24: Microservice Data Patterns€¦ · 18 Join developers.redhat.com ID NAME PHONE ADDRESS BIRTH 1 Burr 222-222-2323 901 South St 12/12/1968 2 Edson 222-333-3434 112 North Dr 03/03/1978

Join developers.redhat.com 24

ID CUSTOMER_ID BALANCE

1001 990 10001002 991 0

1003 991 -500

1004 992 300

Account

ID ACCOUNT_ID TIMESTAMP OP AMOUNT

1 1001 1234567890 C 1000

2 1002 1234567891 C 200

3 1001 1234567900 D 300

4 1001 1234567995 D 150

Transactions

READ MODEL

WRITE MODEL

Page 25: Microservice Data Patterns€¦ · 18 Join developers.redhat.com ID NAME PHONE ADDRESS BIRTH 1 Burr 222-222-2323 901 South St 12/12/1968 2 Edson 222-333-3434 112 North Dr 03/03/1978

Why CQRS?

Page 26: Microservice Data Patterns€¦ · 18 Join developers.redhat.com ID NAME PHONE ADDRESS BIRTH 1 Burr 222-222-2323 901 South St 12/12/1968 2 Edson 222-333-3434 112 North Dr 03/03/1978

Performance

Page 27: Microservice Data Patterns€¦ · 18 Join developers.redhat.com ID NAME PHONE ADDRESS BIRTH 1 Burr 222-222-2323 901 South St 12/12/1968 2 Edson 222-333-3434 112 North Dr 03/03/1978

Distribution Availability Integration Analytics

Page 28: Microservice Data Patterns€¦ · 18 Join developers.redhat.com ID NAME PHONE ADDRESS BIRTH 1 Burr 222-222-2323 901 South St 12/12/1968 2 Edson 222-333-3434 112 North Dr 03/03/1978

Join developers.redhat.com 28

Canonical Source of Information

(Write Data Store)

Page 29: Microservice Data Patterns€¦ · 18 Join developers.redhat.com ID NAME PHONE ADDRESS BIRTH 1 Burr 222-222-2323 901 South St 12/12/1968 2 Edson 222-333-3434 112 North Dr 03/03/1978

Join developers.redhat.com 29

Canonical Source of Information

(Write Data Store)

Read Data Store Read Data Store

Page 30: Microservice Data Patterns€¦ · 18 Join developers.redhat.com ID NAME PHONE ADDRESS BIRTH 1 Burr 222-222-2323 901 South St 12/12/1968 2 Edson 222-333-3434 112 North Dr 03/03/1978

Join developers.redhat.com 30

Canonical Source of Information

(Write Data Store)

Read Data Store Read Data Store

Events Events

Page 31: Microservice Data Patterns€¦ · 18 Join developers.redhat.com ID NAME PHONE ADDRESS BIRTH 1 Burr 222-222-2323 901 South St 12/12/1968 2 Edson 222-333-3434 112 North Dr 03/03/1978

Different choices of technology depending on the

requirements

Page 32: Microservice Data Patterns€¦ · 18 Join developers.redhat.com ID NAME PHONE ADDRESS BIRTH 1 Burr 222-222-2323 901 South St 12/12/1968 2 Edson 222-333-3434 112 North Dr 03/03/1978

Latency Size

Staleness Ownership

Security Type?

Page 33: Microservice Data Patterns€¦ · 18 Join developers.redhat.com ID NAME PHONE ADDRESS BIRTH 1 Burr 222-222-2323 901 South St 12/12/1968 2 Edson 222-333-3434 112 North Dr 03/03/1978

Join developers.redhat.com 33

http://infinispan.org/

In-memory Data Grids

Page 34: Microservice Data Patterns€¦ · 18 Join developers.redhat.com ID NAME PHONE ADDRESS BIRTH 1 Burr 222-222-2323 901 South St 12/12/1968 2 Edson 222-333-3434 112 North Dr 03/03/1978

Join developers.redhat.com 34

http://teiid.jboss.org/

Data Virtualization

Page 35: Microservice Data Patterns€¦ · 18 Join developers.redhat.com ID NAME PHONE ADDRESS BIRTH 1 Burr 222-222-2323 901 South St 12/12/1968 2 Edson 222-333-3434 112 North Dr 03/03/1978

Join developers.redhat.com 35

http://activemq.apache.org/

Message Brokers

https://kafka.apache.org/

Page 36: Microservice Data Patterns€¦ · 18 Join developers.redhat.com ID NAME PHONE ADDRESS BIRTH 1 Burr 222-222-2323 901 South St 12/12/1968 2 Edson 222-333-3434 112 North Dr 03/03/1978

Join developers.redhat.com 36

http://vertx.io/

Reactive Platform

Page 37: Microservice Data Patterns€¦ · 18 Join developers.redhat.com ID NAME PHONE ADDRESS BIRTH 1 Burr 222-222-2323 901 South St 12/12/1968 2 Edson 222-333-3434 112 North Dr 03/03/1978

Join developers.redhat.com 37

REMOTE API

Page 38: Microservice Data Patterns€¦ · 18 Join developers.redhat.com ID NAME PHONE ADDRESS BIRTH 1 Burr 222-222-2323 901 South St 12/12/1968 2 Edson 222-333-3434 112 North Dr 03/03/1978

Join developers.redhat.com 38

REMOTE API

RE

AC

TIV

E

Page 39: Microservice Data Patterns€¦ · 18 Join developers.redhat.com ID NAME PHONE ADDRESS BIRTH 1 Burr 222-222-2323 901 South St 12/12/1968 2 Edson 222-333-3434 112 North Dr 03/03/1978

Join developers.redhat.com 39

http://debezium.io/

Change Data Capture

Page 40: Microservice Data Patterns€¦ · 18 Join developers.redhat.com ID NAME PHONE ADDRESS BIRTH 1 Burr 222-222-2323 901 South St 12/12/1968 2 Edson 222-333-3434 112 North Dr 03/03/1978

Join developers.redhat.com

Feedback welcome!@yanaga

Page 41: Microservice Data Patterns€¦ · 18 Join developers.redhat.com ID NAME PHONE ADDRESS BIRTH 1 Burr 222-222-2323 901 South St 12/12/1968 2 Edson 222-333-3434 112 North Dr 03/03/1978

plus.google.com/+RedHat

linkedin.com/company/red-hat

youtube.com/user/RedHatVideos

facebook.com/redhatinc

twitter.com/RedHatNews

Thank you!