In this Q&A session, we interviewed Rafał Furmański, Project Technical Manager for web browser maker Opera. Rafał shares why he chose to migrate from Cassandra to ScyllaDB, the results he’s seen and how ScyllaDB helps his team.
Opera recently released a new version of its browser. You can get it here!
Please tell us about Opera.
Opera was founded in 1995 in Norway on the idea that everyone would browse the web on any device. For more than 20 years our browsers have been helping millions of people access the internet to read, create, laugh, and play. We continued to make our browsers smaller and faster and pioneered innovations such as tabs or speed dial, which have since become something we find in all web browsers. We make web browsers for mobile phones and PCs. Our products include the Opera browser for computers (Windows, macOS and Linux) as well as the mobile apps: Opera for Android, Opera Mini (Android and iOS), Opera Touch and Opera News.
What differentiates Opera from other browsers?
Unique set of features as completely free, no-log VPN service built in the browser or “My flow” that allows you to share things smoothly (and securely!) between your computer and phone.
Our browsers are also first on the market with built-in Ad blocking and crypto mining protection.
How many users do you have around the world?
It’s a great privilege and responsibility but also a lot of fun to keep delivering cutting-edge internet browsers to 320 million people.
How are you using ScyllaDB?
We are using ScyllaDB for storing users’ data in Opera Sync service.
What database did you use prior to ScyllaDB?
We used Cassandra for the past 2 years but after some time we started to have constant issues with this database including enormous load, Cassandra process being killed and lots of GC-related issues that we spent hundreds of hours trying to debug. It was a constant struggle of trying countless numbers of GC configurations that helped only a bit.
Please describe your application architecture and environment. What else are you using?
I also wrote a simple python script for managing and repairing a ScyllaDB cluster. It’s called scylla-cli.
We are currently present in 2 data centers (Europe and North America) to deliver our users as smooth an experience as possible.
What ScyllaDB features help with browser sync?
I can’t think of one specific feature. The whole database is just excellent!
What other big data components, if any, interact with ScyllaDB?
We have special analytics cluster with Apache Spark (already under construction).
How did you hear about ScyllaDB?
In 2015 I attended Cassandra Summit conference to seek help with our setup from Cassandra gurus. Unfortunately they told me that they’ve never seen something like our use case and were unable to help me. So I started to research other database options. Then I saw ScyllaDB’s booth at that conference. Your guys had a very powerful piece of hardware there that delivered 1M CQL OPS per second with live metrics. I was really impressed and discovered that you were building a database that’s very efficient and compatible with Cassandra at the same time. That was it, I had to try it. Since then I’ve watched the development of ScyllaDB very closely and about a year ago I decided that your project is mature enough to migrate our users’ data from Cassandra to ScyllaDB.
What was your evaluation process? Did you consider other databases?
I carefully checked list of differences and the only thing that I was missing at a time was support for Counters, which was added in ScyllaDB 2.x. I did not consider other databases, since I had to use an engine that’s compatible with Cassandra. I was also hoping to reduce the number of nodes needed to handle my load.
How did ScyllaDB do compared with other DBs?
I prepared a test cluster of 3 nodes with installed Cassandra and ScyllaDB. Then I ran cassandra-stress on both engines (with my custom db schema) and I saw that ScyllaDB performed 3x better when it comes to operations per second and latency. Unfortunately I was throttled by Gigabit Ethernet cards on my nodes and I was convinced that having 10Gbit cards would improve my results dramatically. Also when it comes to load on the machine, during stress testing ScyllaDB load was very, very small in opposite to Cassandra.
How was the migration process?
We decided to play safe and do it slowly to be able to revert the operation at any stage. We simply started to move our users one by one from one database to the other. Our backends were connected to both Cassandra and ScyllaDB clusters at the same time. Migration finished last week so now we use only ScyllaDB in production!
Did you work with ScyllaDB technical support? How was that experience?
Yes of course! I was able to find some small bugs in ScyllaDB and was working closely with Glauber and Piotr to solve them. They were more than helpful. I’ve never had better technical support experience in my entire life (and I really mean it!).
Are you now in production with ScyllaDB?
Yes. We changed ~30 Cassandra nodes to 21 (with room for future growth). We run in 2 data centers, and manage 33TB of data.
Anything else you can share about your experience with ScyllaDB?
Yes! Since migrating to ScyllaDB our on-call engineers could finally get enough sleep. They’re really happy with this change. We don’t have to watch ScyllaDB 24/7. It just simply works as promised. We can now focus on creating new features for our users instead of repairing Cassandra.
Thank you guys for making such great product!
Do you have your own ScyllaDB success story to tell? Feel free to contact us directly to let us know what you’ve been using ScyllaDB for, or join our Slack channel to share your success with the community.