First release of Lokad.CQRS for Windows Azure is out!
Lokad.CQRS for Windows Azure is a guidance and framework on efficiently building solutions for the cloud. It fits distributed and scalable enterprise scenarios as well as small and cost-effective solutions.
Lokad.CQRS is based on cloud experience and R&D investments of Lokad (winner of Windows Azure Partner Award 2010 by Microsoft), a lot of existing theory (i.e.: Efficient Development series, CQRS, etc) and numerous production-proven .NET building blocks.
First release manifests an important milestone for us and development of this project. It includes Azure Starter binaries (available in the downloads), tutorials with samples (1-4) and a large list of reference materials.
Before going any further I would like to thank people that made such a project possible and helped us to move forward (I'm sorry if the paragraph below will sound a bit like the Oscar nomination show, but this is really important):
- Udi Dahan - for clarifying CQRS; without his blog I wouldn't know where to start.
- Greg Young - for wonderful and inspiring ideas about taking CQRS/DDD/ES to the edge; they serve as constant inspiration to move forward and help to reduce complexity of existing code.
- Marc Gravell - for his wonderful ProtoBuf-net framework and community help in C#; without ProtoBuf we would still be struggling over evolving messages and keeping performance-high.
- Nicholas Blumhardt - for Autofac, of course; Lokad.CQRS infrastructure and configuration DSLs are a breeze to write and evolve thanks to this elegant, powerful and lean IoC container for .NET. Thanks again, man!
- CQRS/DDD community and especially Jonathan Oliver, Jérémie Chassaing, Yves Reynhout, Mark Nijhof, Szymon Pobiega and many others commenting on my Journal, providing encouraging feedback, valuable critics and sharing experience.
- All the readers of this Journal. There is nothing as motivating to move forward as hitting "1000 subscribers" point.
- Lokad team. You know for what.
In the first place Lokad.CQRS project is a guidance on building scalable applications with Windows Azure. As such it packs in some samples, tutorials and reference materials.
In addition to that, there is an Open Source .NET Framework that handles core complexities and intricacies of building scalable enterprise solution with Windows Azure (there are still a lot of issues with this young platform; we hit them and do not want you to experience the same).
Lokad.CQRS framework for Azure could be reused in the binary form or as a reference implementation (esp. to save you some time or demonstrate some approach). Everything (articles, tutorials and source code) is open-source and you can use it without any commercial restrictions (OSI-compatible New BSD License).
Here's a quick overview of the primary links:
BTW, out of sheer curiosity you can also check the full list of Lokad projects that we share with the community as open source.
Used in Production at Lokad
This first release is far from being perfect. There is so much more what we've learned since starting Lokad.CQRS. There is even more that we want to add to this project down the road (i.e.: just to handle higher requirements on scalability, simplicity and reduced development and maintenance friction).
Yet Lokad.CQRS is what we actually use in the production: Lokad Salescast is currently running on the latest version of the codebase (and latest Windows Azure Guest OS with .NET 4.0) without any problems (if there were any I would be fixing them instead of writing this blog post).
Salescast is an integration platform between Lokad Forecasting services and our customers. It was started as a small Windows Azure application to be developed and maintained by 1-2 people.
Yet right now it:
- features auto-detection and integration with more than 10 ERP data formats, custom workflows, report and integration intelligence;
- can reliably and automatically handle integration with MS SQL, MySQL and Oracle databases frequently hosted in unreliable environments;
- has "pumped through" over 9.5 millions of products, 66 millions of order lines and delivered 3.6 millions of forecasts. The numbers are steadily growing;
- is capable of being scaled out to handle even higher loads (at least 100x higher with a modest improvements in Lokad.CQRS core, that are planned);
- has a lot of features to reduce development, maintenance and support friction and has not shown any signs of complexity barrier yet.
At the same time the project is still fun and still requires less than 1 person full time to keep on development and adding new features (maintenance and partial customer support included).
Most of that was achieved thanks to Windows Azure, Lokad.CQRS and ideas liberally borrowed from the development community. And this is the reason why we put so much effort to give Lokad.CQRS to the community back.
BTW, while using ask.lokad.com community for posting questions about our technologies, guidance and frameworks, please use separate topics (instead of comments) to post questions and express your feedback which we really appreciate! I especially loved this one:
Rinat, thank you so much for the detailed answer and invaluable code snippets! I love you , man! From your first snippet I see that until now I've had completely wrong understanding about the pub/sub functionality of Lokad.CQRS. That aside, the approach you propose will fit perfectly in my scenario. Thank you once again!
Well, thank you all! There is more coming to CQRS (for the small and cloud solutions alike). Stay tuned!