Является ли CQRS хорошим подходом для реализации социального приложения в Google App Engine? - PullRequest
11 голосов
/ 22 марта 2011

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

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

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

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

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

1 Ответ

13 голосов
/ 22 марта 2011

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

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

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

Я никогда не слышал о Дждоне, но Аксон был здесь некоторое время. Постарайтесь не опираться слишком сильно на каркас. По мере углубления вашего понимания CQRS это станет более очевидным - в основном это все равно, что пытаться избежать использования Hibernate везде в вашем коде. Вы должны использовать Аксон (или любой другой вариант) только там, где его следует использовать, и не более.

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

...