Fully Portable Scenario in Lokad.CQRS
Because of lessons learned in internal Lokad projects and thanks to some weekend coding, Lokad.CQRS trunk now supports fully portable scenario for the development.
You can run the App Engine locally in a full persistent mode, using plain file storage for Queues (partitions), Atomic Storage, Streaming Storage and even Tape Storage. All types of storage are described in the last Lokad.CQRS PDF, with the exception of Tape Storage (which will be featured in the next version, as we get closer to event sourcing Lokad style)
No longer you need to setup MSMQ, databases or whatever, when you want to pass your system to the designers to start working out on the UI. Pure XCopy deployment. And the system could still be reconfigured later to run on the cloud.
Caveat: if you want to jump onto the trunk, please keep in mind that delayed messages have been disabled for the time being. They will be reimplemented in a different way before the next release.
To be precise, this has worked before as well; and apparently with some success, as mentioned by Chris Martin:
Because of this feature in the library, I was able to deliver a full, working copy of our project to our designers without having to install any dependencies. That means no Azure SDK, no DBs, and most importantly, no setup at all!
Using the following: MemoryProcess, MemorySender, FileStreaming, FS implementation of Lokad.Cloud.Storage.ITableStorageProvider, SQLite
All it takes for our remote designers to run the app locally is a publish of the web role, a git commit!
However, the messaging happened in memory and was not persistent (killing the process is not a good thing). With this simple latest addition, we get the persistence and can start pushing into more interesting scenarios.
Hint: proper distributed system (as preached by Pat Helland and enforced by the use of Lokad.CQRS scaffolding) can survive through sudden failures (best visualized by taking a shotgun and shooting server at random). A system does not have to a some "enterprise server" in order to benefit from such behavior. Think of something smaller, that fits in your pocket and might have a name starting with an "i" (but it could also be any other letter).
BTW, if you want to continue reading, the next post goes in the detail on Lokad.CQRS Tape Storage and File-based implementation for it. The latter is really important for local persistence scenarios that enable building cloud-capable systems (i.e.: targeting Windows Azure) without even installing Azure SDK or using Visual Studio.
Monday, July 4, 2011 at 14:23
Reader Comments