tl;dr; yes, it works!

Best backend

During last year at SoftwareMill we had an opportunity to develop a few Akka Persistence based projects. The journal plugin we were using was a Cassandra backend. There was a moment we had a doubt if this was the best way for Akka Persistence, since we have found situation in which it encountered performance issues (but that’s a topic for another blog!). This led to an internal in company discussion on possible Akka Persistence backends.

Our conclusion wasn’t surprising, we have found that it’s the best available backend!

Alternative

A few weeks later a new idea appeared, what if… we used Scylla?

If you have not encountered Scylla before, it’s a Cassandra written in C++. It’s name, like Cassandra, also comes from Greek Mythology, is that a coincidence? ;) While it doesn’t offer all the Cassandra latest features, the authors claim that it can be a few times faster than the Java based Cassandra. It appeared even more interesting when we noticed that biggest e-commerce company in Poland had it tested and got promising results. This led us to the decision to evaluate if Scylla works with Akka Persistence Cassandra plugin.

What could go wrong? Well, as mentioned, Scylla does not implement all of the Cassandra features (the biggest doubt were the Materialized Views), but good news appeared! Scylla 2.0 has released an experimental Materialized Views support, but also, Akka Persistence Cassandra plugin (since version 0.8) stopped using Materialized Views!

Interesting fact: Materialized Views also are now experimental in Apache Cassandra, due to some bugs found.

Tests

We conducted a few tests. First, we took Scylla 2.1 and the Akka Persistence Cassandra codebase. We ran the project tests against Scylla and what was surprising, it really worked! (be aware that to do that you have to modify tests to use external Cassandra, plus not all tests pass in that mode, but the same tests failed for us for both Cassandra and for Scylla).

Initial test passed, so we took the next step — we checked a few our commercial projects, if they were working correctly on Scylla, and… they also worked correctly.

These are pretty promising results. However we have not conducted any performance tests yet.

Note: we have not tested Scylla in production, we can’t say if it’s production ready. We have also not verified SSL connections. This article is just a first step — feasibility study.

Do you have any experience on running Akka Persistence with Scylla?