Tantan is a locality-based dating app that provides a venue for people to connect and expand their social circles. More than 160 million men and women have used Tantan to chat, form new friendships, and, ideally, find their perfect match. We have more than 10 million daily active users.
Our app delivers profiles of people that might be interesting to our users. Those profiles incorporate photos, likes, and interests. After evaluating prospective matches, users can ‘like’ favorites with a swipe. If the swipe is reciprocated, a match is struck.
Once matched up, users can interact via texts, voice messages, pictures, and videos. Our app provides social privacy by blocking and filtering other users. Our new ‘ice-breaker’ feature lets our users get a better understanding of a potential match with a brief quiz.
The Tantan app periodically collects user locations, which are used to identify, in real-time, other users within a range of about 300 meters. Our peak usage hits about 50,000 writes per second.
Because we have so many geographically distributed users, we put a lot of strain on our database. Due to the real-time nature of our app, our number-one database requirement is low latency for mixed read and write workloads.
Initially we ran two 16-node Cassandra clusters–one cluster for passby and one for storing user data. Yet even with this many nodes, we found ourselves running into serious latency issues. These issues were often caused by a common culprit in Cassandra — garbage collection. However, we also saw latency spikes resulting from other slow maintenance tasks, such as repair. Even after tuning Cassandra to our specific workloads, we saw little improvement.
ScyllaDB turned out to be the just the right solution for our problems. We found that ScyllaDB meets our needs perfectly. Today, we run the passby function against an 8-node ScyllaDB cluster, a reduction in nodes that’s been a big cost savings for us. More importantly, by adopting ScyllaDB, we’ve completely side-stepped garbage collection and other issues that were interfering with the real-time nature of our application. We also spend much less time managing our database infrastructure.
We found the ScyllaDB teams and the broader ScyllaDB community to be very responsive in getting us quickly up to speed and helping us to optimize our ScyllaDB deployment.