We're just finishing up rewriting out client side website using DDD (sharparch framework with nhibernate), MCV 2 and CQS command query separation in the service layer and down. It's been very good so far, the code is clean and logic lives where it's meant to in most situations.
With CQS, instead of going down the route that Udi Dahan has been talking about with full CQRS and event sourcing we simply split out our service layers in to Command and Query, these then call down to two separate mappings/repository/entity projects looking at the same DB. This has allowed us to tweak each side differently, query has little validation, entities can be returned to the front end as they are read only, the mappings and queries can be tuned for performance with caching etc. The command side is locked down with full validation, caching is only used in very specific places and no command side entity is exposed outside the application service layer.
The front end is straight MVC 2 and using a fair amount of jquery. Controllers are kept very light as almost all the business logic is in the service layer and entities. Security is dealt with mainly in the service layer, all calls to any sensitive data are checked for ownership and fair usage, it's like our barrier.
The team working on this is about 10 devs, 5 designers and 3 dba's with support from 2 PM's and about 8 business people, the project has been over about 10 months. We use our own slightly customised agile system. Work is usually broken down to 2 week timeboxes with 2 programmers, 1 designer, 1 business owner and a PM. It seems to work very well so far, we tried the usual agile/scrum stuff like daily meetings and shorter 1 week packages but we found it gets in the way of the deliverables. We found that a lot of these ideas need to be tuned to your working environment and can take a few months to figure out i.e. what is expected from a timebox, how do the teams work together, how and when you pair program, time estimates for deliverables, length of timeboxes, when to have meetings, sorting out the proper chain of ownership etc.
I'd say that a lot of these ideas are great if they are used to just help setup your own systems, I'm not sure if going 100% agile in medium sized teams with real business deliverables is always the best way or easy to pull off. Ours certainly isn’t perfect, we’re still tweaking it after using a lot of the approaches for years but that’s half the fun.
CQRS with event sourcing does look really nice but it's just another package of patterns and best practices to solve certain situations. You really need to work out what you are delivering and why you want to use a specific solution to solve it. What are the benefits/trade-off, how complex does it really need to be.
Hopefully we'll be able to continue tuning this approach for our other sites although they will need to be laid out a bit differently as they have much higher traffic with less transactions. New methodologies certainly keep you busy
