Software engineering blog of Clément Bouillier: April 2010

Friday, April 9, 2010

DDD and CQRS resources

I see CQRS as a great extension of DDD approach. Some people say that you cannot do DDD without...I am not convinced yet.
DDD and CQRS are a lot discussed on the web, but I would like to try to keep in this post a list of resources that are really useful to start...but it depends from where you start.

DDD is becoming more and more known by the community, based on the "bible" of Eric Evans. You could go through the book and other conceptual resources, but I have to admit that it is not always easy to conceptualize without concrete application. That's why I point you to some resources that lead you to enter in DDD and CQRS world through really concrete examples starting from what most people knows.

Today, I think that Anemic Domain Model along with Transactional Script "business services" are a wide spread use of how OOP is used in enterprise (talking about Java and .NET world mainly).

First you can start with great series "Strenghtening your model" of Jimmy Bogard to understand DDD basics, and what are the differences with OOP basics. In his last post, you will see the reference to a great article of Udi Dahan about the concept of Domain Events.
Obviously, there are a lot of DDD concepts that are not covered (bounded contexts for example), but I think that starting from what people knows is a really great approach. You could then dig in other concepts of DDD.

From there, you would better understand CQRS. I think these DDD basics are all shared by CQRS leaders, in addition to the fact that CQRS prones the segregation of Query and Command in two parallel "layers", i.e Query to display some information and Command to treat business users' actions (through Domain Model).
As said by Greg Young, I see today mainly two major differences between CQRS proposed implementation, it concerns domain model persistence :
Main resources are some blogs of "concept leaders" :
To start, Greg, Jonathan and Udi have published theirs presentations of CQRS (video). It is a good start before reading blogs. Here is some of these :
Let's try now...for french people, Alt.Net France community has started a sort of Dojo Design around CQRS, we are also trying Google Wave for this. Join Alt.Net France to follow.

PS : Rinat Abdullin has tried to summarize and give some key points to start with DDD, CQRS and others buzz words