Angular shitstorm: What's your opinion on the controversial plans for Angular 2.0?
How NoSQL saved Draw Something

Draw Something’s success aided by Couchbase – chat with CEO, Bob Wiederhold

Chris Mayer
draw-something

We’ve all witnessed the app phenomenon that is Draw Something but you may not know how Couchbase helped it maintain its popularity. We talk to CEO, Bob Wiederhold

It can’t have escaped your attention that the most popular game currently on any iOS or Android device is OMGPOP’s Draw Something – bringing a Pictionary-style game to the smartphone age. The app’s journey to 50 million users in as little as six weeks is certainly impressive, but how did they manage to maintain performance with such rapid growth?

This is where Couchbase stepped in, providing the Draw Something team with the latest NoSQL database solution to keep things relatively scare-free. We talked to Couchbase CEO Bob Wiederhold about how they helped maintain the viral game and played a part in Draw Something’s success. The infographic below details just how big Draw Something became in a short period of time…

   

JAX: So, Draw Something is a bit of phenomenon – why is Couchbase Server a good solution for when an app goes viral?

Wiederhold: When an app goes viral, you have to be able to scale your database very, very fast.  Draw Something is an extreme example of this. In 5 weeks, Draw Something grew from virtually nothing to 50M users, 15M DAU (daily active users), 400M games created, over 3B pictures stored at peak rates of over 5K/sec, and generated over 5T of data. Couchbase was able to keep up with this growth without a second of downtime and maintain high performance throughout. We think this is an incredible success story for NoSQL and Couchbase.

To see what can happen when your database doesn’t scale just check out the EA Simpsons Tapped Out story.  They had a mobile game start to go viral at almost the same time that Draw Something was going viral but it collapsed because their (MySQL) database couldn’t scale.  They had to pull the game off the market, which never to returned, because of scaling issues.

How often were you in contact with OMGPop when their app boomed? Did they look to you for advice and if so, what was it?

Like many Couchbase users, OMGPOP started using our free Community Edition for a few of their games and we didn’t have any direct interaction with them until recently.  Draw Something was released in early February and grew slowly at first.  OMGPOP didn’t contact us until March 1 when their game started to go viral.

At the time they had 6 servers in their database cluster.  They could see all the numbers starting to grow quickly, downloads, DAUs, pictures being drawn per second, amount of data being stored and so on. They wanted to be sure their database was properly configured and set up for rapid growth. The operations people at OMGPOP had never rapidly scaled a database before and they wanted expert help.

Over the next 3 weeks we worked very closely with OMGPOP and interacted with them on a very regular basis. We worked with OMGPOP to understand how their database workload was growing so things like peak simultaneous users, peak drawings/sec, amount of data needed to be kept in memory, total amount of data stored, to understand how to accurately monitor this growth using our monitoring tools, and how to make sure the size and configuration of their database cluster was keeping up with this growth. 

OMGPOP had a hit on their hands so they wanted to be 100% confident the game was not going to have a problem with its growth so we worked with them very closely through this 3-week period.  Once the dynamics of Draw Something’s database workload was well understood and its growth was more predictable there was much less interaction with OMGPOP.  The database is now well over 100 servers and growing.

Did you envisage this happening with Draw Something – it becoming the fast growing mobile game with 50m downloads?

I’m not sure anyone can predict these things, we certainly couldn’t.  Once OMGPOP contacted us we, of course, were very curious about the game.  I think just about everyone at Couchbase downloaded it and started playing it.  I know I was playing more than 10 games at one point with various people at Couchbase and my family.  It certainly was a lot of fun and somewhat addicting so from that perspective I’m not surprised in went viral.

  

How does a developer cope with the pressures of scaling that much? Not to mention the pressure from the developer/user?

The social gaming business is a “hits” business. Every developer dreams of having a game that goes viral and gets into the “top 10”. Developers naturally focus most of their attention on the creative aspects of their game.  But if they don’t also focus on its scalability all their hard work could be wasted if the game begins to go viral and falls over under heavy load. If app performance goes down due to scaling problems or the game just crashes, users quickly get frustrated and move on to other games – and your opportunity at hit game vanishes overnight. This nightmare is exactly what happened to EA’s Simpsons Tapped Out.

At the time the game goes viral though, the pressure to keep the game up and running generally falls on the operations people or Devops. There is enormous pressure to make sure the game stays up with high performance 24×7 without a second of downtime. There is no room for error so every precaution is taken to make sure there isn’t a problem. During critical periods of growth when you are trying to characterize the database workload of the game, the database is monitored 24 hours a day.

As you suggest there is huge pressure and very little sleep for the first few weeks after a game goes viral.  After that things settle in, the database workload is well characterized, the ongoing growth of the game becomes more predictable, the pressure subsides, and a good night’s sleep returns.

What sort of issues occurred with Draw Something? Anything particularly rare?

There was nothing rare.  We worked through a few database configuration issues early on and we helped OMGPOP move to much beefier servers.  In the first couple of weeks, there were an unusual number of servers that failed and had to failed over, there were backup strategies that needed to be changed due to the rapid growth of data, etc.

For a slow growing app you have plenty of time to deal with all these issues and it’s not a problem.  For a game that goes viral you are forced to deal with these issues in a very compressed period of time and the stakes are so high associated with getting things right.

How many Couchbases were they employing? And how many were killed in the process?

The infographic shows how OMGPOP’s database cluster grew over time. When they contacted us they had 6 servers in their cluster. It’s now well over 100 servers. I don’t know how many servers had to be failed over but I believe it was over a dozen.

Can you give some specifics in how Couchbase’s NoSQL server works?

Couchbase is a horizontally scalable database. It runs on standard commodity servers. As the amount of data or database operations/sec increase, you simple add more commodity servers to your database cluster to support the added load. 

When you add more servers, the database automatically redistributes the data across the larger cluster completely transparent to the app. With a larger cluster the database can now support more operations/sec, store more data in memory, store more on-disk data, etc. Theoretically, you can infinitely grow your database in this way. And, while your database is growing there is no need to make any changes to the application, everything is completely transparent to the app. 

Couchbase is also very fault-tolerant.  When servers fail, replicas of data that have been stored on other servers are promoted to “active status” and the failed server is failed out of the cluster.  Very high performance reads and writes with low and predictable latency are provided through the memcached caching layer that is embedded in Couchbase.

Does every budding mobile app developer need up-front scalability planning in place for a situation like this?

If your dream is to develop an app that will go viral and be a big success you better develop your app to scale.  Draw Something shows you what can happen if you have developed your app to scale.  EA’s Simpsons Tapped Out shows you what can happen when you don’t.

Finally how proud are you that they chose Couchbase and do you play the game yourself?

We are incredibly proud to be part of this success.  As I said earlier, I play Draw Something all the time. I’m addicted enough to it that I even found myself reading tips on-line about how to draw better pictures.  I’m horrible at drawing pictures, but I’m getting better.

Author
Comments
comments powered by Disqus