The Patterns and Practices team at MSDN recently announced a CQRS Journey Guidance project – the project walks through building a sample Contoso Conference Management System using DDD, CQRS and Event Sourcing.
The sample is targeted for applications that need to be highly-scalable and highly-available. The project uses DDD for modeling and CQRS and Event Sourcing patterns. Although it’s not necessary to use DDD and CQRS together (or CQRS and Event Sourcing for that matter), in practice they go well with each other.
The project is built mainly on the .NET stack and uses various components of the Windows Azure platform. The walkthrough does go into details including various optimizations such as using snapshots, asynchronous calls, dynamic throttling of messages, filtering of messages, partitioning the service bus and selective caching of data.
The team has also implemented this in three different versions and have gone through the upgrades with no downtime (although showing the application to be in maintenance mode while upgrading the database). To make the guidance realistic, the team has worked on the project as if it were a real project –
The best way for us to provide this guidance was to immerse ourselves in the project where we could experience the challenges first hand, overcome them, and then share the lessons we learned in doing so.
There is also a separate section after the walkthrough, dedicated to “Tales from the Trenches”, from other companies that have already used CQRS and ES patterns.
Through out the development of this guidance project, the team actively sought inputs from various industry experts and have acknowledged their contributions.