Подходит ли CQRS для реализации социального приложения в Google App Engine?

Мне кажется, что подход CQRS (разделение ответственности за выполнение команд и запросов) может подойти для реализации надежного и отзывчивого сервера социальных приложений в GAE, потому что:

  1. CQRS не требует базы данных SQL (которую GAE не предоставляет)
  2. Для этого требуется база данных, способная хранить сериализованные объекты, которые GAE фактически предоставляет.
  3. Для этого требуются очереди событий, которые также предоставляет GAE.
  4. Он поддерживает неблокирующую, асинхронную архитектуру, основанную на сообщениях, которая четко обходит ограничения GAE на длительные транзакции.
  5. Он рекламируется как хорошо масштабируемый, поэтому оптимисты выбирают GAE.

Проблема в том, что я ржавый Java-программист с небольшим опытом, относящимся к этому выбору, и я был бы очень признателен за любые комментарии от любого, кто использовал их вместе или, по крайней мере, исследовал использование одного из опыта использования другого.

Я думаю, что мои основные вопросы:

  1. Является ли CQRS слишком сложной для ранних стадий нового приложения?
  2. Существуют ли какие-либо ловушки, из-за которых они не подходят, например, хранилище данных GAE, возможно, не соответствует требованиям CQRS?
  3. Может ли кто-нибудь порекомендовать либо Axon, либо Jdon как особенно подходящий (или неподходящий) для GAE?
  4. Какие еще вопросы я должен задать?

person Francis Norton    schedule 21.03.2011    source источник
comment
Ах, только что заметил несколько перекрывающийся вопрос в stackoverflow.com/questions/3781528/ - есть ли правильный способ связывания?   -  person Francis Norton    schedule 22.03.2011
comment
Вы решили, подходит ли CQRS для реализации социальной сети? Можете ли вы уточнить это?   -  person Siraj Mansour    schedule 27.05.2014
comment
Я остановился на приложении GAE после прототипирования пользовательского интерфейса, поэтому, боюсь, я так и не получил результата. Но, пожалуйста, оставьте комментарий или ответ, если вы сделаете это и узнаете что-то новое!   -  person Francis Norton    schedule 29.05.2014


Ответы (1)


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

В CQRS с источником событий хранилище данных не имеет значения, потому что вам не требуется много от вашего механизма хранения — NEventStore (написанный на C#) может легко поддерживать 40-50 различных типов механизмов хранения без особых трудностей.

Как Amazon Web Services, так и Google App Engine являются отличными платформами для приложения CQRS, потому что они подсказывают вам все правильные варианты инфраструктуры — асинхронную, неблокирующую связь с использованием обмена сообщениями.

Я никогда не слышал о Jdon, но Axon существует уже некоторое время. Старайтесь не опираться слишком сильно на каркас. По мере углубления вашего понимания CQRS это станет более очевидным — в основном это похоже на попытку избежать использования Hibernate везде в вашем коде. Вы должны использовать Axon (или что бы вы ни выбрали) только там, где он должен использоваться, и не более того.

Некоторые из лучших вопросов, которые вы могли бы задать, касаются того, куда обратиться за помощью и какие ресурсы уже доступны, чтобы помочь вам понять CQRS. Существует ряд хороших блогов и веб-сайтов, включая cqrsinfo.com, которые могут помочь вам начать работу. Кроме того, шестичасовое видео Грега Янга является обязательным, если вы собираетесь начать с CQRS.

person Jonathan Oliver    schedule 22.03.2011
comment
@Jonathan Oliver Как вы говорите, асинхронная, неблокирующая связь с использованием поддержки обмена сообщениями от GAE. Можете ли вы указать мне, какие службы GAE облегчают эту инфраструктуру? - person Pokuri; 31.08.2015
comment
@Pokuri Конкретная технология - это не то, что я продвигаю. Это стиль общения. - person Jonathan Oliver; 31.08.2015