CQRS innovations

3,204 views
3,159 views

Published on

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

Published in: Technology, Education
1 Comment
2 Likes
Statistics
Notes
No Downloads
Views
Total views
3,204
On SlideShare
0
From Embeds
0
Number of Embeds
939
Actions
Shares
0
Downloads
27
Comments
1
Likes
2
Embeds 0
No embeds

No notes for slide

CQRS innovations

  1. 1. CQRS - инновационное решение проблем современных Enterpriseприложений.<br />Андрей Ломакин (lomakin.andrey@gmail.com) <br />Артем Оробец(enisher@gmail.com)<br />
  2. 2. Содержание<br />Почему CQRS ?<br />История возникновения современной архитектуры<br />Проблемы CRUD<br />CQRS как решениепроблем<br />Архитектура CQRS приложений<br />Реализация CQRS на основе Axon framework<br />Event Store от ExigenServices<br />CQRS приложения разрабатываемые в Exigen Services<br />
  3. 3. Почему CQRS ?<br /> Почему CQRS ?<br />
  4. 4. С чего всё началось<br />Поговорим про эволюцию разработки Enterprise приложений<br />?<br />
  5. 5. Эволюция представления документов<br />Эра бумажных документов<br />
  6. 6. Эволюция представления документов<br />Эра электронных архивов <br />
  7. 7. Эра электронных архивов<br />Поиск в электронных архивах<br />
  8. 8. Эра электронных архивов<br />Наступила эра CRUD архитектуры<br />
  9. 9. Эволюция обработки данных<br />Эра бизнес процессов<br />
  10. 10. CRUD подход ориентирован не на отображение модели бизнес логики, а на манипуляцию данными.<br />Однако…<br />
  11. 11. Основные проблемы CRUD<br />II. Основные проблемы CRUD<br />
  12. 12. Проблема 1. Использование JavaBean ….<br />JavaBean– “Reusable software components that can be manipulated visually in a builder tool”.<br />
  13. 13. Нарушению инкапсуляции бизнес объектов. <br />Ухудшению читаемости кода<br />Трудности поддержки<br />Вся бизнес логика переносится в методысервисов.<br />… приводит к …<br />
  14. 14. Проблема 2. Оптимизация производительности  и её последствия.<br />Использование ORM Tool вместе с денормализацией размывает <br />
  15. 15. Проблема 3. Проблема масштабируемости<br />Втеореме CAP при обработке бизнес данных мы всегда выбираем целостность данных (C)<br />
  16. 16. Проблема 4: В реальной жизни не бывает конфликтов модификации данных<br />В бизнес процессах происходящих в реальной жизни не бывает конфликтов модификации данных.<br /> Если возникает такой конфликт значит это проблема в реализации бизнес логики. <br />CRUD  не учитывает этого.<br />
  17. 17. CQRS как решение<br />III. CQRS как решение<br />
  18. 18. CQRS<br />CQRS - Command Query Responsibility Segregation<br />
  19. 19. Проблема 1: Использование JavaBean<br />Использование JavaBean остаётся для отображения данных на стороне обработки запросов, но JavaBean != DomainEntity.<br />
  20. 20. Проблема 2: Оптимизация производительности  и её последствия.<br />Денормализация данных выполняется только на стороне обработки запросов.<br />
  21. 21. Данные на стороне запросов<br />Каждая таблица – денормализованное представление данных на экране пользователя<br />Нет необходимости применять SQL базы данных.<br />Высокопроизводительные альтернативы - Apache Cassandra, HBase, Hypertable ….<br />
  22. 22. Проблема 3:Проблема масштабируемости<br />Целостность данных нужна только на стороне обработки бизнес логики.<br />На стороне обработки запросов мы можем использовать eventual consistency<br />
  23. 23. Проблема 4: В реальной жизни не бывает конфликтов модификации данных<br />Два способа представления состояния объекта<br />1. В виде значений переменных внутри объекта.<br />
  24. 24. Два подхода представления объектов<br />2. В виде последовательности событий<br />+ 5.3 M $<br />+11.2 M $<br />- 8.2 M $<br />Sum: 8.3 M $<br />
  25. 25. Два подхода представления объектов<br />Каждый агрегат – это пакет событий.<br />Нет необходимости использовать реляционныебазы данных.<br />База должна обладать ACID свойствами.<br />
  26. 26. Два подхода представления объектов<br />Преимущества:<br /><ul><li>удобный мониторинг изменений состояния системы
  27. 27. возможность отката состояния системы до любого момента времени
  28. 28. удобный механизм репликации данныхи разрешения конфликтов</li></li></ul><li>Разрешениеконфликтов<br />Correct customer address<br />Conflict resolver<br />Customer reallocated<br />Customer reallocated<br />
  29. 29. Архитектура CQRS приложений<br />IV. Архитектура CQRS приложений<br />
  30. 30. CQRS – это только подход<br />CQRS  это только подход,<br /> как вы его реализуете, зависит только от вас.<br />
  31. 31.
  32. 32. Queries<br />Многослойная архитектура<br />CQRS<br />Запрос к DB<br />Запрос к DB<br />Конвертирование в <br />доменную модель<br />Конвертирование в <br />доменную модель<br />Конвертирование в DTO<br />Конвертирование в DTO<br />Передача клиенту<br />Передача клиенту<br />
  33. 33.
  34. 34. Commands<br />Команда – представляет собой отражение бизнес действия, действия в котором заинтересован пользователь приложения.<br />Преимущество использования команд:<br />Ориентация на бизнес проблемы пользователя.<br />Удобный механизм мониторинга и масштабирования<br />
  35. 35.
  36. 36.
  37. 37. Event bus<br />Репликация данных между компонентом обработки бизнес логики и компонентом селективных выборок.<br />В обычном приложении количество селективных запросов на порядок больше количества запросов на изменение данных. <br />Один бизнес компонент - множество query компонент<br />
  38. 38. ….преимущества…..<br />Хорошие условия для реализации DDD<br />Использование CEP<br />Готовность к облачным вычислениям<br />Простота распределения обязанностей между узконаправленными командами<br />
  39. 39. Реализации CQRS<br />V. Реализация CQRS<br />
  40. 40. Axon framework<br />Axon framework - самый популярный и наиболее функциональный.<br />
  41. 41. Пример CQRS приложения<br />Address Book –управление списком адресов<br />
  42. 42.
  43. 43. Создание и отправка команды<br />
  44. 44.
  45. 45. Обработка команды<br />
  46. 46. Бизнес действие<br />
  47. 47. Обработка события изменения состояния<br />
  48. 48.
  49. 49. Запросная часть<br />
  50. 50. Простота настройки<br />
  51. 51. Axon – repository и event store.<br />Repository<br />JPA<br />Event Store<br />Mongo DB<br />File System<br />JPA<br />
  52. 52. Event Stores – pros and cons<br />JPA Event Store<br />Mongo DB, File system<br />транзакционный но медленный<br />нет поддержки ACID свойств большая скорость обработки данных <br />
  53. 53. Orient DB Event store<br />Поддержка транзакционности.<br />Очень большая скорость чтения и записи данных.<br />Поддержка кластеризации.<br />
  54. 54. Orient DB Event store<br />Результаты тестов на производительность<br />(транзакций в секунду, Pentium Duo Core E520 2,5 GHz 2 Gb, 7200 RPM) :<br />
  55. 55. Примеры реализации в ExigenServices<br />Примеры реализации в ExigenServices<br />
  56. 56. Примеры реализации внутри компании<br />Автоматизация выдачи залогов и учёт ценностей в ломбардах. <br />Учёт нарядов выполненных работ в Днепропетровской <br />Торгово-Промышленной Палате.<br />
  57. 57. Итоги<br />CQRS – подход, обеспечивающий реализацию современных требований к корпоративным системам с точки зрения их масштабируемости, мониторинга, построения сложной бизнес логики.<br />
  58. 58. Вопросы <br />
  59. 59. Авторы<br />Артём Оробец.twitter: @Dr_EniSh,enisher@gmail.com, skype: dr_enish<br />Андрей Ломакин. twitter: @Andrey_Lomakin , lomakin.andrey@gmail.com, skype: lomakin_andrey<br />
  60. 60. Источники<br />First CQRS introduction http://www.infoq.com/presentations/greg-young-unshackle-qcon08<br />CQRS architecture overview - http://elegantcode.com/2009/11/11/cqrs-la-greg-young/<br />Greg Young blog - http://codebetter.com/gregyoung/<br />Race conditions does not exist http://www.udidahan.com/2010/08/31/race-conditions-dont-exist/<br />Domain Driven Design Aggregator - http://domaindrivendesign.org/<br />Axon framework home page - http://code.google.com/p/axonframework/<br />Mark Nijhof blog http://cre8ivethought.com/blog<br />

×