+ All Categories
Home > Documents > EVENT SOURCING DOMAIN-DRIVEN DESIGN, CQRS AND · DOMAIN-DRIVEN DESIGN, CQRS AND EVENT SOURCING...

EVENT SOURCING DOMAIN-DRIVEN DESIGN, CQRS AND · DOMAIN-DRIVEN DESIGN, CQRS AND EVENT SOURCING...

Date post: 22-May-2020
Category:
Upload: others
View: 20 times
Download: 0 times
Share this document with a friend
42
DOMAIN-DRIVEN DESIGN, CQRS AND EVENT SOURCING Vladimir Shalamanov Nikola Bogdanov
Transcript
Page 1: EVENT SOURCING DOMAIN-DRIVEN DESIGN, CQRS AND · DOMAIN-DRIVEN DESIGN, CQRS AND EVENT SOURCING Vladimir Shalamanov Nikola Bogdanov

DOMAIN-DRIVEN DESIGN, CQRS AND EVENT SOURCING

Vladimir ShalamanovNikola Bogdanov

Page 2: EVENT SOURCING DOMAIN-DRIVEN DESIGN, CQRS AND · DOMAIN-DRIVEN DESIGN, CQRS AND EVENT SOURCING Vladimir Shalamanov Nikola Bogdanov

WhereWe are always in a hurry

Page 3: EVENT SOURCING DOMAIN-DRIVEN DESIGN, CQRS AND · DOMAIN-DRIVEN DESIGN, CQRS AND EVENT SOURCING Vladimir Shalamanov Nikola Bogdanov

Where

Page 4: EVENT SOURCING DOMAIN-DRIVEN DESIGN, CQRS AND · DOMAIN-DRIVEN DESIGN, CQRS AND EVENT SOURCING Vladimir Shalamanov Nikola Bogdanov

Where~45 minutes later

Page 5: EVENT SOURCING DOMAIN-DRIVEN DESIGN, CQRS AND · DOMAIN-DRIVEN DESIGN, CQRS AND EVENT SOURCING Vladimir Shalamanov Nikola Bogdanov

Where… it could be much easier

Page 6: EVENT SOURCING DOMAIN-DRIVEN DESIGN, CQRS AND · DOMAIN-DRIVEN DESIGN, CQRS AND EVENT SOURCING Vladimir Shalamanov Nikola Bogdanov

REWE Digital Domain

Page 7: EVENT SOURCING DOMAIN-DRIVEN DESIGN, CQRS AND · DOMAIN-DRIVEN DESIGN, CQRS AND EVENT SOURCING Vladimir Shalamanov Nikola Bogdanov

About Us

VladoNikola

Page 8: EVENT SOURCING DOMAIN-DRIVEN DESIGN, CQRS AND · DOMAIN-DRIVEN DESIGN, CQRS AND EVENT SOURCING Vladimir Shalamanov Nikola Bogdanov

Microservices

DDD

Event Sourcing

CQRS

Demo

Page 9: EVENT SOURCING DOMAIN-DRIVEN DESIGN, CQRS AND · DOMAIN-DRIVEN DESIGN, CQRS AND EVENT SOURCING Vladimir Shalamanov Nikola Bogdanov

WhereMicro Services

Page 10: EVENT SOURCING DOMAIN-DRIVEN DESIGN, CQRS AND · DOMAIN-DRIVEN DESIGN, CQRS AND EVENT SOURCING Vladimir Shalamanov Nikola Bogdanov

Microservices

Tackle complexity via Modularization

Quick and Efficient Scaling

https://www.martinfowler.com/articles/microservices.html

Page 11: EVENT SOURCING DOMAIN-DRIVEN DESIGN, CQRS AND · DOMAIN-DRIVEN DESIGN, CQRS AND EVENT SOURCING Vladimir Shalamanov Nikola Bogdanov

Microservices

Based on Business Capabilities

Decentralized Governance

https://www.martinfowler.com/articles/microservices.html

Page 12: EVENT SOURCING DOMAIN-DRIVEN DESIGN, CQRS AND · DOMAIN-DRIVEN DESIGN, CQRS AND EVENT SOURCING Vladimir Shalamanov Nikola Bogdanov

Microservices

Decentralized Data management

Smart Endpoints and Dumb Pipes

Infrastructure Automation

https://www.martinfowler.com/articles/microservices.html

Page 13: EVENT SOURCING DOMAIN-DRIVEN DESIGN, CQRS AND · DOMAIN-DRIVEN DESIGN, CQRS AND EVENT SOURCING Vladimir Shalamanov Nikola Bogdanov

Microservices

Design for Failure

Evolutionary Design

https://www.martinfowler.com/articles/microservices.html

Page 14: EVENT SOURCING DOMAIN-DRIVEN DESIGN, CQRS AND · DOMAIN-DRIVEN DESIGN, CQRS AND EVENT SOURCING Vladimir Shalamanov Nikola Bogdanov

Demo

Page 15: EVENT SOURCING DOMAIN-DRIVEN DESIGN, CQRS AND · DOMAIN-DRIVEN DESIGN, CQRS AND EVENT SOURCING Vladimir Shalamanov Nikola Bogdanov

Imagine You are a Photographer

PhotographerCameraPhoto Photo

REWE Portfolio Service Photo

Upload Service

REST

Photo

REWE Photo Library

Kafka

Page 16: EVENT SOURCING DOMAIN-DRIVEN DESIGN, CQRS AND · DOMAIN-DRIVEN DESIGN, CQRS AND EVENT SOURCING Vladimir Shalamanov Nikola Bogdanov

Checkout my Kubernetes cluster

Page 17: EVENT SOURCING DOMAIN-DRIVEN DESIGN, CQRS AND · DOMAIN-DRIVEN DESIGN, CQRS AND EVENT SOURCING Vladimir Shalamanov Nikola Bogdanov
Page 18: EVENT SOURCING DOMAIN-DRIVEN DESIGN, CQRS AND · DOMAIN-DRIVEN DESIGN, CQRS AND EVENT SOURCING Vladimir Shalamanov Nikola Bogdanov

Domain Driven Design

Page 19: EVENT SOURCING DOMAIN-DRIVEN DESIGN, CQRS AND · DOMAIN-DRIVEN DESIGN, CQRS AND EVENT SOURCING Vladimir Shalamanov Nikola Bogdanov

Universal Domain Model is not needed

Page 20: EVENT SOURCING DOMAIN-DRIVEN DESIGN, CQRS AND · DOMAIN-DRIVEN DESIGN, CQRS AND EVENT SOURCING Vladimir Shalamanov Nikola Bogdanov
Page 21: EVENT SOURCING DOMAIN-DRIVEN DESIGN, CQRS AND · DOMAIN-DRIVEN DESIGN, CQRS AND EVENT SOURCING Vladimir Shalamanov Nikola Bogdanov

Bounded Context

Page 22: EVENT SOURCING DOMAIN-DRIVEN DESIGN, CQRS AND · DOMAIN-DRIVEN DESIGN, CQRS AND EVENT SOURCING Vladimir Shalamanov Nikola Bogdanov

Domain ModelBounded Context

Page 23: EVENT SOURCING DOMAIN-DRIVEN DESIGN, CQRS AND · DOMAIN-DRIVEN DESIGN, CQRS AND EVENT SOURCING Vladimir Shalamanov Nikola Bogdanov

Ubiquitous Language

Domain ModelBounded Context

Page 24: EVENT SOURCING DOMAIN-DRIVEN DESIGN, CQRS AND · DOMAIN-DRIVEN DESIGN, CQRS AND EVENT SOURCING Vladimir Shalamanov Nikola Bogdanov

Ubiquitous Language

Context Map

Domain ModelBounded Context

Page 25: EVENT SOURCING DOMAIN-DRIVEN DESIGN, CQRS AND · DOMAIN-DRIVEN DESIGN, CQRS AND EVENT SOURCING Vladimir Shalamanov Nikola Bogdanov

Explicit Boundaries

Context Map

Page 26: EVENT SOURCING DOMAIN-DRIVEN DESIGN, CQRS AND · DOMAIN-DRIVEN DESIGN, CQRS AND EVENT SOURCING Vladimir Shalamanov Nikola Bogdanov

REWE Digital Domain Model

Page 27: EVENT SOURCING DOMAIN-DRIVEN DESIGN, CQRS AND · DOMAIN-DRIVEN DESIGN, CQRS AND EVENT SOURCING Vladimir Shalamanov Nikola Bogdanov

Design inside a bounded context

Page 28: EVENT SOURCING DOMAIN-DRIVEN DESIGN, CQRS AND · DOMAIN-DRIVEN DESIGN, CQRS AND EVENT SOURCING Vladimir Shalamanov Nikola Bogdanov

Now code

So a photos related service?

PhotoService.java

Page 29: EVENT SOURCING DOMAIN-DRIVEN DESIGN, CQRS AND · DOMAIN-DRIVEN DESIGN, CQRS AND EVENT SOURCING Vladimir Shalamanov Nikola Bogdanov

Now code

Really a photos related service?

PhotoService.javaCameraService.java

Page 30: EVENT SOURCING DOMAIN-DRIVEN DESIGN, CQRS AND · DOMAIN-DRIVEN DESIGN, CQRS AND EVENT SOURCING Vladimir Shalamanov Nikola Bogdanov

Now code

What about the people?

PhotoService.javaCameraService.javaPhotographer.java

Page 31: EVENT SOURCING DOMAIN-DRIVEN DESIGN, CQRS AND · DOMAIN-DRIVEN DESIGN, CQRS AND EVENT SOURCING Vladimir Shalamanov Nikola Bogdanov

Consistency problem

Page 32: EVENT SOURCING DOMAIN-DRIVEN DESIGN, CQRS AND · DOMAIN-DRIVEN DESIGN, CQRS AND EVENT SOURCING Vladimir Shalamanov Nikola Bogdanov

Event Sourcing

From CRUD

To Events

https://martinfowler.com/bliki/CQRS.html https://martinfowler.com/eaaDev/EventSourcing.html

Page 33: EVENT SOURCING DOMAIN-DRIVEN DESIGN, CQRS AND · DOMAIN-DRIVEN DESIGN, CQRS AND EVENT SOURCING Vladimir Shalamanov Nikola Bogdanov

Event Sourcing

From CRUD

To Events

https://martinfowler.com/bliki/CQRS.html https://martinfowler.com/eaaDev/EventSourcing.html

Page 34: EVENT SOURCING DOMAIN-DRIVEN DESIGN, CQRS AND · DOMAIN-DRIVEN DESIGN, CQRS AND EVENT SOURCING Vladimir Shalamanov Nikola Bogdanov

Event Sourcing

From CRUD

To Events

https://martinfowler.com/bliki/CQRS.html https://martinfowler.com/eaaDev/EventSourcing.html

Page 35: EVENT SOURCING DOMAIN-DRIVEN DESIGN, CQRS AND · DOMAIN-DRIVEN DESIGN, CQRS AND EVENT SOURCING Vladimir Shalamanov Nikola Bogdanov

Benefits

Complete rebuild is possible

Temporal queries

Debugging

https://martinfowler.com/bliki/CQRS.html https://martinfowler.com/eaaDev/EventSourcing.html

Page 36: EVENT SOURCING DOMAIN-DRIVEN DESIGN, CQRS AND · DOMAIN-DRIVEN DESIGN, CQRS AND EVENT SOURCING Vladimir Shalamanov Nikola Bogdanov

Benefits

Suitable for transactional domains

Focus in domain behavior

Think temporal about your system

https://martinfowler.com/bliki/CQRS.html https://martinfowler.com/eaaDev/EventSourcing.html

Multiple Application States

(CQRS)

Page 37: EVENT SOURCING DOMAIN-DRIVEN DESIGN, CQRS AND · DOMAIN-DRIVEN DESIGN, CQRS AND EVENT SOURCING Vladimir Shalamanov Nikola Bogdanov

Command Query Responsibility Segregation

CQRS

Page 38: EVENT SOURCING DOMAIN-DRIVEN DESIGN, CQRS AND · DOMAIN-DRIVEN DESIGN, CQRS AND EVENT SOURCING Vladimir Shalamanov Nikola Bogdanov

Command Query Responsibility Segregation

Page 39: EVENT SOURCING DOMAIN-DRIVEN DESIGN, CQRS AND · DOMAIN-DRIVEN DESIGN, CQRS AND EVENT SOURCING Vladimir Shalamanov Nikola Bogdanov

CQRS + Event Sourcing

Page 40: EVENT SOURCING DOMAIN-DRIVEN DESIGN, CQRS AND · DOMAIN-DRIVEN DESIGN, CQRS AND EVENT SOURCING Vladimir Shalamanov Nikola Bogdanov

Demo? Where?

Page 41: EVENT SOURCING DOMAIN-DRIVEN DESIGN, CQRS AND · DOMAIN-DRIVEN DESIGN, CQRS AND EVENT SOURCING Vladimir Shalamanov Nikola Bogdanov

Thank You!Find us in LinkedIn

Page 42: EVENT SOURCING DOMAIN-DRIVEN DESIGN, CQRS AND · DOMAIN-DRIVEN DESIGN, CQRS AND EVENT SOURCING Vladimir Shalamanov Nikola Bogdanov

Q & A


Recommended