title: Is CQRS a good approach for implementing a social application on Google App Engine?
body: <p>It seems to me that the CQRS (Command and Query Responsibility Segregation) approach might be suitable for implementing a robust and responsive social application server on GAE, because:</p>
  
  <ol>
  <li>CQRS doesn't require a SQL database (which GAE doesn't provide)</li>
  <li>It does require a database capable of holding serialised objects, which GAE does in fact provide</li>
  <li>It requires event queues, which GAE also provides</li>
  <li>It supports a non-blocking, asynchronous, message based architecture, which neatly works round GAE's limitations on long-running transactions</li>
  <li>It is advertised as being highly scalable, which is after all why optimists choose GAE</li>
  </ol>
  
  <p>The trouble is, I'm a rusty Java programmer with little experience relevant to this choice, and I would very much appreciate any comments from anyone who has used the two together, or at least investigated using one from the experience of using the other.</p>
  
  <p>I think that my main questions are:</p>
  
  <ol>
  <li>Is CQRS over-complex for the early stages of a new application?</li>
  <li>Are there any booby-traps that would make them a poor match, such as such as GAE's Datastore perhaps not being a good match to CQRS requirements?</li>
  <li>Can anyone recommend either <a href="http://code.google.com/p/axonframework/" rel="noreferrer">Axon</a> or <a href="http://jdon.sourceforge.net/" rel="noreferrer">Jdon</a> as being particularly suitable (or unsuitable) for GAE?</li>
  <li>What other questions should I be asking?</li>
  </ol>