My colleague Grigori Melnik has a great blog post about the CQRS Journey project, which aims to deliver the source code for a complete, working reference implementation (an end-to-end sample app) that illustrates the key concepts, patterns, and approaches related to Command Query Responsibility Segregation and Event Sourcing (CQRS & ES), and a written guide to accompany the code, provide explanations, context, and references to other relevant material.
CQRS is an architectural pattern in which you separate your read model from the write model. The benefits include almost infinite scalability, adaptability to changing business requirements, resolution of concurrency conflicts, and overall simplification of the design.
As Grigori notes in his blog, they have positioned the CQRS guidance project as a learning journey. An advisory board has been established and some public consultation has taken place that helped scope the project initially.
"Unfortunately, there’s no solid guidance around implementing it and so we are embarking on a development project where we will implement a real world, non-trivial system using variety of CQRS approaches and share those learnings with the community," he told me. "The good news now is that we can have members of the community to participate in this journey together with us."
He goes on to say that while this is good news, "we recognize that for this project to be successful, we need to be not only open and transparent, but we also need to collaborate with the community (in its way a global village) more closely. That’s why I am extremely happy and proud to announce that for the first time in the history of the Microsoft Patterns & Practices team, the following: In the true spirit of open source, we will be taking community contributions on the CQRS Journey project,” he said.
- The written guidance and the sample code will be developed in the open and with community involvement.
- The Microsoft Patterns & Practices team, will review and accept contributions that meet its guidelines.
- The final deliverable will have an open source license (Apache 2.0).