living without rest - amazon web services€¦ · 22 join developers.redhat.com id name phone...

43
Living without REST: Event-Driven Architecture Edson Yanaga Director of Developer Experience @yanaga

Upload: others

Post on 13-Apr-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Living without REST - Amazon Web Services€¦ · 22 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

Living without REST: Event-Driven Architecture

Edson Yanaga Director of Developer Experience @yanaga

Page 2: Living without REST - Amazon Web Services€¦ · 22 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

Edson Yanaga

@yanaga

Page 3: Living without REST - Amazon Web Services€¦ · 22 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

https://bit.ly/mono2microdb

Page 4: Living without REST - Amazon Web Services€¦ · 22 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

Code is easy, state is hard

Page 5: Living without REST - Amazon Web Services€¦ · 22 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

Join developers.redhat.com 5

HTTP + REST

Page 6: Living without REST - Amazon Web Services€¦ · 22 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

Latency Availability

Performance

Page 7: Living without REST - Amazon Web Services€¦ · 22 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

Cache and/or Polling

Page 8: Living without REST - Amazon Web Services€¦ · 22 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

Eventual Consistency

Page 9: Living without REST - Amazon Web Services€¦ · 22 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

Join developers.redhat.com 9

First, a look back at the past…

Page 10: Living without REST - Amazon Web Services€¦ · 22 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

How was data managed 10 years ago?

Page 11: Living without REST - Amazon Web Services€¦ · 22 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

Terrified about Entity Beans

Page 12: Living without REST - Amazon Web Services€¦ · 22 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

Hibernate to the rescue!

Page 13: Living without REST - Amazon Web Services€¦ · 22 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

Replacing XML with @Annotations

Page 14: Living without REST - Amazon Web Services€¦ · 22 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

POJOs as an (Anemic) Domain Model

Page 15: Living without REST - Amazon Web Services€¦ · 22 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

Event Sourcing

Page 16: Living without REST - Amazon Web Services€¦ · 22 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

Join developers.redhat.com 16

ID CUSTOMER_ID BALANCE

1001 990 1000

1002 991 0

1003 991 -500

1004 992 300

Account

Page 17: Living without REST - Amazon Web Services€¦ · 22 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

Join developers.redhat.com 17

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 18: Living without REST - Amazon Web Services€¦ · 22 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

Enables you to think in the Events that happened in the

system

Page 19: Living without REST - Amazon Web Services€¦ · 22 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

CQS (Command-Query Separation)

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

Page 20: Living without REST - Amazon Web Services€¦ · 22 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

CQRS (Command Query

Responsibility Segregation)

Page 21: Living without REST - Amazon Web Services€¦ · 22 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

Join developers.redhat.com 21

CQRS (Command Query Responsibility Segregation)

Page 22: Living without REST - Amazon Web Services€¦ · 22 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

Join developers.redhat.com 22

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 23: Living without REST - Amazon Web Services€¦ · 22 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

Join developers.redhat.com 23

SELECT ID, NAME, PHONE FROM CUSTOMER;

SELECT ID, NAME, ADDRESS FROM CUSTOMER;

Page 24: Living without REST - Amazon Web Services€¦ · 22 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

Join developers.redhat.com 24

CQRS with separate data stores

Page 25: Living without REST - Amazon Web Services€¦ · 22 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

Join developers.redhat.com 25

SELECT ID, NAME, AGE, AVG_BILL FROM CUSTOMER_REPORT_VIEW;

SELECT ID, PHONE, LAST_PAYMENT_AMOUNT FROM CUSTOMER_BILLING_VIEW;

Page 26: Living without REST - Amazon Web Services€¦ · 22 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

CQRS & Event Sourcing

Page 27: Living without REST - Amazon Web Services€¦ · 22 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

Join developers.redhat.com 27

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 28: Living without REST - Amazon Web Services€¦ · 22 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

Join developers.redhat.com 28

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 29: Living without REST - Amazon Web Services€¦ · 22 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

Why CQRS?

Page 30: Living without REST - Amazon Web Services€¦ · 22 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

Performance

Page 31: Living without REST - Amazon Web Services€¦ · 22 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

Distribution Availability Integration Analytics

Page 32: Living without REST - Amazon Web Services€¦ · 22 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

Join developers.redhat.com 32

Canonical Source of Information (Write Data Store)

Page 33: Living without REST - Amazon Web Services€¦ · 22 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

Join developers.redhat.com 33

Canonical Source of Information (Write Data Store)

Read Data Store Read Data Store

Page 34: Living without REST - Amazon Web Services€¦ · 22 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

Join developers.redhat.com 34

Canonical Source of Information (Write Data Store)

Read Data Store Read Data Store

Events Events

Page 35: Living without REST - Amazon Web Services€¦ · 22 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

Join developers.redhat.com 35

Now, Back to the Future!

Page 36: Living without REST - Amazon Web Services€¦ · 22 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

Event-Driven Architecture

Page 37: Living without REST - Amazon Web Services€¦ · 22 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

Events are facts that happened in the

system

Page 38: Living without REST - Amazon Web Services€¦ · 22 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

Low-level Events vs

Domain-level Events

Page 39: Living without REST - Amazon Web Services€¦ · 22 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

Key Technologies

Page 40: Living without REST - Amazon Web Services€¦ · 22 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

ActiveMQ Artemis Kafka Camel

Debezium Quarkus

Page 41: Living without REST - Amazon Web Services€¦ · 22 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

Join developers.redhat.com 41

bit.ly/eda-tutorial

Page 42: Living without REST - Amazon Web Services€¦ · 22 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

Join developers.redhat.com

Feedback welcome!@yanaga

Page 43: Living without REST - Amazon Web Services€¦ · 22 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

plus.google.com/+RedHat

linkedin.com/company/red-hat

youtube.com/user/RedHatVideos

facebook.com/redhatinc

twitter.com/RedHatNews

Thank you!