Software Design Blog

Journey of Rinat Abdullin

Continuous Delivery With Lokad.CQRS

Today I was presenting at the Roots about Lokad.CQRS architecture style. As part of the presentation I created a quick deployment of Lokad sample project, tweaked for a continuous delivery scenario.

In short, every time a change is pushed to master within this repository: Lokad.CQRS-AppHarbor, AppHarbor performs a new full deployment of this site: http://lokad-cqrs.apphb.com. It is the duty of Lokad.CQRS to rebuild any projections that might have changed in the code.

For the most fun: this deployment is actually about 2 clouds. AppHarbor (located within Amazon) deals with builds and hosting, while data is persisted on Azure. I just didn’t have time to write adapters for the persistence available within the AppHarbor (the entire deployment thing was delivered within few litres of coffee and 6-8 man hours of work).

Naturally, while working with the system within local development environment, persistence is based on dead-simple file storage.

Currently this repository is an off-shot of latest Lokad.CQRS, created for the demo purposes.

However, this experience enables totally new development approach by massively slashing down development friction. I’m tempted to push it to the master of Load.CQRS and keep it hooked with this continuous deployment, while maybe even adding more domain “meat” around inventory management concept. I think, some fun could be had around the process, where every accepted pull request is immediately deployed to production.