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

Содержание

Слайд 2

Содержание Почему CQRS ? История возникновения современной архитектуры Проблемы CRUD CQRS

Содержание

Почему CQRS ?
История возникновения современной архитектуры
Проблемы CRUD
CQRS как решение проблем
Архитектура CQRS

приложений
Реализация CQRS на основе Axon framework
Event Store от Exigen Services
CQRS приложения разрабатываемые в Exigen Services
Слайд 3

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

Почему CQRS ?

Почему CQRS ?

Слайд 4

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

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

?

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

Слайд 5

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

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

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

Слайд 6

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

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

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

Слайд 7

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

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

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

Слайд 8

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

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

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

Слайд 9

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

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

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

Слайд 10

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

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

манипуляцию данными.

Однако…

Слайд 11

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

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

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

Слайд 12

Проблема 1. Использование JavaBean …. JavaBean – “Reusable software components that

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

JavaBean – “Reusable software components that can

be manipulated visually in a builder tool”.
Слайд 13

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

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

в методы сервисов.

… приводит к …

Слайд 14

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

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

Использование ORM Tool вместе с

денормализацией размывает
Слайд 15

Проблема 3. Проблема масштабируемости В теореме CAP при обработке бизнес данных

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

В теореме CAP при обработке бизнес данных мы

всегда выбираем целостность данных (C)
Слайд 16

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

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

В бизнес

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

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

CQRS как решение

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

Слайд 18

CQRS CQRS - Command Query Responsibility Segregation

CQRS

CQRS - Command Query Responsibility Segregation

Слайд 19

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

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

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

обработки запросов, но JavaBean != Domain Entity.
Слайд 20

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

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

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

стороне обработки запросов.
Слайд 21

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

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

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

пользователя

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

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

Слайд 22

Проблема 3: Проблема масштабируемости Целостность данных нужна только на стороне обработки

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

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

логики.
На стороне обработки запросов мы можем использовать eventual consistency
Слайд 23

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

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

1. В

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

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

Слайд 24

Два подхода представления объектов +11.2 M $ + 5.3 M $

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

+11.2 M $

+ 5.3 M $

- 8.2 M

$

Sum: 8.3 M $

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

Слайд 25

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

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

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

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

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

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

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

системы до любого момента времени
удобный механизм репликации данных и разрешения конфликтов
Слайд 27

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

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

Слайд 28

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

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

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

Слайд 29

CQRS – это только подход CQRS это только подход, как вы

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

CQRS  это только подход,
как вы его

реализуете, зависит только от вас.
Слайд 30

Слайд 31

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

Queries

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

Запрос к DB

CQRS

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

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

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

Запрос к

DB

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

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

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

Слайд 32

Слайд 33

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

Commands

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

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

Слайд 35

Слайд 36

Event bus Репликация данных между компонентом обработки бизнес логики и компонентом

Event bus

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

выборок.
В обычном приложении количество селективных запросов на порядок больше количества запросов на изменение данных.
Один бизнес компонент - множество query компонент
Слайд 37

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

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

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

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

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

Реализации CQRS

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

Слайд 39

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

Axon framework

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

Слайд 40

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

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

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

Слайд 41

Слайд 42

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

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

Слайд 43

Слайд 44

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

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

Слайд 45

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

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

Слайд 46

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

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

Слайд 47

Слайд 48

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

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

Слайд 49

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

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

Слайд 50

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

Axon – repository и event store.

Repository

Event Store

JPA

File System

JPA

Mongo DB

Слайд 51

Event Stores – pros and cons нет поддержки ACID свойств большая

Event Stores – pros and cons

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

обработки данных

JPA Event Store

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

Mongo DB, File system

Слайд 52

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

Orient DB Event store

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

кластеризации.
Слайд 53

Orient DB Event store Результаты тестов на производительность (транзакций в секунду,

Orient DB Event store

Результаты тестов на производительность
(транзакций в секунду, Pentium

Duo Core E520 2,5 GHz 2 Gb, 7200 RPM) :
Слайд 54

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

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

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

Слайд 55

Примеры реализации внутри компании Автоматизация выдачи залогов и учёт ценностей в

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

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


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

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

Итоги

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

точки зрения их масштабируемости, мониторинга, построения сложной бизнес логики.
Слайд 57

Вопросы

Вопросы

Слайд 58

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

Авторы

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

, lomakin.andrey@gmail.com , skype: lomakin_andrey