Top Banner
DOMAIN-DRIVEN DESIGN, CQRS AND EVENT SOURCING Vladimir Shalamanov Nikola Bogdanov
42

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

May 22, 2020

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
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