Case Study: Zenly Pinpoints ScyllaDB to Bring High Performance and Low Latency to Its Popular Geo-Location App

By Jean-Baptiste Dalido, Head of Infrastructure, Zenly

About Zenly

Zenly provides a free smartphone app that lets friends and family track each other’s location in real time simply by tapping on a friend’s picture to see exactly where he or she is. Swipe through your friends to jump around the Zenly social map or send your family a link so they can track you on a map in their browser.

Filling an interesting space between geolocation, social network, messaging, and utility, Zenly is quickly growing its user base—especially among teens. The company recently surpassed the 1,000,000 registered users mark.

Zenly is headquartered in Paris, France and was acquired by Snap, Inc. in the spring of 2017.

The Challenge

To work as promised, Zenly’s services need to operate in real time. As Jean-Baptiste Dalido, Head of Infrastructure at Zenly, explains, “We have a very particular workload. Zenly is geo-location, so it’s mostly updates—a lot of updates. If you open the app and the position of your friend is two minutes old, that’s a problem. So the main issue for my team is to have a database that’s as fast as possible.”

This need for speed was challenged by the collection of databases Zenly had previously amassed. Dalido explains, “We had Elasticsearch as a main database. We had Redis for cache—and we had tons of Redis. We used Cassandra. It was difficult to track all the databases we had in production.”

Zenly had to streamline and consolidate. “We needed to unify the database for all the developers in the company,” said Dalido. “We needed things to be simpler, because time is critical.”

The Solution

At first Zenly considered standardizing on Apache Cassandra, which they had a lot of experience with. “Cassandra is great, but we have lots of developers coming in and we didn’t have time to teach them all to be Cassandra ninjas. With Cassandra, application threads would stop for too long. We have small clusters and garbage collection is a deal breaker for small clusters.”

“ScyllaDB is Cassandra but it’s fast. That’s why we chose it. I’ve never seen a database as fast.”

– Jean-Baptiste Dalido

Enter ScyllaDB.

“We’ve been watching ScyllaDB since day one,” said Dalido. “ScyllaDB is Cassandra but it’s fast. That’s why we chose it. I’ve never seen a database as fast.”

With ScyllaDB, Zenly achieves higher performance from a much-simplified system. “ScyllaDB enables us to be live always. We don’t need cache. With ScyllaDB, we only have to use ScyllaDB with nothing in front of it.”

Zenly found the migration to ScyllaDB surprisingly easy. It’s now running ScyllaDB on 4 clusters—two single-region clusters and two double-region clusters. The use of multiple clusters brings redundancy and enables them to do some feature isolation. If a cluster dies for some reason, the Zenly application is unaffected.

Dalido emphasizes that “because Zenly is live, everything is about performance, always.” With ScyllaDB in production, he and his colleagues at Zenly are glad to report:

  • 100% uptime across its 4 clusters
  • In-production cluster performance of 300K request on 7 nodes
  • p95 latency of < 1ms & p99 latency of < 3ms