Sleeper: Using Scylla to Level the Playing Field
Tags: Fantasy Football, Scylladb, Database, NoSQL, Cassandra

by Peter Corless

In the world of fantasy sports apps there are many big players you’ve likely already heard of. The folks at Sleeper should be added to that list. In an industry where many competitive online games are defined by well-known “sharks,” they decided to name their app after “sleepers” — players who are relatively unknown, but who are likely to have a breakout season.

Within the billion-dollar sports app market Sleeper is looking to be a strong long-term play. They are backed both by seasoned venture capitalists like Andreessen Horowitz and sports professionals like Kevin Durant, JuJu Smith-Schuster and Baron Davis.

Sleeper seeks to connect people over sports. Where you can play with your friends, your family, and your co-workers. It combines the best of statistical modeling and fully-automated drafts with a fully-realized social platform that facilitates trades and enables chatting about the players and the game. It’s all about building fantasy sports leagues that are fun and will last. As they said themselves, “There are many sports companies today building apps for the die-hard sports fan or degenerate gambler. We are not one of them.”

Instead of hyper competition for Sleeper the focus is on creating that same feeling when you have a Super Bowl party. While the focus of all fantasy sports is winning, the point isn’t solely about winning. It’s about engendering fun and learning deeply about the games you love. Because at the end of the day, that fun and that learning translates into player retention.

The Pivot to Scylla

To learn about how they built their successful platform, I had the opportunity to interview Sleeper co-founder Weixi Yen and Director of Engineering Kenneth Ito to ask them why they chose Scylla as a foundational technology for their platform.

“Scylla has just worked,” according to Weixi. “For us, that’s huge. Because Cassandra didn’t work.”

When they began their programming work they chose Elixir. It proved a good fit for the real-time messaging part of the app. For the database, they went with NoSQL over an RDBMS like MySQL. And specifically they started with Apache Cassandra because they expected to do a lot of fast writes.

However, once in production, Kenneth ran into performance problems and inconsistencies in repairs. They learned about Scylla from an advisor who had deployed Scylla elsewhere, and which further confirmed their own research. Their goals for Scylla was for it to be a more reliable platform, and to shrink their cluster to save money on the number of nodes they needed to run their fast-growing app.

For a time, they ran both systems in parallel doing dual writes. Scylla had proven itself faster. But also they found in side-by-side deployments how Cassandra showed inconsistencies. It didn’t handle materialized views correctly. (In fact, Nate McCall famously said of Materialized Views in Cassandra, “If you have them, take them out.”) But for Sleeper, Materialized Views were a must-have feature to allow different ways to look at their player base. Yes, they could have rewritten their apps and data model. But they were glad Scylla simply worked as designed.

Weixi and Kenneth also appreciated Scylla’s ability to better handle massive spikes in traffic. Because in a 30 minute window on a Sunday, a single player injury in the real world can cause a huge amount of traffic in a fantasy sports system designed for more than a million active players.

Now Sleeper uses Scylla for all of its data. Both the bidding system and the chat system are stored in Scylla. “It’s already everything. We don’t have another database.” It’s fast. No caching system is needed. Weixi contentedly reported, “I’ve been very happy with it.”

Sleeper runs on GCP. They have 9 nodes with 32 cores and 128 GB RAM per node, with about 300 GB of unique data (nearly 1 TB with a replication factor of 3). They can now easily manage burst traffic that can reach 100,000 writes per second, and still have room to grow. They also use Kubernetes (GKE) to manage their deployment, and also use Confluent Kafka as a push notification system and for segmentation of users.

With Scylla, Sleeper is continuing to grow and thrive. While some other fantasy sports apps are shedding players, the Sleeper team are drawing in more players by expanding beyond US-based real-world sports. They now also offer fantasy League of Legends, where you can draft your favorite esports players. This has grown their user base in both Europe and South Korea.

Get Your Game On

Let us know how we can help accelerate your own business. Contact us online or feel free to join our community in Slack to talk to our engineers and your industry peers. You can also create an account on Scylla Cloud if you want to get started immediately.