IMHO, CQRS and CEP are identical at conceptual level, but they have been established by people having different backgrounds, thus cooking up different vocabulary for these practices. Practitioners tend stress different aspects of the system but essentially they're rather trying to solve same class of problems.
My 2 cents, Laszlo sent from my mobile device On May 27, 2011 6:58 PM, "Paul deGrandis" <paul.degran...@gmail.com> wrote: The architecture of a large system should designed independent of the language in which you're working You should strive to identify the architecture styles you need for your problem domain, and then intelligently compose them with connectors that help fulfill your nonfunctional requirements/guarantees. I doubt you're in a problem space where something like CQRS is needed, but you might compose something like MVC with DDS, and use complex event processing where necessary. Doing so will create an asynchronous, data-centric architecture, which can also have the ability to make QoS guarantees. As a bonus, it can also operate somewhat autonomously (if your run your system runtime metrics through the CEP piece). Here's a naive drawing: http://www.pauldee.org/example_arch.png It's not a component-connector, UML, or deployment diagram, but a quick sketch that borrows from all of them. The CEP work is very fitting for Clojure (Clojure parallelism + Esper + WabbitMQ library OR ). Note that in this architecture (and in most scalable, asynchronous architectures), the data will always be "Good Enough." You'll continually merge the approximations of some pieces of data with the actual data once it has been calculated. See Nathan Marz's "Secrets of Building Real Time Big Data Systems" -> http://www.slideshare.net/nathanmarz/the-secrets-of-building-realtime-big-data-systems The entire system could be done (and easily scale) in Clojure, but your traditional control layer/logic and view get exceptionally thin when you're working with the styles listed above, so it's best to write those in whatever you're most comfortable with (ie: what you can develop the fastest and what you can deploy and scale the easiest). Hope this helps, Paul http://www.pauldee.org/blog References: MVC - http://en.wikipedia.org/wiki/Model_View_Controller DDS - http://en.wikipedia.org/wiki/Data_Distribution_Service Clojure and Esper - http://static.intelie.com.br/qconsp2010/presentation.html Stream Processing (if you don't need CEP, but still want asynch streams) - https://github.com/jduey/conduit On May 26, 10:05 am, Max Weber <mm.we...@web.de> wrote: > Hi, > > imaging you could do a software ... > At the moment I would say that CQRS <http://vimeo.com/13852695> is the most > promising architectural pattern to do scalable, maintainable and extendable > web applications. Ne... > lot of .Net projects <http://abdullin.com/cqrs/>. There is also a CQRS > Framework for Java named Axon <http://code.google.com/p/axonframework/>. > > Regrettably, there are not much writings about what architecture you should > use, if you are wo... -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en