Scaling Facebook Apps to 12 Million Users
With Facebook growing to over 500 million users, applications with the right content and design can find a large audience as users spread the app to their friends on Facebook. For Cardinal Blue, this happened with their Travel Balloon app, which reached a million users within a week of launching. In addition, their Quiz Creator platform saw peaks of over 10,000 requests / minute — they wrote scripts to dynamically adjust Heroku’s dynos to increase the capacity of their app at certain times of each day as certain countries around the world hit their peak usage. To handle the millions of users on their existing and new apps, Cardinal Blue makes use of Heroku’s database sizing, dyno control, memcache, and NewRelic services to get maximum performance with the least set of resources.
Simplifying Facebook App Deployment
Cardinal Blue has created dozens of apps in a highly iterative fashion, trying out quick prototypes, and evolving some into polished apps. Deployment and iteration speed are critical factors for their business. Their original system was using Capistrano script-based deployment directly to EC2 and their engineers were getting mired in script development and maintenance. Heroku’s git-based deployment eased their pain, giving them near zero-touch deployment for their Facebook apps. Using Heroku means they don’t have to think about deployment issues and can focus on building their next app.
“It is a great relief to not worry about editing deployment scripts and managing EC2 instances.”
Making Hard Facebook Architecture Choices Easy
For Cardinal Blue to get the scalability needed for millions of users, they knew they would require in-memory caching and a resizable database. This posed a number of architectural challenges for them. Do they create 1 memcache instance per app or a shared instance across multiple apps? How will the database perform as the record count increases? How many front-ends are needed? The Heroku system is able to scale its add-ons, dynos and databases transparently. This saved Cardinal Blue significant analysis and design time as intelligent choices for the architecture and components were provided by the Heroku framework.