Построение read model-ей с использованием потоков событий
Post on 15-Jan-2017
142 Views
Preview:
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
Join NuClear River!
https://github.com/2gis/nuclear-river
https://2gis.gitbooks.io/nuclear-river/content/en/index.html
top related