Game On or Game Over?
Gaming applications–particularly multi-player games–are usually built for the cloud, meaning that they can scale out according to demand. Unfortunately, this hasn’t necessarily been the case with the databases that power these applications. The SQL databases that online games have to run on (NoSQL just isn’t reliable enough to be an option)–even the ones built for the cloud, like AWS Aurora–scale in the limited fashion that pre-cloud applications scaled. The world of online gaming apps is like pop stardom. Success can happen fast, so you’ve got to be ready for it. When a game gains popularity its audience can skyrocket, maxing out database capacity and causing downtime or poor performance that turns off new players, creating a missed opportunity that most likely will never come again.
When your game takes off, you want to build on it–you want to improve the experience, add features and increasingly rich analytics. The last thing you’ll want to have to worry about is whether your database can handle all of the cool updates you’ll be making. To that point, Google and AWS have been duking it out Mortal Kombat style to offer cloud-based infrastructures that allow you to scale without limit. While this is definitely good news for game developers, what they won’t necessarily tell you is that your average relational database running in the cloud doesn’t scale any better than if it were running on your own in-house server. So while you may be able to scale your gaming application at will, unless you have a database that is specifically built to scale out like other cloud applications–by adding server nodes–your performance, as well as your creativity, will be stymied.
Gaming application life-cycle: Riding the roller coaster
Gaming applications often experience a roller-coaster-esque life cycle. At release you don’t know what you’ll really need, so you’ll typically wind up over-provisioning computing power. After the game use “levels off” you typically want take away some of the resources that are no longer needed, in order to cut costs. And then, when you have an update you want to “flex” it back up, essentially doing it all over again.
Google, AWS and other cloud infrastructures allow you to do that at the application layer, but not necessarily at the database layer, which essentially hampers your ability to successfully navigate the gaming lifecycle. Once again, the culprit is architecture of the SQL database–it was built for the pre-cloud era!
Database Capacity: The SQL Buffet
Traditional, single-server SQL (like Aurora, MySQL) is like a one-trip buffet–once you’ve filled your plate, you’ve got to do some pretty tricky gymnastics to get more food onto it. You hope that nothing unexpected happens, because the slightest wrong move will leave your dinner all over the floor. Similarly, MySQL and its various replacements limit you to one server at a time. Moving to a bigger server means downtime (read “certain death” in gaming parlance). Even if you are able to move to a bigger server, once you’ve maxed out the biggest one, it takes complicated programming to increase performance which, just like piling your plate too high, leaves you vulnerable to all kinds of trouble.
“Sharding” and “Master-Slave” may sound like they come straight out of The World of Warcraft, but they are in fact very uncool tactics used to increase database performance once it’s hit its limit. You might be able to get away with using these tactics–if you’ve got the resources of Facebook or Twitter, that is….Otherwise, they can spell GAME OVER for your application, as they’ll incur a level of complexity and fragility that will be very tough to sustain. Online gaming requires a database that scales out the way that cloud applications scale–where capacity can be added cheaply and incrementally by adding new nodes as load increases, without nasty techniques like sharding or master-slaves. It requires Scale-Out SQL.
Why worry about your database when you don’t have to?
You went into the video game business because you’ve got a creative vision, not because you wanted to spend your time babysitting databases. Fortunately, you don’t have to, because Scale-Out SQL is not just science fiction. Just like the All You Can Eat buffet that let’s you fill up multiple plates, ClustrixDB allows you to scale out by just adding server nodes. So if you’ve deployed in the cloud, you can scale your database right along with your gaming application.
Moreover, you’ll be able to flex database capacity up or down depending on demand, or the need to add cool new features or deploy sophisticated analytics with minimal operational and management effort. With ClustrixDB, it’s GAME ON!