SlideShare une entreprise Scribd logo
1  sur  58
CQRS - инновационное решение проблем современных Enterpriseприложений. Андрей Ломакин (lomakin.andrey@gmail.com)  Артем Оробец(enisher@gmail.com)
Содержание Почему CQRS ? История возникновения современной архитектуры Проблемы CRUD CQRS как решениепроблем Архитектура CQRS приложений Реализация CQRS на основе Axon framework Event Store от ExigenServices CQRS приложения разрабатываемые в Exigen Services
Почему CQRS ?  Почему CQRS ?
С чего всё началось Поговорим про эволюцию разработки Enterprise приложений ?
Эволюция представления документов Эра бумажных документов
Эволюция представления документов Эра электронных архивов
Эра электронных архивов Поиск в электронных архивах
Эра электронных архивов Наступила эра CRUD архитектуры
Эволюция обработки данных Эра бизнес процессов
CRUD подход ориентирован не на отображение модели бизнес логики, а на манипуляцию данными. Однако…
Основные проблемы CRUD II.  Основные проблемы CRUD
Проблема 1. Использование JavaBean …. JavaBean– “Reusable software components that can be manipulated visually in a builder tool”.
Нарушению инкапсуляции бизнес объектов.  Ухудшению читаемости кода Трудности поддержки Вся бизнес логика переносится в методысервисов. … приводит к …
Проблема 2.  Оптимизация производительности  и её последствия. Использование ORM Tool вместе с денормализацией размывает
Проблема 3. Проблема масштабируемости Втеореме CAP при обработке бизнес данных мы всегда выбираем целостность данных (C)
Проблема 4: В реальной жизни не бывает конфликтов модификации данных В бизнес процессах происходящих в реальной жизни не бывает конфликтов модификации данных.  Если возникает такой конфликт значит это проблема в реализации бизнес логики.  CRUD  не учитывает этого.
CQRS как решение III.  CQRS как решение
CQRS CQRS - Command Query Responsibility Segregation
Проблема 1: Использование JavaBean Использование JavaBean остаётся для отображения данных на стороне обработки запросов, но JavaBean != DomainEntity.
Проблема 2:  Оптимизация производительности  и её последствия. Денормализация данных выполняется только на стороне обработки запросов.
Данные на стороне запросов Каждая таблица – денормализованное представление данных на экране пользователя Нет необходимости применять SQL базы данных. Высокопроизводительные альтернативы - Apache Cassandra, HBase, Hypertable ….
Проблема 3:Проблема масштабируемости Целостность данных нужна только на стороне обработки бизнес логики. На стороне обработки запросов мы можем использовать eventual consistency
Проблема 4: В реальной жизни не бывает конфликтов модификации данных Два способа представления состояния объекта 1. В виде значений переменных внутри объекта.
Два подхода представления объектов 2. В виде последовательности событий + 5.3 M $ +11.2 M $ - 8.2 M $ Sum: 8.3 M $
Два подхода представления объектов Каждый агрегат – это пакет событий. Нет необходимости использовать реляционныебазы данных. База должна обладать ACID свойствами.
Два подхода представления объектов Преимущества: ,[object Object]
возможность отката состояния системы до любого момента времени
удобный механизм репликации данныхи разрешения конфликтов,[object Object]
Архитектура CQRS приложений IV. Архитектура CQRS приложений
CQRS – это только подход CQRS  это только подход,  как вы его реализуете, зависит только от вас.
Queries Многослойная архитектура CQRS Запрос к DB Запрос к DB Конвертирование в  доменную модель Конвертирование в  доменную модель Конвертирование в DTO Конвертирование в DTO Передача клиенту Передача клиенту
Commands Команда – представляет собой отражение бизнес действия, действия в котором заинтересован пользователь приложения. Преимущество использования команд: Ориентация на бизнес проблемы пользователя. Удобный механизм мониторинга и масштабирования
Event bus Репликация данных между компонентом обработки бизнес логики и компонентом селективных выборок. В обычном приложении количество селективных запросов на порядок больше количества запросов на изменение данных.  Один бизнес компонент  - множество query компонент
….преимущества….. Хорошие условия для реализации DDD Использование CEP Готовность к облачным вычислениям Простота распределения обязанностей между узконаправленными командами
Реализации CQRS V.  Реализация CQRS
Axon framework Axon framework  - самый популярный и наиболее функциональный.
Пример CQRS приложения Address Book –управление списком адресов
Создание и отправка команды
Обработка команды
Бизнес действие
Обработка события изменения состояния
Запросная часть
Простота настройки
Axon – repository и event store. Repository JPA Event Store Mongo DB File System JPA
Event Stores – pros and cons JPA Event Store Mongo DB, File system транзакционный но медленный нет поддержки ACID свойств большая скорость обработки данных
Orient DB Event store Поддержка транзакционности. Очень большая скорость чтения и  записи данных. Поддержка кластеризации.
Orient DB Event store Результаты тестов на производительность (транзакций в секунду, Pentium Duo Core E520 2,5 GHz 2 Gb, 7200 RPM) :
Примеры реализации в ExigenServices Примеры реализации в ExigenServices
Примеры реализации внутри компании Автоматизация выдачи залогов и учёт ценностей в ломбардах.  Учёт нарядов выполненных работ в Днепропетровской  Торгово-Промышленной Палате.
Итоги CQRS – подход, обеспечивающий реализацию современных требований к корпоративным системам с точки зрения их масштабируемости, мониторинга, построения сложной бизнес логики.
Вопросы

Contenu connexe

Tendances

Александр Афенов
Александр АфеновАлександр Афенов
Александр АфеновCodeFest
 
Test driven development in net
Test driven development in netTest driven development in net
Test driven development in netAlex Tumanoff
 
Sql server clr integration
Sql server clr integration Sql server clr integration
Sql server clr integration Alex Tumanoff
 
Масштабирование баз данных. (Database Scalability)
Масштабирование баз данных. (Database Scalability)Масштабирование баз данных. (Database Scalability)
Масштабирование баз данных. (Database Scalability)Andrew Avdeev
 
Ара Исраелян "Как ускорить разработку приложений"
Ара Исраелян "Как ускорить разработку приложений"Ара Исраелян "Как ускорить разработку приложений"
Ара Исраелян "Как ускорить разработку приложений"IT Event
 
Дмитрий Дегтярев, "Хабикаса"
Дмитрий Дегтярев, "Хабикаса"Дмитрий Дегтярев, "Хабикаса"
Дмитрий Дегтярев, "Хабикаса"Ontico
 
Андрей Лузин
Андрей ЛузинАндрей Лузин
Андрей ЛузинCodeFest
 
Сергей Орлов
Сергей ОрловСергей Орлов
Сергей ОрловCodeFest
 
Rich-client, или Как я перестал боятся и полюбил велосипеды / Владимир Дупелев
Rich-client, или Как я перестал боятся и полюбил велосипеды / Владимир ДупелевRich-client, или Как я перестал боятся и полюбил велосипеды / Владимир Дупелев
Rich-client, или Как я перестал боятся и полюбил велосипеды / Владимир ДупелевOntico
 
Александр Белоцерковский
Александр БелоцерковскийАлександр Белоцерковский
Александр БелоцерковскийCodeFest
 
Андрей Ларионов, Moscow Atlassian Meetup 21 апреля, Mail.Ru Group
Андрей Ларионов, Moscow Atlassian Meetup 21 апреля, Mail.Ru GroupАндрей Ларионов, Moscow Atlassian Meetup 21 апреля, Mail.Ru Group
Андрей Ларионов, Moscow Atlassian Meetup 21 апреля, Mail.Ru GroupMail.ru Group
 
2012-12-01 03 Битва ORM: Hibernate vs MyBatis. Давайте жить дружно!
2012-12-01 03 Битва ORM: Hibernate vs MyBatis. Давайте жить дружно!2012-12-01 03 Битва ORM: Hibernate vs MyBatis. Давайте жить дружно!
2012-12-01 03 Битва ORM: Hibernate vs MyBatis. Давайте жить дружно!Омские ИТ-субботники
 
NAS, Predictions, Preloading, Presudo-Isomorphism / Охрименко Алексей (Acronis)
NAS, Predictions, Preloading, Presudo-Isomorphism / Охрименко Алексей (Acronis)NAS, Predictions, Preloading, Presudo-Isomorphism / Охрименко Алексей (Acronis)
NAS, Predictions, Preloading, Presudo-Isomorphism / Охрименко Алексей (Acronis)Ontico
 
Андрей Чебукин "Построение успешных API"
Андрей Чебукин "Построение успешных API"Андрей Чебукин "Построение успешных API"
Андрей Чебукин "Построение успешных API"Fwdays
 
Высокопроизводительные приложения на базе Windows Azure
Высокопроизводительные приложения на базе Windows AzureВысокопроизводительные приложения на базе Windows Azure
Высокопроизводительные приложения на базе Windows AzureAlexander Feschenko
 
Велосипед уже изобретен. Что умеют промышленные СХД? / Антон Жбанков (Nutanix)
Велосипед уже изобретен. Что умеют промышленные СХД? / Антон Жбанков (Nutanix)Велосипед уже изобретен. Что умеют промышленные СХД? / Антон Жбанков (Nutanix)
Велосипед уже изобретен. Что умеют промышленные СХД? / Антон Жбанков (Nutanix)Ontico
 
Евгений Остапчук "Tips&Tricks for ASP.NET MVC performance"
Евгений Остапчук "Tips&Tricks for ASP.NET MVC performance"Евгений Остапчук "Tips&Tricks for ASP.NET MVC performance"
Евгений Остапчук "Tips&Tricks for ASP.NET MVC performance"Fwdays
 
Архитектура программных систем на Node.js
Архитектура программных систем на Node.jsАрхитектура программных систем на Node.js
Архитектура программных систем на Node.jsTimur Shemsedinov
 
Сергей Морковкин "Разработка realtime SPA с использованием VueJS и RethinkDB"
Сергей Морковкин "Разработка realtime SPA с использованием VueJS и RethinkDB"Сергей Морковкин "Разработка realtime SPA с использованием VueJS и RethinkDB"
Сергей Морковкин "Разработка realtime SPA с использованием VueJS и RethinkDB"Fwdays
 
Enterprise or not to enterprise
Enterprise or not to enterpriseEnterprise or not to enterprise
Enterprise or not to enterpriseAlex Tumanoff
 

Tendances (20)

Александр Афенов
Александр АфеновАлександр Афенов
Александр Афенов
 
Test driven development in net
Test driven development in netTest driven development in net
Test driven development in net
 
Sql server clr integration
Sql server clr integration Sql server clr integration
Sql server clr integration
 
Масштабирование баз данных. (Database Scalability)
Масштабирование баз данных. (Database Scalability)Масштабирование баз данных. (Database Scalability)
Масштабирование баз данных. (Database Scalability)
 
Ара Исраелян "Как ускорить разработку приложений"
Ара Исраелян "Как ускорить разработку приложений"Ара Исраелян "Как ускорить разработку приложений"
Ара Исраелян "Как ускорить разработку приложений"
 
Дмитрий Дегтярев, "Хабикаса"
Дмитрий Дегтярев, "Хабикаса"Дмитрий Дегтярев, "Хабикаса"
Дмитрий Дегтярев, "Хабикаса"
 
Андрей Лузин
Андрей ЛузинАндрей Лузин
Андрей Лузин
 
Сергей Орлов
Сергей ОрловСергей Орлов
Сергей Орлов
 
Rich-client, или Как я перестал боятся и полюбил велосипеды / Владимир Дупелев
Rich-client, или Как я перестал боятся и полюбил велосипеды / Владимир ДупелевRich-client, или Как я перестал боятся и полюбил велосипеды / Владимир Дупелев
Rich-client, или Как я перестал боятся и полюбил велосипеды / Владимир Дупелев
 
Александр Белоцерковский
Александр БелоцерковскийАлександр Белоцерковский
Александр Белоцерковский
 
Андрей Ларионов, Moscow Atlassian Meetup 21 апреля, Mail.Ru Group
Андрей Ларионов, Moscow Atlassian Meetup 21 апреля, Mail.Ru GroupАндрей Ларионов, Moscow Atlassian Meetup 21 апреля, Mail.Ru Group
Андрей Ларионов, Moscow Atlassian Meetup 21 апреля, Mail.Ru Group
 
2012-12-01 03 Битва ORM: Hibernate vs MyBatis. Давайте жить дружно!
2012-12-01 03 Битва ORM: Hibernate vs MyBatis. Давайте жить дружно!2012-12-01 03 Битва ORM: Hibernate vs MyBatis. Давайте жить дружно!
2012-12-01 03 Битва ORM: Hibernate vs MyBatis. Давайте жить дружно!
 
NAS, Predictions, Preloading, Presudo-Isomorphism / Охрименко Алексей (Acronis)
NAS, Predictions, Preloading, Presudo-Isomorphism / Охрименко Алексей (Acronis)NAS, Predictions, Preloading, Presudo-Isomorphism / Охрименко Алексей (Acronis)
NAS, Predictions, Preloading, Presudo-Isomorphism / Охрименко Алексей (Acronis)
 
Андрей Чебукин "Построение успешных API"
Андрей Чебукин "Построение успешных API"Андрей Чебукин "Построение успешных API"
Андрей Чебукин "Построение успешных API"
 
Высокопроизводительные приложения на базе Windows Azure
Высокопроизводительные приложения на базе Windows AzureВысокопроизводительные приложения на базе Windows Azure
Высокопроизводительные приложения на базе Windows Azure
 
Велосипед уже изобретен. Что умеют промышленные СХД? / Антон Жбанков (Nutanix)
Велосипед уже изобретен. Что умеют промышленные СХД? / Антон Жбанков (Nutanix)Велосипед уже изобретен. Что умеют промышленные СХД? / Антон Жбанков (Nutanix)
Велосипед уже изобретен. Что умеют промышленные СХД? / Антон Жбанков (Nutanix)
 
Евгений Остапчук "Tips&Tricks for ASP.NET MVC performance"
Евгений Остапчук "Tips&Tricks for ASP.NET MVC performance"Евгений Остапчук "Tips&Tricks for ASP.NET MVC performance"
Евгений Остапчук "Tips&Tricks for ASP.NET MVC performance"
 
Архитектура программных систем на Node.js
Архитектура программных систем на Node.jsАрхитектура программных систем на Node.js
Архитектура программных систем на Node.js
 
Сергей Морковкин "Разработка realtime SPA с использованием VueJS и RethinkDB"
Сергей Морковкин "Разработка realtime SPA с использованием VueJS и RethinkDB"Сергей Морковкин "Разработка realtime SPA с использованием VueJS и RethinkDB"
Сергей Морковкин "Разработка realtime SPA с использованием VueJS и RethinkDB"
 
Enterprise or not to enterprise
Enterprise or not to enterpriseEnterprise or not to enterprise
Enterprise or not to enterprise
 

Similaire à CQRS innovations

Andrii Gryshchenko: "An Overview of CQRS and Event Sourcing"
Andrii Gryshchenko: "An Overview of CQRS and Event Sourcing"Andrii Gryshchenko: "An Overview of CQRS and Event Sourcing"
Andrii Gryshchenko: "An Overview of CQRS and Event Sourcing"LogeekNightUkraine
 
Виртуализация критически важных приложений
Виртуализация критически важных приложенийВиртуализация критически важных приложений
Виртуализация критически важных приложенийJack Chikovany
 
CloudsNN 2013 Демидов Александр. Как жить в облаке без админов?
CloudsNN 2013 Демидов Александр. Как жить в облаке без админов?CloudsNN 2013 Демидов Александр. Как жить в облаке без админов?
CloudsNN 2013 Демидов Александр. Как жить в облаке без админов?Clouds NN
 
Проектирование высоконагруженного масштабируемого веб-сервиса в облаке на при...
Проектирование высоконагруженного масштабируемого веб-сервиса в облаке на при...Проектирование высоконагруженного масштабируемого веб-сервиса в облаке на при...
Проектирование высоконагруженного масштабируемого веб-сервиса в облаке на при...Ontico
 
DUMP-2013 Serverside - Архитектура Битрикс24 в Amazon Web Services – изнутри ...
DUMP-2013 Serverside - Архитектура Битрикс24 в Amazon Web Services – изнутри ...DUMP-2013 Serverside - Архитектура Битрикс24 в Amazon Web Services – изнутри ...
DUMP-2013 Serverside - Архитектура Битрикс24 в Amazon Web Services – изнутри ...it-people
 
VMUG UA #1 BMC Capacity Optimization
VMUG UA #1 BMC Capacity OptimizationVMUG UA #1 BMC Capacity Optimization
VMUG UA #1 BMC Capacity Optimization Amazon Web Services
 
Облачные вычисления - игры кончились, началась работа
Облачные вычисления - игры кончились, началась работаОблачные вычисления - игры кончились, началась работа
Облачные вычисления - игры кончились, началась работаКРОК
 
AiCare - самоорганизующийся сервис управления
AiCare - самоорганизующийся сервис управленияAiCare - самоорганизующийся сервис управления
AiCare - самоорганизующийся сервис управленияКварта Технологии
 
“КП” в интернете (Александр Ромашин, Вячеслав Малютин)
“КП” в интернете (Александр Ромашин, Вячеслав Малютин)“КП” в интернете (Александр Ромашин, Вячеслав Малютин)
“КП” в интернете (Александр Ромашин, Вячеслав Малютин)Ontico
 
Petrov Cloud for corporate customer
Petrov Cloud for corporate customerPetrov Cloud for corporate customer
Petrov Cloud for corporate customerAnton Petrov
 
20151112 Что нового в DB PowerStudio 2016
20151112 Что нового в DB PowerStudio 201620151112 Что нового в DB PowerStudio 2016
20151112 Что нового в DB PowerStudio 2016Andrew Sovtsov
 
Новости и анонсы конференции Oracle Open World 2013
Новости и анонсы конференции Oracle Open World 2013Новости и анонсы конференции Oracle Open World 2013
Новости и анонсы конференции Oracle Open World 2013Andrey Akulov
 
Презентация Microsoft PowerPoint
Презентация Microsoft PowerPointПрезентация Microsoft PowerPoint
Презентация Microsoft PowerPointwebhostingguy
 
Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)
Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)
Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)Ontico
 
Oracle Timesten
Oracle TimestenOracle Timesten
Oracle TimestenOntico
 
Тестирование высоконагруженных облачных веб-сервисов в Amazon - подводные кам...
Тестирование высоконагруженных облачных веб-сервисов в Amazon - подводные кам...Тестирование высоконагруженных облачных веб-сервисов в Amazon - подводные кам...
Тестирование высоконагруженных облачных веб-сервисов в Amazon - подводные кам...SQALab
 
Roman Zdebskiy - Windows Azure
Roman Zdebskiy - Windows AzureRoman Zdebskiy - Windows Azure
Roman Zdebskiy - Windows AzureAndrew Mayorov
 
Презентация технологии веб-кластеров
Презентация технологии веб-кластеров  Презентация технологии веб-кластеров
Презентация технологии веб-кластеров 1С-Битрикс
 

Similaire à CQRS innovations (20)

Andrii Gryshchenko: "An Overview of CQRS and Event Sourcing"
Andrii Gryshchenko: "An Overview of CQRS and Event Sourcing"Andrii Gryshchenko: "An Overview of CQRS and Event Sourcing"
Andrii Gryshchenko: "An Overview of CQRS and Event Sourcing"
 
Виртуализация критически важных приложений
Виртуализация критически важных приложенийВиртуализация критически важных приложений
Виртуализация критически важных приложений
 
CloudsNN 2013 Демидов Александр. Как жить в облаке без админов?
CloudsNN 2013 Демидов Александр. Как жить в облаке без админов?CloudsNN 2013 Демидов Александр. Как жить в облаке без админов?
CloudsNN 2013 Демидов Александр. Как жить в облаке без админов?
 
Проектирование высоконагруженного масштабируемого веб-сервиса в облаке на при...
Проектирование высоконагруженного масштабируемого веб-сервиса в облаке на при...Проектирование высоконагруженного масштабируемого веб-сервиса в облаке на при...
Проектирование высоконагруженного масштабируемого веб-сервиса в облаке на при...
 
DUMP-2013 Serverside - Архитектура Битрикс24 в Amazon Web Services – изнутри ...
DUMP-2013 Serverside - Архитектура Битрикс24 в Amazon Web Services – изнутри ...DUMP-2013 Serverside - Архитектура Битрикс24 в Amazon Web Services – изнутри ...
DUMP-2013 Serverside - Архитектура Битрикс24 в Amazon Web Services – изнутри ...
 
VMUG UA #1 BMC Capacity Optimization
VMUG UA #1 BMC Capacity OptimizationVMUG UA #1 BMC Capacity Optimization
VMUG UA #1 BMC Capacity Optimization
 
Облачные вычисления - игры кончились, началась работа
Облачные вычисления - игры кончились, началась работаОблачные вычисления - игры кончились, началась работа
Облачные вычисления - игры кончились, началась работа
 
AiCare - self-organizing device management service
AiCare - self-organizing device management serviceAiCare - self-organizing device management service
AiCare - self-organizing device management service
 
AiCare - самоорганизующийся сервис управления
AiCare - самоорганизующийся сервис управленияAiCare - самоорганизующийся сервис управления
AiCare - самоорганизующийся сервис управления
 
“КП” в интернете (Александр Ромашин, Вячеслав Малютин)
“КП” в интернете (Александр Ромашин, Вячеслав Малютин)“КП” в интернете (Александр Ромашин, Вячеслав Малютин)
“КП” в интернете (Александр Ромашин, Вячеслав Малютин)
 
Petrov Cloud for corporate customer
Petrov Cloud for corporate customerPetrov Cloud for corporate customer
Petrov Cloud for corporate customer
 
20151112 Что нового в DB PowerStudio 2016
20151112 Что нового в DB PowerStudio 201620151112 Что нового в DB PowerStudio 2016
20151112 Что нового в DB PowerStudio 2016
 
Sql azure и все, все, все...
Sql azure и все, все, все...Sql azure и все, все, все...
Sql azure и все, все, все...
 
Новости и анонсы конференции Oracle Open World 2013
Новости и анонсы конференции Oracle Open World 2013Новости и анонсы конференции Oracle Open World 2013
Новости и анонсы конференции Oracle Open World 2013
 
Презентация Microsoft PowerPoint
Презентация Microsoft PowerPointПрезентация Microsoft PowerPoint
Презентация Microsoft PowerPoint
 
Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)
Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)
Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)
 
Oracle Timesten
Oracle TimestenOracle Timesten
Oracle Timesten
 
Тестирование высоконагруженных облачных веб-сервисов в Amazon - подводные кам...
Тестирование высоконагруженных облачных веб-сервисов в Amazon - подводные кам...Тестирование высоконагруженных облачных веб-сервисов в Amazon - подводные кам...
Тестирование высоконагруженных облачных веб-сервисов в Amazon - подводные кам...
 
Roman Zdebskiy - Windows Azure
Roman Zdebskiy - Windows AzureRoman Zdebskiy - Windows Azure
Roman Zdebskiy - Windows Azure
 
Презентация технологии веб-кластеров
Презентация технологии веб-кластеров  Презентация технологии веб-кластеров
Презентация технологии веб-кластеров
 

CQRS innovations

  • 1. CQRS - инновационное решение проблем современных Enterpriseприложений. Андрей Ломакин (lomakin.andrey@gmail.com) Артем Оробец(enisher@gmail.com)
  • 2. Содержание Почему CQRS ? История возникновения современной архитектуры Проблемы CRUD CQRS как решениепроблем Архитектура CQRS приложений Реализация CQRS на основе Axon framework Event Store от ExigenServices 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  не учитывает этого.
  • 17. CQRS как решение III. CQRS как решение
  • 18. CQRS CQRS - Command Query Responsibility Segregation
  • 19. Проблема 1: Использование JavaBean Использование JavaBean остаётся для отображения данных на стороне обработки запросов, но JavaBean != DomainEntity.
  • 20. Проблема 2: Оптимизация производительности  и её последствия. Денормализация данных выполняется только на стороне обработки запросов.
  • 21. Данные на стороне запросов Каждая таблица – денормализованное представление данных на экране пользователя Нет необходимости применять SQL базы данных. Высокопроизводительные альтернативы - Apache Cassandra, HBase, Hypertable ….
  • 22. Проблема 3:Проблема масштабируемости Целостность данных нужна только на стороне обработки бизнес логики. На стороне обработки запросов мы можем использовать eventual consistency
  • 23. Проблема 4: В реальной жизни не бывает конфликтов модификации данных Два способа представления состояния объекта 1. В виде значений переменных внутри объекта.
  • 24. Два подхода представления объектов 2. В виде последовательности событий + 5.3 M $ +11.2 M $ - 8.2 M $ Sum: 8.3 M $
  • 25. Два подхода представления объектов Каждый агрегат – это пакет событий. Нет необходимости использовать реляционныебазы данных. База должна обладать ACID свойствами.
  • 26.
  • 27. возможность отката состояния системы до любого момента времени
  • 28.
  • 29. Архитектура CQRS приложений IV. Архитектура CQRS приложений
  • 30. CQRS – это только подход CQRS  это только подход, как вы его реализуете, зависит только от вас.
  • 31.
  • 32. Queries Многослойная архитектура CQRS Запрос к DB Запрос к DB Конвертирование в доменную модель Конвертирование в доменную модель Конвертирование в DTO Конвертирование в DTO Передача клиенту Передача клиенту
  • 33.
  • 34. Commands Команда – представляет собой отражение бизнес действия, действия в котором заинтересован пользователь приложения. Преимущество использования команд: Ориентация на бизнес проблемы пользователя. Удобный механизм мониторинга и масштабирования
  • 35.
  • 36.
  • 37. Event bus Репликация данных между компонентом обработки бизнес логики и компонентом селективных выборок. В обычном приложении количество селективных запросов на порядок больше количества запросов на изменение данных. Один бизнес компонент - множество query компонент
  • 38. ….преимущества….. Хорошие условия для реализации DDD Использование CEP Готовность к облачным вычислениям Простота распределения обязанностей между узконаправленными командами
  • 39. Реализации CQRS V. Реализация CQRS
  • 40. Axon framework Axon framework - самый популярный и наиболее функциональный.
  • 41. Пример CQRS приложения Address Book –управление списком адресов
  • 42.
  • 44.
  • 48.
  • 51. Axon – repository и event store. Repository JPA Event Store Mongo DB File System JPA
  • 52. Event Stores – pros and cons JPA Event Store Mongo DB, File system транзакционный но медленный нет поддержки ACID свойств большая скорость обработки данных
  • 53. Orient DB Event store Поддержка транзакционности. Очень большая скорость чтения и записи данных. Поддержка кластеризации.
  • 54. Orient DB Event store Результаты тестов на производительность (транзакций в секунду, Pentium Duo Core E520 2,5 GHz 2 Gb, 7200 RPM) :
  • 55. Примеры реализации в ExigenServices Примеры реализации в ExigenServices
  • 56. Примеры реализации внутри компании Автоматизация выдачи залогов и учёт ценностей в ломбардах. Учёт нарядов выполненных работ в Днепропетровской Торгово-Промышленной Палате.
  • 57. Итоги CQRS – подход, обеспечивающий реализацию современных требований к корпоративным системам с точки зрения их масштабируемости, мониторинга, построения сложной бизнес логики.
  • 59. Авторы Артём Оробец.twitter: @Dr_EniSh,enisher@gmail.com, skype: dr_enish Андрей Ломакин. twitter: @Andrey_Lomakin , lomakin.andrey@gmail.com, skype: lomakin_andrey
  • 60. Источники 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