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

Содержание

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

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

Оробец (enisher@gmail.com)

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

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








Слайд 3Почему CQRS ?
Почему CQRS ?


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


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


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


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


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


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


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

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

Однако…


Слайд 11Основные проблемы CRUD
II. Основные проблемы CRUD


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

be manipulated visually in a builder tool”.

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

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


… приводит к …


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

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

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

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

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

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

Слайд 17CQRS как решение
III. CQRS как решение


Слайд 18CQRS
CQRS - Command Query Responsibility Segregation


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

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

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

стороне обработки запросов.

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

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

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


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



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

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

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

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

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


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



+11.2 M $
+ 5.3 M $
- 8.2 M

$

Sum: 8.3 M $

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


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

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

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

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




Слайд 27Разрешение конфликтов


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


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

реализуете, зависит только от вас.

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



Запрос к

DB

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

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

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






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

пользователь приложения.

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


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

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




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

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

Слайд 38Реализации CQRS
V. Реализация CQRS


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


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


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


Слайд 44Обработка команды


Слайд 45Бизнес действие


Слайд 46Обработка события изменения состояния


Слайд 48Запросная часть


Слайд 49Простота настройки


Слайд 50Axon – repository и event store.
Repository
Event Store
JPA
File System
JPA
Mongo DB


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

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

JPA Event Store

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

Mongo DB, File system


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

кластеризации.



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

Duo Core E520 2,5 GHz 2 Gb, 7200 RPM) :




Слайд 54Примеры реализации в ExigenServices
Примеры реализации в ExigenServices


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


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

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

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

Слайд 57
Вопросы


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

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


Слайд 59Источники
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




Обратная связь

Если не удалось найти и скачать презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое ThePresentation.ru?

Это сайт презентаций, докладов, проектов, шаблонов в формате PowerPoint. Мы помогаем школьникам, студентам, учителям, преподавателям хранить и обмениваться учебными материалами с другими пользователями.


Для правообладателей

Яндекс.Метрика