Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
CQRS - инновационное решение проблем современных Enterpriseприложений.<br />Андрей Ломакин (lomakin.andrey@gmail.com) <br ...
Содержание<br />Почему CQRS ?<br />История возникновения современной архитектуры<br />Проблемы CRUD<br />CQRS как решениеп...
Почему CQRS ?<br /> Почему CQRS ?<br />
С чего всё началось<br />Поговорим про эволюцию разработки Enterprise приложений<br />?<br />
Эволюция представления документов<br />Эра бумажных документов<br />
Эволюция представления документов<br />Эра электронных архивов <br />
Эра электронных архивов<br />Поиск в электронных архивах<br />
Эра электронных архивов<br />Наступила эра CRUD архитектуры<br />
Эволюция обработки данных<br />Эра бизнес процессов<br />
CRUD подход ориентирован не на отображение модели бизнес логики, а на манипуляцию данными.<br />Однако…<br />
Основные проблемы CRUD<br />II.  Основные проблемы CRUD<br />
Проблема 1. Использование JavaBean ….<br />JavaBean– “Reusable software components that can be manipulated visually in a b...
Нарушению инкапсуляции бизнес объектов. <br />Ухудшению читаемости кода<br />Трудности поддержки<br />Вся бизнес логика пе...
Проблема 2.  Оптимизация производительности  и её последствия.<br />Использование ORM Tool вместе с денормализацией размыв...
Проблема 3. Проблема масштабируемости<br />Втеореме CAP при обработке бизнес данных мы всегда выбираем целостность данных ...
Проблема 4: В реальной жизни не бывает конфликтов модификации данных<br />В бизнес процессах происходящих в реальной жизни...
CQRS как решение<br />III.  CQRS как решение<br />
CQRS<br />CQRS - Command Query Responsibility Segregation<br />
Проблема 1: Использование JavaBean<br />Использование JavaBean остаётся для отображения данных на стороне обработки запрос...
Проблема 2:  Оптимизация производительности  и её последствия.<br />Денормализация данных выполняется только на стороне об...
Данные на стороне запросов<br />Каждая таблица – денормализованное представление данных на экране пользователя<br />Нет не...
Проблема 3:Проблема масштабируемости<br />Целостность данных нужна только на стороне обработки бизнес логики.<br />На стор...
Проблема 4: В реальной жизни не бывает конфликтов модификации данных<br />Два способа представления состояния объекта<br /...
Два подхода представления объектов<br />2. В виде последовательности событий<br />+ 5.3 M $<br />+11.2 M $<br />- 8.2 M $<...
Два подхода представления объектов<br />Каждый агрегат – это пакет событий.<br />Нет необходимости использовать реляционны...
Два подхода представления объектов<br />Преимущества:<br /><ul><li>удобный мониторинг изменений состояния системы
возможность отката состояния системы до любого момента времени
удобный механизм репликации данныхи разрешения конфликтов</li></li></ul><li>Разрешениеконфликтов<br />Correct customer add...
Архитектура CQRS приложений<br />IV. Архитектура CQRS приложений<br />
CQRS – это только подход<br />CQRS  это только подход,<br /> как вы его реализуете, зависит только от вас.<br />
Queries<br />Многослойная архитектура<br />CQRS<br />Запрос к DB<br />Запрос к DB<br />Конвертирование в <br />доменную мо...
Commands<br />Команда – представляет собой отражение бизнес действия, действия в котором заинтересован пользователь прилож...
Event bus<br />Репликация данных между компонентом обработки бизнес логики и компонентом селективных выборок.<br />В обычн...
….преимущества…..<br />Хорошие условия для реализации DDD<br />Использование CEP<br />Готовность к облачным вычислениям<br...
Реализации CQRS<br />V.  Реализация CQRS<br />
Axon framework<br />Axon framework  - самый популярный и наиболее функциональный.<br />
Пример CQRS приложения<br />Address Book –управление списком адресов<br />
Создание и отправка команды<br />
Обработка команды<br />
Бизнес действие<br />
Обработка события изменения состояния<br />
Запросная часть<br />
Простота настройки<br />
Axon – repository и event store.<br />Repository<br />JPA<br />Event Store<br />Mongo DB<br />File System<br />JPA<br />
Event Stores – pros and cons<br />JPA Event Store<br />Mongo DB, File system<br />транзакционный но медленный<br />нет под...
Orient DB Event store<br />Поддержка транзакционности.<br />Очень большая скорость чтения и  записи данных.<br />Поддержка...
Orient DB Event store<br />Результаты тестов на производительность<br />(транзакций в секунду, Pentium Duo Core E520 2,5 G...
Примеры реализации в ExigenServices<br />Примеры реализации в ExigenServices<br />
Примеры реализации внутри компании<br />Автоматизация выдачи залогов и учёт ценностей в ломбардах. <br />Учёт нарядов выпо...
Итоги<br />CQRS – подход, обеспечивающий реализацию современных требований к корпоративным системам с точки зрения их масш...
Вопросы <br />
You’ve finished this document.
Download and read it offline.
Upcoming SlideShare
CQRS and Event Sourcing for Java Developers
Next
Upcoming SlideShare
CQRS and Event Sourcing for Java Developers
Next
Download to read offline and view in fullscreen.

Share

CQRS innovations

Download to read offline

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

Related Books

Free with a 30 day trial from Scribd

See all

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 />
  • eranov

    May. 29, 2013
  • N3ur0n

    Feb. 26, 2013

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

Views

Total views

3,932

On Slideshare

0

From embeds

0

Number of embeds

1,337

Actions

Downloads

33

Shares

0

Comments

0

Likes

2

×