'

CQRS - инновационное решение проблем современных Enterprise приложений.

Понравилась презентация – покажи это...





Слайд 0

CQRS - инновационное решение проблем современных Enterprise приложений. Андрей Ломакин (lomakin.andrey@gmail.com) Артем Оробец (enisher@gmail.com)


Слайд 1

Содержание Почему CQRS ? История возникновения современной архитектуры Проблемы CRUD CQRS как решение проблем Архитектура CQRS приложений Реализация CQRS на основе Axon framework Event Store от Exigen Services CQRS приложения разрабатываемые в Exigen Services


Слайд 2

Почему CQRS ? Почему CQRS ?


Слайд 3

Поговорим про эволюцию разработки Enterprise приложений ? С чего всё началось


Слайд 4

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


Слайд 5

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


Слайд 6

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


Слайд 7

Эра электронных архивов Наступила эра CRUD архитектуры


Слайд 8

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


Слайд 9

CRUD подход ориентирован не на отображение модели бизнес логики, а на манипуляцию данными. Однако…


Слайд 10

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


Слайд 11

Проблема 1. Использование JavaBean …. JavaBean – “Reusable software components that can be manipulated visually in a builder tool”.


Слайд 12

Нарушению инкапсуляции бизнес объектов. Ухудшению читаемости кода Трудности поддержки Вся бизнес логика переносится в методы сервисов. … приводит к …


Слайд 13

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


Слайд 14

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


Слайд 15

Проблема 4: В реальной жизни не бывает конфликтов модификации данных В бизнес процессах происходящих в реальной жизни не бывает конфликтов модификации данных. Если возникает такой конфликт значит это проблема в реализации бизнес логики. CRUD  не учитывает этого.


Слайд 16

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


Слайд 17

CQRS CQRS - Command Query Responsibility Segregation


Слайд 18

Проблема 1: Использование JavaBean Использование JavaBean остаётся для отображения данных на стороне обработки запросов, но JavaBean != Domain Entity.


Слайд 19

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


Слайд 20

Данные на стороне запросов Каждая таблица – денормализованное представление данных на экране пользователя Нет необходимости применять SQL базы данных. Высокопроизводительные альтернативы - Apache Cassandra, HBase, Hypertable ….


Слайд 21

Проблема 3: Проблема масштабируемости Целостность данных нужна только на стороне обработки бизнес логики. На стороне обработки запросов мы можем использовать eventual consistency


Слайд 22

Проблема 4: В реальной жизни не бывает конфликтов модификации данных 1. В виде значений переменных внутри объекта. Два способа представления состояния объекта


Слайд 23

Два подхода представления объектов +11.2 M $ + 5.3 M $ - 8.2 M $ Sum: 8.3 M $ 2. В виде последовательности событий


Слайд 24

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


Слайд 25

Два подхода представления объектов Преимущества: удобный мониторинг изменений состояния системы возможность отката состояния системы до любого момента времени удобный механизм репликации данных и разрешения конфликтов


Слайд 26

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


Слайд 27

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


Слайд 28

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


Слайд 29


Слайд 30

Queries Многослойная архитектура Запрос к DB CQRS Конвертирование в доменную модель Конвертирование в DTO Передача клиенту Запрос к DB Конвертирование в доменную модель Конвертирование в DTO Передача клиенту


Слайд 31


Слайд 32

Commands Команда – представляет собой отражение бизнес действия, действия в котором заинтересован пользователь приложения. Преимущество использования команд: Ориентация на бизнес проблемы пользователя. Удобный механизм мониторинга и масштабирования


Слайд 33


Слайд 34


Слайд 35

Event bus Репликация данных между компонентом обработки бизнес логики и компонентом селективных выборок. В обычном приложении количество селективных запросов на порядок больше количества запросов на изменение данных. Один бизнес компонент - множество query компонент


Слайд 36

….преимущества….. Хорошие условия для реализации DDD Использование CEP Готовность к облачным вычислениям Простота распределения обязанностей между узконаправленными командами


Слайд 37

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


Слайд 38

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


Слайд 39

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


Слайд 40


Слайд 41

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


Слайд 42


Слайд 43

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


Слайд 44

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


Слайд 45

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


Слайд 46


Слайд 47

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


Слайд 48

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


Слайд 49

Axon – repository и event store. Repository Event Store JPA File System JPA Mongo DB


Слайд 50

Event Stores – pros and cons нет поддержки ACID свойств большая скорость обработки данных JPA Event Store транзакционный но медленный Mongo DB, File system


Слайд 51

Orient DB Event store Поддержка транзакционности. Очень большая скорость чтения и записи данных. Поддержка кластеризации.


Слайд 52

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


Слайд 53

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


Слайд 54

Примеры реализации внутри компании Автоматизация выдачи залогов и учёт ценностей в ломбардах. Учёт нарядов выполненных работ в Днепропетровской Торгово-Промышленной Палате.


Слайд 55

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


Слайд 56

Вопросы


Слайд 57

Авторы Артём Оробец. twitter: @Dr_EniSh , enisher@gmail.com, skype: dr_enish Андрей Ломакин. twitter: @Andrey_Lomakin , lomakin.andrey@gmail.com , skype: lomakin_andrey


Слайд 58

Источники First CQRS introduction http://www.infoq.com/presentations/greg-young-unshackle-qcon08 CQRS architecture overview - http://elegantcode.com/2009/11/11/cqrs-la-greg-young/ Greg Young blog - http://codebetter.com/gregyoung/ Race conditions does not exist http://www.udidahan.com/2010/08/31/race-conditions-dont-exist/ Domain Driven Design Aggregator - http://domaindrivendesign.org/ Axon framework home page - http://code.google.com/p/axonframework/ Mark Nijhof blog http://cre8ivethought.com/blog


×

HTML:





Ссылка: