From the users’ perspective, Muvr is an exercise analysis system, with two fundamental principles: “just works” and “no interaction”. The users can go about their exercise programmes, and Muvr performs “real-time” classification of their exercises (movement); the classification requries no further interaction from the users. Ultimately, the users are able to focus on the exercise, and completely forget about Muvr.
Muvr is a CQRS/ES cluster, which uses Apache Cassandra (2.1.7) as its shared journal. It writes all events to Cassandra, and then the analysis component reads the journal entries in Apache Spark. We perform deeper analysis and model improvements in Spark.
Cassandra was a natural choice for reliable distributed journal; we did not even look at any other choices. It would be difficult to implement elastic CQRS/ES system without a reliable distributed journal, and Apache Cassandra fits that extremely well.
At this stage of the project (early beta with a few friendly users), we have the freedom not to worry about true elasticity and availability. Nevertheless, similar projects that we have implemented on behalf of our clients do require very high availability and elasticity. This would be very difficult to achieve without Apache Cassandra, regardless of the details of the workload on other nodes.
CRUD is dead, storage is cheap and elasticity is easy. Take advantage of the performance and elasticity of Cassandra, combine that with the availability of very cheap storage, and leave the world of destructive updates in the past. This is the foundation of not only elastic data stores, but also elastic (responsive, resilient and event-driven) systems.
We’ll hopefully talk more about how we use and scale Apache Cassandra at this year’s Scala eXchange showing the details of our CI & CD pipeline. Cassandra is great!
Read more about how Cake Solutions uses Cassandra with Mesos, and more on Cake Solution’s dev blog.