Brass City utilizing ArangoDB
Jean-Sebastien Lemay, Founder of Brass City
What is your use case?
At its core, Brass City is a social network with a lot of relationships. Users can follow other users, or add each other as friends. Channels are created, to which activities can be attached through relationships. An event feed is displayed for each user, linking events to other users, channels and activities. As such, a graph database was a perfect fit.
Also, I needed an ACID-compliant engine, or something that provided locking mechanisms and transactions, since activities such as bets involve important transactions that must not collide or be in conflict with parallel updates and requests.
Finally, I needed something that could scale, so I was interested in databases that offered some sort of distributed master-master horizontal scaling architecture.
Which problem did ArangoDB solve for you?
My product was first implemented using FoundationDB, which was a key-value store. Back then, I was impressed by the performance metrics that the technology promised. However, I quickly learned that using a basic key-value storage engine for a social network makes development very difficult, as the way data was modeled was not intuitive to my business domain. Furthermore, FoundationDB was acquired by Apple, and it was no longer an option.
I then switched over to a graph database called OrientDB. This move really confirmed that a graph database was the right choice for my business. However, as soon as I launched in production for beta testing with users, I noted very severe performance issues that undermined user confidence in the product. Considering I had a very low usage load and still had problems with performance, I realized that my programming approach needed to be refactored to reduce network back-and-forth requests in my logic, and more importantly, I also needed to find a new database.
What is your experience with ArangoDB in production?
I launched the product recently, and so far performance has been great. Even in testing, I never really encountered any bugs with the database itself so far. The only tickets I ever submitted to the Github repository were suggestions to add more details to error messages, when the programmer (myself) does something wrong within a transaction submitted to the engine.
As such, I’m very happy with the database so far!