Slide 1

Slide 1 text

Data Strategies for Microservice Architectures Edson Yanaga Director of Developer Experience @yanaga Marius Bogoevici Chief Architect, Data Streaming @mariusbogoevici

Slide 2

Slide 2 text

Code is easy, state is hard

Slide 3

Slide 3 text

POJOs as an (Anemic) Domain Model

Slide 4

Slide 4 text

‘Traditional’ application design

Slide 5

Slide 5 text

Applying Domain Driven Design

Slide 6

Slide 6 text

Persistent Data

Slide 7

Slide 7 text

Strategy: One Database per Microservice

Slide 8

Slide 8 text

Virtualization: where physical separation is hard

Slide 9

Slide 9 text

Volatile data: caching and sharing state

Slide 10

Slide 10 text

Reducing latency via caching

Slide 11

Slide 11 text

Sharing state - replication and partitioning

Slide 12

Slide 12 text

Propagating state change: Event Sourcing & CDC

Slide 13

Slide 13 text

Communication: synchronous/asynchronous 1: ship 2: update state 3: update state update state update state OrderCreated

Slide 14

Slide 14 text

Event Sourcing OrderCreated Id: 1 OrderUpdated Id: 1 OrderCreated Id: 2

Slide 15

Slide 15 text

Change Data Capture

Slide 16

Slide 16 text

CQS (Command-Query Separation)

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

CQRS (Command Query Responsibility Segregation)

Slide 19

Slide 19 text

Join developers.redhat.com 19 CQRS (Command Query Responsibility Segregation)

Slide 20

Slide 20 text

Join developers.redhat.com 2 0 CQRS with separate data stores

Slide 21

Slide 21 text

CQRS & Event Sourcing

Slide 22

Slide 22 text

Why CQRS?

Slide 23

Slide 23 text

Performance

Slide 24

Slide 24 text

Distribution Availability Integration Analytics

Slide 25

Slide 25 text

Join developers.redhat.com 2 5 Canonical Source of Information (Write Data Store)

Slide 26

Slide 26 text

Join developers.redhat.com 26 Canonical Source of Information (Write Data Store) Read Data Store Read Data Store

Slide 27

Slide 27 text

Join developers.redhat.com 27 Canonical Source of Information (Write Data Store) Read Data Store Read Data Store Events Events

Slide 28

Slide 28 text

Different choices of technology depending on the requirements

Slide 29

Slide 29 text

Latency Size Staleness Ownership Security Type?

Slide 30

Slide 30 text

Join developers.redhat.com 30 http://infinispan.org/ In-memory Data Grids

Slide 31

Slide 31 text

Join developers.redhat.com 31 http://teiid.jboss.org/ Data Virtualization

Slide 32

Slide 32 text

Join developers.redhat.com 32 http://debezium.io/ Change Data Capture

Slide 33

Slide 33 text

Join developers.redhat.com Feedback welcome! @mariusbogoevici @yanaga

Slide 34

Slide 34 text

plus.google.com/+RedHat linkedin.com/company/red-hat youtube.com/user/RedHatVideos facebook.com/redhatinc twitter.com/RedHatNews Thank you!