Jun18

Opera Syncs Tens of Millions of Browsers with Scylla

Subscribe to Our Blog

Opera Case Study Graphic

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 Scylla, the results he’s seen and how Scylla helps his team.

Opera recently released a new version of its browser. You can get it here!

Please tell us about Opera.

Opera LogoOpera 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 Scylla?

We are using Scylla for storing users’ data in Opera Sync service.

Rafał Furmański, Project Technical Manager, Opera
Rafał Furmański, Project Technical Manager, Opera

What database did you use prior to Scylla?

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?

Opera Sync is written in the latest Python and we use python-driver with django-cassandra-engine (written by me BTW) to interact with Cassandra/Scylla cluster.

I also wrote a simple python script for managing and repairing a Scylla 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 Scylla 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 Scylla?

We have special analytics cluster with Apache Spark (already under construction).

How did you hear about Scylla?

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 Scylla’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 Scylla very closely and about a year ago I decided that your project is mature enough to migrate our users’ data from Cassandra to Scylla.

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 Scylla 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 Scylla do compared with other DBs?

I prepared a test cluster of 3 nodes with installed Cassandra and Scylla. Then I ran cassandra-stress on both engines (with my custom db schema) and I saw that Scylla 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 Scylla 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 Scylla clusters at the same time. Migration finished last week so now we use only Scylla in production!

Did you work with Scylla technical support? How was that experience?

Yes of course! I was able to find some small bugs in Scylla 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 Scylla?

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 Scylla?

Yes! Since migrating to Scylla our on-call engineers could finally get enough sleep. They’re really happy with this change. We don’t have to watch Scylla 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 Scylla success story to tell? Feel free to contact us directly to let us know what you’ve been using Scylla for, or join our Slack channel to share your success with the community.


Tags: Apache Cassandra, Apache Spark, browser, Cassandra, django, Opera, Python, scylla, user stories, user story