Mi equipo está comenzando a implementar una aplicación greenfield, con un requisito de multi-tenancy. He estado haciendo una gran cantidad de investigación sobre patrones de escalabilidad simple, especialmente en infraestructura distribuida basada en la nube, y CQRS parece ser la palabra de moda du jour (llegando incluso a llamarse "Crack for Architecture Addicts" que me parece bastante gracioso) Dejando a un lado los beneficios y las trampas, es bastante difícil encontrar a alguien además de Greg Young que haya utilizado esta idea extensamente (o en absoluto) en aplicaciones de producción y que pueda proporcionarle una guía del mundo real.Multi-Tenant CQRS Architecture
1. Estas son mis preguntas: 1. ¿Una arquitectura CQRS se adapta a su aplicación típica de varios inquilinos o es más adecuada para aplicaciones empresariales internas de mayor escala? 2. Si recomienda que se use en esta situación, ¿puede proporcionar alguna guía desde el punto de vista de las zanjas sobre los enfoques, especialmente sobre los aspectos que se deben abordar desde el principio y sobre qué aspectos se deben desarrollar orgánicamente? 3. Si alguien lo ha intentado y lo ha encontrado demasiado difícil o no se dio cuenta de los beneficios, o si tiene fuertes argumentos en contra (y recomienda adherirse a CRUD y al diseño por niveles), me gustaría saber también sobre esas experiencias.
Como referencia, la aplicación se escribirá en .NET, y la interfaz se basará inicialmente en la web (ASP.NET MVC), extendiéndose potencialmente a clientes móviles y clientes gruesos. Se espera que la concurrencia, la actividad transaccional y el volumen de datos permanezcan relativamente bajos a lo largo de la vida útil de la aplicación (en comparación con las aplicaciones financieras de gran volumen y similares). Para infraestructura, planeamos usar Azure.
(Poniendo esto como un comentario, no como una respuesta porque realmente no aborda los detalles de su pregunta) Si aún no lo ha hecho, le sugiero que lea el artículo aclarado CQRS de Udi aquí: http: // www.udidahan.com/2009/12/09/clarified-cqrs/ y viendo su video aquí: http://skillsmatter.com/podcast/open-source-dot-net/udi-dahan-command-query- responsabilidad-segregación/rl-311 –
También específicamente para .NET Azure CQRS visita http://abdullin.com/ y el proyecto Lokad http://code.google.com/p/lokad-cqrs/ –
Michael, gracias por los comentarios. De hecho, he leído y visto una gran cantidad de información sobre este patrón, incluidos estos recursos. Lo que parece faltar es cualquier voz de personas que han usado esto por un tiempo, o incluso están en el proceso de implementarlo ahora. Antes de dar el paso de abrazar los beneficios teóricos, quiero validar que los desafíos del mundo real que los acompañan no son demasiado grandes. Como dice una de mis citas favoritas, "en teoría, la teoría y la práctica son las mismas. En la práctica, rara vez lo son". – Mafuba