Построение read model-ей с использованием потоков событий

Post on 15-Jan-2017

142 Views

Category:

Education

3 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Построение Read Model-ей с использованием потоков событий

https://github.com/denisivan0v@denisivanov

Бизнес домен

Продажи

Бизнес домен

- Сотрудники с разными потребностями

Бизнес домен

- Сотрудники с разными потребностями

- Много бизнес-процессов и сценариев

Бизнес домен

- Сотрудники с разными потребностями

- Много бизнес-процессов и сценариев

- Частые проверки целостности

Бизнес домен

- Сотрудники с разными потребностями

- Много бизнес-процессов и сценариев

- Частые проверки целостности- Отчеты

Классический подход

User Interface

Business Logic

Database

Классический подход

User Interface

Business Logic

DatabaseSQL Server

Классический подход

User Interface

Business Logic

DatabaseSQL Server

ORM

Классический подход

User Interface

Business Logic

DatabaseSQL Server

Repositories

Services

ORM

Классический подход

User Interface

Business Logic

DatabaseSQL Server

Repositories

Services

ASP.NET MVC + JS

ORM

Ограничения

- Потеря бизнес-смысла при работе на уровне данных

Ограничения

- Потеря бизнес-смысла при работе на уровне данных

- Баланс между кейсами чтения и записи

Ограничения

- Потеря бизнес-смысла при работе на уровне данных

- Баланс между кейсами чтения и записи

- Изменения схемы данных

Ограничения

- Много параметризованных запросов

Ограничения

- Много параметризованных запросов

- Обобщенный API

Ограничения

- Много параметризованных запросов

- Обобщенный API- Запросы данных из многих систем

Ограничения

- Много параметризованных запросов

- Обобщенный API- Запросы данных из многих систем- Запросы вычисляемых данных

Другой подход

Command and Query Responsibility Segregation

CQRS-подход

User Interface

Business Logic

Database

Thin Read Layer

CQRS-подход

Bounded context

CQRS-подход

User Interface

Business Logic

Database

Thin Read Layer

CQRS-подход

User Interface

Business Logic

Database

Thin Read Layer

Database

CQRS-подход

User Interface

Business Logic

Database

Thin Read Layer

Database

CQRS-подход

User Interface

Domain Model

Event Store

Thin Read Layer

Database

CQRS-подход

Eventual consistency

CQRS-подход

User Interface

Business Logic

Database

Thin Read Layer

Database

Read Model

CQRS-подход

User Interface

Write Model Read Model

CQRS-подход

User Interface

Write Model Read Model

Read Model

Read Model

Построение Read Model

User Interface

Business Logic

Database

Построение Read Model

User Interface

Business Logic

Database

Events

Построение Read Model

User Interface

Business Logic

Database

Events Observer

Построение Read Model

User Interface

Business Logic

Database

Events

Database

Observer

Построение Read Model

User Interface

Business Logic

Database

Events

Database

Observer

Построение Read Model

User Interface

Business Logic

Database

Events Querying

API

Database

Observer

Построение Read Model

User Interface

Business Logic

Database

Events Querying

API

Database

Observer

Построение Read Model

NuClear Riverhttps://

github.com/2gis/nuclear-river

NuClear River

User Interface

Business Logic

Database

Events Querying

API

Database

Observer

NuClear River

User Interface

Business Logic

Database

Querying API

NuClear River. Querying

- REST API на основе протокола OData

NuClear River. Querying

- REST API на основе протокола OData

- WebAPI + OData libs + EF stack

NuClear River. Querying

- REST API на основе протокола OData

- WebAPI + OData libs + EF stack- Кастомизация из коробки (DSL)

NuClear River. Querying

Demo

NuClear River. Observer

- Pipeline-based

NuClear River. Observer

- Pipeline-based- Отдельное хранилище «фактов»

NuClear River. Observer

- Pipeline-based- Отдельное хранилище «фактов»- Обеспечивает согласованность

агрегатов в модели чтения

NuClear River. Observer

- Pipeline-based- Отдельное хранилище «фактов»- Обеспечивает согласованность

агрегатов в модели чтения- Кастомизация из коробки (DSL)

NuClear River. Telemetry

- Использует ELK stack

NuClear River. Telemetry

- Использует ELK stack- Позволяет хранить и

анализировать любою информацию о работе системы

NuClear River. Telemetry

Demo

Profits

Profits

- Высокая согласованность с бизнесом

Profits

- Высокая согласованность с бизнесом

- Выбор уровня связанности моделей чтения

Profits

- Высокая согласованность с бизнесом

- Выбор уровня связанности моделей чтения

- API на основе открытого стандарта

Profits

- Высокая согласованность с бизнесом

- Выбор уровня связанности моделей чтения

- API на основе открытого стандарта- Производительность

Summary

- Классический подход работает, но не всегда

Summary

- Классический подход работает, но не всегда

- Начинайте с бизнес-кейсов, определите bounded context

Summary

- Классический подход работает, но не всегда

- Начинайте с бизнес-кейсов, определите bounded context

- Выбирайте подходящий способ решения задач

Summary

- Классический подход работает, но не всегда

- Начинайте с бизнес-кейсов, определите bounded context

- Выбирайте подходящий способ решения задач

- Используйте NuClear River для экономии

Вопросы?Денис Ивановhttps://github.com/denisivan0v@denisivanov

top related