Hornet has over 35 million queer users worldwide, providing applications for members of the LGBTQ+ community to connect, share and date online. Since its launch in 2011, Hornet has grown to disrupt a number of markets including France, Brazil, Turkey and Taiwan - and is growing its user base across Europe and the US.
The company’s engineering team is based out of Cape Town, South Africa, and has been a long-time user of Apache Cassandra, thanks to its ability to effectively scale large amounts of data. Messaging and feeds are central components of Hornet’s ecosystem, which have been based on Cassandra, helping connect queer users to one another all over the world.
However, Hornet started working with DataStax, a commercial provider of Cassandra services, when one day its feed cluster died. Matthew Hirst, Head of Engineering at Hornet, says:
Our feed cluster exploded one day. We weren’t really experts in Cassandra so we had no idea why and couldn’t really figure it out. We found ourselves in the Apache Cassandra user group where we asked for help and from there got forwarded to DataStax.
We got some support, got some help done on our clusters, some health checks. We managed to optimize them quite a lot, and adopted some best practices, so they wouldn’t explode again.
With that environment stabilized, Hornet began learning more about DataStax’s cloud-based database-as-a-service offering - Astra. At a similar time, Hornet was planning the launch of its new app, SPACES, which provides a safe environment for members of the LGBTQ+ community to meet each other around shared interests and locations.
Given this was going to be a new application built from scratch, the team at Hornet thought it would be an opportune time to try Astra, as it meant that they didn’t have to deploy a huge cluster for an unpredictable user-base. Hirst adds:
With Astra coming out, it lets us kind of scale up as we go. With SPACES being new, it only has hundreds of DAUs, rather than hundreds of thousands like Hornet has.
You don’t really want to have to provision a gigantic cluster, which is what Cassandra likes. So Astra made a lot of sense for kicking that off.
Finding success with Astra
Launching SPACES with Astra proved to be a successful project for Hornet. The company had to do a bit of extra work on getting the security right, particularly with its private endpoints, but otherwise it was a smooth launch, according to Hirst. He says:
Kicking off the fresh project was great because we just pointed our app at Astra and everything was done. It was really, really easy to get started. Provisioning a cluster was quick, you click a button and from there it all worked.
This led to Hornet reconsidering its entire infrastructure approach, given the positive experience with Astra for SPACES. The engineering team began the process of assessing how the costs and complexities of its existing Cassandra clusters would compare to migrating to the cloud with DataStax Astra.
It found that running entirely on Astra would produce a similar cost point, but that it wouldn’t have to deal with all the ongoing management or risks associated with running out of space and upgrading to newer versions, which Hurst describes as a “nightmare”.
Having made the decision to go all in on Astra as a result, the company used DataStax’s ZDM (Zero Downtime Migration) tool to help ensure the project was a success. Hirst adds:
With our historic data we didn’t want any downtime, and so we didn’t want to pause everything, do the migration and then resume. So it was more than just pointing the endpoints at a new cluster after doing the migration.
DataStax has a ZDM, which is the zero downtime migrator - you put that up in the middle, and then read and write to Astra and Cassandra.
On the API side you’ve just changed the endpoint, but in the background there are multiple databases involved. It’s reading from the old data store, while writing to both. That worked a lot more seamlessly than we expected. We did a lot of testing in a staging environment first to make sure it would work well, which it did.
Hirst says that the services now running on Astra are working “seamlessly” and that Hornet hasn’t suffered any outages, whilst its operations are simpler now too. He adds:
We definitely want to expand more into using Astra, because there’s no real space limits anymore. I think we will start looking at more use cases where it makes sense.
There’s also streaming, which we haven’t quite gotten to, but we want to start using that for our moderation tools. We are hoping to build a moderation service, where the messages going into Astra head straight from there to into the moderation service instead of the API having to forward that into a bunch of places.
The company says that the experience for users has been “great” because it has been exactly the same as it was prior to the migration, which Hirst says is the “gold standard”. He says:
We didn’t have any degradation of response times or anything like that, which was our biggest concern. We were really worried about downtime or higher latencies. But we chose to put Astra in AWS, which is in the same region as our servers, so we’ve had the exact same response times, which is as good as it gets when it comes to Cassandra.
And for Hornet itself, Hirst adds:
In terms of the experience for us, the best thing is we just haven’t had to worry about it. We used to have all these panels with Cassandra stats, which I don’t have to have anymore.
We never really do any reporting or health checks on that. We also haven’t had to hit their support yet since we started, which has been fantastic.