Why Sega's latest games required a move to the cloud
Sonic Forces and classic re-releases force Sega to evolve its infrastructure
When Sega re-released console classic Crazy Taxi as a mobile app in 2014, the developer didn't expect eight million people to sign up within a single week to play it.
With Sega's database and gaming servers sitting inside its own data centre, it couldn't scale to meet this surging demand, meaning users experienced crashing features and login issues.
"When they opened up the app, for example, they had a little 30-second wait; a call to the database waiting for the servers to time out," explained Dawid Esterhuizen, who joined shortly after Crazy Taxi's mobile launch as a senior server engineer to help address these problems.
With Sega used to relying on its data centre for games supporting offline play, these server-side problems - including logging into the game and trouble accessing features like the leaderboard - pushed up the app's churn rate.
So when Esterhuizen started a new project, mobile game Kingdom Conquest: Dark Empire, he looked into using a more scalable option, and recommended that everything needed to be horizontally scalable, including the database.
Crazy Taxi's 2014 reincarnation
Moving it into the cloud
The engineer checked out a few NoSQL options including Couchbase, but eventually settled on MongoDB because he had used it at a previous company, but also because its document structure proved to be a lot more applicable to the use case.
Sega chose Node.js combined with MongoDB for its data centre, which Esterhuizen says has been working very well.
But when Sega started its next project, Sonic Forces, which came out last week, Esterhuizen realised the game developer's data centre wouldn't cut it. Sega had projected numbers of about five million daily active users on Forces, of whom 100,000 would be playing concurrently.
As a result, Esterhuizen decided to run MongoDB's database on the vendor's new cloud platform, Atlas.
"We have a very small DevOps team - it's just me and another person - and we have to maintain all the other five games including other services and also this pretty big game that's just gone out," Esterhuizen explains.
"Managing a MongoDB cluster of the size we needed is quite resource intensive," he adds. So much so that without leaving database maintenance to Atlas, Sega would've needed to hire another DevOps engineer.
When he compared the price for using the database on Atlas with running it on Amazon Web Services (AWS), though, Esterhuizen found the cost to be quite high.
"Then we contacted [MongoDB's] enterprise team and worked with them over a couple of months to identify our needs and then they came back with a very reasonable quote which was much more in line with what we had in AWS," he says.
MongoDB Atlas gives Sega scale, and skills
Dawid Esterhuizen, Sega's senior server engineer
"What MongoDB gives us is the opportunity to scale up and meet that need to scale back down again so we can maintain the project long-term but without having a very big price tag on top of the database," Esterhuizen explains, saying he'll use it again in future projects.
"When we started the move towards it, we knew it would be an intensive and expensive investment because people have to be trained, people have to gather the knowledge. At that time, considering all the tools out there, I think it was the best fit for us," he says.
"There's quite a few developers who enjoy working with MongoDB because of the document structures. It makes it simpler and it's more applicable to how we use it at the application level," he adds.
But Sega's developers have given Esterhuizen a "mixed" response to MongoDB overall, he admits, with one common complaint being the database's lack of transactions.
Because of this, he wants to see transactions in the next MongoDB update. "The query retries [in version 3.6, launched this week] are already a big plus but if we have transactions it will make it even better," he said, acknowledging that this might make the database run slower, even in the cloud.
For Esterhuizen, he is looking forward to the new backup query option in 3.6. "It's absolutely amazing for us," he says. "For example, when we do analysis of data in the game we have to run quite big aggregations and slowish queries.
"Rather than running that on a production environment where it can impact users we can just click a button and we can run our query."