Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 8 лет назад пользователемlomakin.andrey
1 June 28, 2012www.ExigenServices.com CQRS - инновационное решение проблем современных Enterprise приложений. Андрей Ломакин Артем Оробец
2 2 Содержание 1.Почему CQRS ? a)История возникновения современной архитектуры b)Проблемы CRUD c)CQRS как решение проблем 2.Архитектура CQRS приложений 3.Реализация CQRS на основе Axon framework 4.Event Store от Exigen Services 5.CQRS приложения разрабатываемые в Exigen Services
3 3 Почему CQRS ? I. Почему CQRS ?
4 4 Поговорим про эволюцию разработки Enterprise приложений ? С чего всё началось
5 5 Эволюция представления документов Эра бумажных документов
6 6 Эволюция представления документов Эра электронных архивов
7 7 Эра электронных архивов
8 8 Эра электронных архивов
9 9 Эволюция обработки данных Эра бизнес процессов
10 10 CRUD подход ориентирован не на отображение модели бизнес логики, а на манипуляцию данными. Однако…
11 11 Основные проблемы CRUD II. Основные проблемы CRUD
12 12 Проблема 1. Использование JavaBean …. JavaBean – Reusable software components that can be manipulated visually in a builder tool.
13 Нарушению инкапсуляции бизнес объектов. 2.Ухудшению читаемости кода 3.Трудности поддержки 4.Вся бизнес логика переносится в методы сервисов. … приводит к …
14 14 Проблема 2. Оптимизация производительности и её последствия. Использование ORM Tool вместе с нормализацией размывает
15 15 Проблема 3. Проблема масштабируемости В теореме CAP при обработке бизнес данных мы всегда выбираем целостность данных (C)
16 16 Проблема 4: В реальной жизни не бывает конфликтов модификации данных В бизнес процессах происходящих в реальной жизни не бывает конфликтов модификации данных. Если возникает такой конфликт значит это проблема в реализации бизнес логики. CRUD не учитывает этого.
17 17 CQRS как решение III. CQRS как решение
18 18 CQRS CQRS - Command Query Responsibility Segregation
19 19 Проблема 1: Использование JavaBean Использование JavaBean остаётся для отображения данных на стороне обработки запросов, но JavaBean != Domain Entity.
20 20 Проблема 2: Оптимизация производительности и её последствия. Денормализация данных выполняется только на стороне обработки запросов.
21 21 Данные на стороне запросов Каждая таблица – де нормализованное представление данных на экране пользователя Нет необходимости применять SQL базы данных. Высокопроизводительные альтернативы - Apache Cassandra, HBase, Hypertable ….
22 22 Проблема 3: Проблема масштабируемости Целостность данных нужна только на стороне обработки бизнес логики. На стороне обработки запросов мы можем использовать eventual consistency
23 23 Проблема 4: В реальной жизни не бывает конфликтов модификации данных 1. В виде значений переменных внутри объекта. Два способа представления состояния объекта
24 24 Два подхода представления объектов M $ M $ M $ Sum: 8.3 M $ 2. В виде последовательности событий
25 25 Два подхода представления объектов Каждый агрегат – это пакет событий. Нет необходимости использовать реляционные базы данных. База должна обладать ACID свойствами.
26 26 Два подхода представления объектов Преимущества: удобный мониторинг изменений состояния системы возможность отката состояния системы до любого момента времени удобный механизм репликации данных и разрешения конфликтов
27 27 Разрешение конфликтов Correct customer address Customer reallocated Conflict resolver Customer reallocated
28 28 Архитектура CQRS приложений IV. Архитектура CQRS приложений
29 29 CQRS – это только подход CQRS это только подход, как вы его реализуете, зависит только от вас.
31 31 Queries Многослойная архитектура Запрос к DB CQRS Конвертирование в доменную модель Конвертирование в DTO Передача клиенту Запрос к DB Конвертирование в доменную модель Конвертирование в DTO Передача клиенту
33 33 Commands Команда – представляет собой отражение бизнес действия, действия в котором заинтересован пользователь приложения. Преимущество использования команд: 1.Ориентация на бизнес проблемы пользователя. 2.Удобный механизм мониторинга и масштабирования
36 36 Event bus Репликация данных между компонентом обработки бизнес логики и компонентом селективных выборок. В обычном приложении количество селективных запросов на порядок больше количества запросов на изменение данных. Один бизнес компонент - множество query компонент
37 37 ….преимущества….. 1.Хорошие условия для реализации DDD 2.Использование CEP 3.Готовность к облачным вычислениям 4.Простота распределения обязанностей между узконаправленными командами
38 38 Реализации CQRS V. Реализация CQRS
39 39 Axon framework Axon framework - самый популярный и наиболее функциональный.
40 40 Пример CQRS приложения Address Book – управление списком адресов
42 42 Создание и отправка команды
44 44 Обработка команды
45 45 Бизнес действие
46 46 Обработка события изменения состояния
48 48 Запросная часть
49 49 Простота настройки
50 50 Axon – repository и event store. Repository Event Store JPA File SystemJPA Mongo DB
51 51 Event Stores – pros and cons нет поддержки ACID свойств большая скорость обработки данных JPA Event Store транзакционный но медленный Mongo DB, File system
52 52 Orient DB Event store Поддержка транзакционности. Очень большая скорость чтения и записи данных. Поддержка кластеризации.
53 53 Orient DB Event store Результаты тестов на производительность (транзакций в секунду, Pentium Duo Core E520 2,5 GHz 2 Gb, 7200 RPM) : TestFile systemJPAOrient DB Small transactions Big transactions
54 54 Примеры реализации в ExigenServices
55 55 Примеры реализации внутри компании Автоматизация выдачи залогов и учёт ценностей в ломбардах. Учёт нарядов выполненных работ в Днепропетровской Торгово-Промышленной Палате.
56 56 Итоги CQRS – подход, обеспечивающий реализацию современных требований к корпоративным системам с точки зрения их масштабируемости, мониторинга, построения сложной бизнес логики.
57 57 Вопросы
58 58 Авторы Артём Оробец. skype: Андрей Ломакин. skype: lomakin_andrey
59 59 Источники 1.First CQRS introduction young-unshackle-qcon08http:// young-unshackle-qcon08 2.CQRS architecture overview Greg Young blog Race conditions does not exist Domain Driven Design Aggregator Axon framework home page Mark Nijhof blog
Еще похожие презентации в нашем архиве:
© 2019 MyShared Inc.
All rights reserved.