CQRS innovations

58
10/28/22 www.ExigenServices.com CQRS - инновационное решение проблем современных Enterprise приложений. Андрей Ломакин ([email protected]) Артем Оробец ([email protected])

description

Презентация "CQRS - инновационное решение проблем современных Enterprise приложений" представленная на JEEConf

Transcript of CQRS innovations

Page 1: CQRS innovations

April 13, 2023 www.ExigenServices.com

CQRS - инновационное решение проблем современных Enterprise приложений.Андрей Ломакин ([email protected]) Артем Оробец ([email protected])

Page 2: CQRS innovations

2 www.ExigenServices.com

Содержание

1. Почему CQRS ?

a) История возникновения современной архитектуры

b) Проблемы CRUD

c) CQRS как решение проблем

2. Архитектура CQRS приложений

3. Реализация CQRS на основе Axon framework

4. Event Store от Exigen Services

5. CQRS приложения разрабатываемые в Exigen Services

Page 3: CQRS innovations

3 www.ExigenServices.com

Почему CQRS ?

I. Почему CQRS ?

Page 4: CQRS innovations

4 www.ExigenServices.com

Поговорим про эволюцию разработки Enterprise приложений

?

С чего всё началось

Page 5: CQRS innovations

5 www.ExigenServices.com

Эволюция представления документов

Эра бумажных документов

Page 6: CQRS innovations

6 www.ExigenServices.com

Эволюция представления документов

Эра электронных архивов

Page 7: CQRS innovations

7 www.ExigenServices.com

Эра электронных архивов

Поиск в электронных архивах

Page 8: CQRS innovations

8 www.ExigenServices.com

Эра электронных архивов

Наступила эра CRUD архитектуры

Page 9: CQRS innovations

9 www.ExigenServices.com

Эволюция обработки данных

Эра бизнес процессов

Page 10: CQRS innovations

10 www.ExigenServices.com

CRUD подход ориентирован не на отображение модели бизнес

логики, а на манипуляцию данными.

Однако…

Page 11: CQRS innovations

11 www.ExigenServices.com

Основные проблемы CRUD

II. Основные проблемы CRUD

Page 12: CQRS innovations

12 www.ExigenServices.com

Проблема 1. Использование JavaBean ….

JavaBean – “Reusable software components that can be manipulated visually in a builder tool”.

Page 13: CQRS innovations

13 www.ExigenServices.com

1. Нарушению инкапсуляции бизнес объектов.

2. Ухудшению читаемости кода3. Трудности поддержки4. Вся бизнес логика

переносится в методы сервисов.

… приводит к …

Page 14: CQRS innovations

14 www.ExigenServices.com

Проблема 2. Оптимизация производительности и её последствия.

Использование ORM Tool вместе с денормализацией размывает

Page 15: CQRS innovations

15 www.ExigenServices.com

Проблема 3. Проблема масштабируемости

В теореме CAP при обработке бизнес данных мы всегда выбираем целостность данных (C)

Page 16: CQRS innovations

16 www.ExigenServices.com

Проблема 4: В реальной жизни не бывает конфликтов модификации данных

В бизнес процессах происходящих в реальной жизни не бывает конфликтов модификации данных.

Если возникает такой конфликт значит это проблема в реализации бизнес логики.

CRUD не учитывает этого.

Page 17: CQRS innovations

17 www.ExigenServices.com

CQRS как решение

III. CQRS как решение

Page 18: CQRS innovations

18 www.ExigenServices.com

CQRS

CQRS - Command Query Responsibility Segregation

Page 19: CQRS innovations

19 www.ExigenServices.com

Проблема 1: Использование JavaBean

Использование JavaBean остаётся для отображения данных на стороне

обработки запросов, но JavaBean != Domain Entity.

Page 20: CQRS innovations

20 www.ExigenServices.com

Проблема 2: Оптимизация производительности и её последствия.

Денормализация данных выполняется только на стороне обработки

запросов.

Page 21: CQRS innovations

21 www.ExigenServices.com

Данные на стороне запросов

Каждая таблица – денормализованное представление данных на экране пользователя

Нет необходимости применять SQL базы данных.

Высокопроизводительные альтернативы - Apache Cassandra, HBase, Hypertable ….

Page 22: CQRS innovations

22 www.ExigenServices.com

Проблема 3: Проблема масштабируемости

Целостность данных нужна только на стороне обработки бизнес логики.

На стороне обработки запросов мы можем использовать eventual consistency

Page 23: CQRS innovations

23 www.ExigenServices.com

Проблема 4: В реальной жизни не бывает конфликтов модификации данных

1. В виде значений переменных внутри объекта.

Два способа представления состояния объекта

Page 24: CQRS innovations

24 www.ExigenServices.com

Два подхода представления объектов

+11.2 M $ + 5.3 M $ - 8.2 M $

Sum: 8.3 M $

2. В виде последовательности событий

Page 25: CQRS innovations

25 www.ExigenServices.com

Два подхода представления объектов

Каждый агрегат – это пакет событий. Нет необходимости использовать

реляционные базы данных. База должна обладать ACID свойствами.

Page 26: CQRS innovations

26 www.ExigenServices.com

Два подхода представления объектов

Преимущества: удобный мониторинг изменений состояния

системы возможность отката состояния системы до

любого момента времени удобный механизм репликации данных и

разрешения конфликтов

Page 27: CQRS innovations

27 www.ExigenServices.com

Разрешение конфликтов

Correct customer address

Customer reallocated

Conflict resolver

Customer reallocated

Page 28: CQRS innovations

28 www.ExigenServices.com

Архитектура CQRS приложений

IV. Архитектура CQRS приложений

Page 29: CQRS innovations

29 www.ExigenServices.com

CQRS – это только подход

CQRS это только подход, как вы его реализуете, зависит

только от вас.

Page 30: CQRS innovations
Page 31: CQRS innovations

31 www.ExigenServices.com

Queries

Многослойная архитектура

Запрос к DB

CQRS

Конвертирование в доменную модель

Конвертирование в DTO

Передача клиенту

Запрос к DB

Конвертирование в доменную модель

Конвертирование в DTO

Передача клиенту

Page 32: CQRS innovations
Page 33: CQRS innovations

33 www.ExigenServices.com

Commands

Команда – представляет собой отражение бизнес действия, действия в котором заинтересован пользователь приложения.

Преимущество использования команд:1. Ориентация на бизнес проблемы пользователя.2. Удобный механизм мониторинга и

масштабирования

Page 34: CQRS innovations
Page 35: CQRS innovations
Page 36: CQRS innovations

37 www.ExigenServices.com

….преимущества…..

1. Хорошие условия для реализации DDD2. Использование CEP3. Готовность к облачным вычислениям4. Простота распределения обязанностей

между узконаправленными командами

Page 37: CQRS innovations

38 www.ExigenServices.com

Реализации CQRS

V. Реализация CQRS

Page 38: CQRS innovations

39 www.ExigenServices.com

Axon framework

Axon framework - самый популярный и наиболее функциональный.

Page 39: CQRS innovations

40 www.ExigenServices.com

Пример CQRS приложения

Address Book –управление списком адресов

Page 40: CQRS innovations
Page 41: CQRS innovations

42 www.ExigenServices.com

Создание и отправка команды

Page 42: CQRS innovations
Page 43: CQRS innovations

44 www.ExigenServices.com

Обработка команды

Page 44: CQRS innovations

45 www.ExigenServices.com

Бизнес действие

Page 45: CQRS innovations

46 www.ExigenServices.com

Обработка события изменения состояния

Page 46: CQRS innovations
Page 47: CQRS innovations

48 www.ExigenServices.com

Запросная часть

Page 48: CQRS innovations

49 www.ExigenServices.com

Простота настройки

Page 49: CQRS innovations

50 www.ExigenServices.com

Axon – repository и event store.

Repository

Event Store

JPA

File System JPA Mongo DB

Page 50: CQRS innovations

51 www.ExigenServices.com

Event Stores – pros and cons

нет поддержки ACID свойств большая скорость обработки

данных

JPA Event Store

транзакционный но медленный

Mongo DB, File system

Page 51: CQRS innovations

52 www.ExigenServices.com

Orient DB Event store

Поддержка транзакционности. Очень большая скорость чтения и записи

данных. Поддержка кластеризации.

Page 52: CQRS innovations

53 www.ExigenServices.com

Orient DB Event store

Результаты тестов на производительность (транзакций в секунду, Pentium Duo Core E520 2,5 GHz 2 Gb, 7200 RPM) :

Test File system JPA Orient DBSmall transactions 3330 946 3146Big transactions 8506 1582 3354

Page 53: CQRS innovations

54 www.ExigenServices.com

Примеры реализации в ExigenServices

Примеры реализации в ExigenServices

Page 54: CQRS innovations

55 www.ExigenServices.com

Примеры реализации внутри компании

Автоматизация выдачи залогов и учёт ценностей в ломбардах.

Учёт нарядов выполненных работ в Днепропетровской

Торгово-Промышленной Палате.

Page 55: CQRS innovations

56 www.ExigenServices.com

Итоги

CQRS – подход, обеспечивающий реализацию современных требований к корпоративным системам с точки зрения их масштабируемости, мониторинга, построения сложной бизнес логики.

Page 56: CQRS innovations

57 www.ExigenServices.com

Вопросы

Page 57: CQRS innovations

58 www.ExigenServices.com

Авторы

Артём Оробец. twitter: @Dr_EniSh , [email protected], skype: dr_enish

Андрей Ломакин. twitter: @Andrey_Lomakin , [email protected] , skype: lomakin_andrey

Page 58: CQRS innovations

59 www.ExigenServices.com

Источники

1. First CQRS introduction http://www.infoq.com/presentations/greg-young-unshackle-qcon08

2. CQRS architecture overview - http://elegantcode.com/2009/11/11/cqrs-la-greg-young/

3. Greg Young blog - http://codebetter.com/gregyoung/

4. Race conditions does not exist http://www.udidahan.com/2010/08/31/race-conditions-dont-exist/

5. Domain Driven Design Aggregator - http://domaindrivendesign.org/

6. Axon framework home page - http://code.google.com/p/axonframework/

7. Mark Nijhof blog http://cre8ivethought.com/blog