Hi, I’m Sander Smith, president of Sericon Technology. I’d like to talk with you about FriendRunner, a cloud-based tool that we developed that helps Facebook application developers determine just how scalable their systems are.
Facebook applications are web apps that integrate into the Facebook Platform. They’re typically created by third party developers who use Facebook as a distribution method. Early Facebook apps tended to be trivial throw-away applications.
But that’s changing as brands and corporate users begin to leverage Facebook. Developers are drawn to this platform because they think they can build a large user base. The Facebook social graph enables the applications to go viral.
Now every developer wants their application to go viral, but there are some nagging worries. Have I made the right hosting choice? Will my application properly scale? If my app crashes, do I get a second chance at success?
Now there are lots of ways for people to fool themselves into thinking that their application will scale. However, experience shows us that while these things are good, there’s really only one real way to know what happens at 10,000 simultaneous users.
You’ve got to test it. That’s how regular web application developers work, and Facebook developers shouldn’t be any different. This is just good software engineering practice. There are lots of good testing tools available to help you do this.
But those tools won’t work with Facebook apps because of a fundamental difference between web apps and Facebook. Normally, a user browses directly to a web app, but Facebook forces you to go through their servers to get to the application.
If you try to use a normal load testing tool with a Facebook app, all you’ll end up doing is slamming the Facebook servers. This violates their Terms of Use, and will look like a denial of service attack. They’ll cut you off pretty quickly.
And that’s why we built FriendRunner. FriendRunner allows developers to fully test their applications without using the Facebook servers. Once those applications are tested, they can be deployed onto Facebook with confidence.
FriendRunner is hosted in the cloud so there’s nothing for anyone to install. Developers who want to use FriendRunner can simply go to our website and use it immediately without having to spend a lot of time learning the tool itself. We make it as easy as possible.
To run a test, we first create a script of the actions that a typical user would take when using the app. We use Selenium which is a FireFox add-on to do this. We simply interact with our app normally, and let Selenium record everything for us.
Once this is done, we upload the script into FriendRunner and define the additional parameters such the duration of the test and the number of virtual users. All that’s left to do is decide how to allocate those users during the test.
We can ramp up the number of users over a specific amount of time, keep them constant over the life of the test, or run a stress test and simply add more users until something finally breaks with the application that’s being tested.
We also have a viral mode which tries to mimic how the user base of a viral application grows. It uses heuristics and historical data such as the usage patterns of different geographical areas. This is great to use when testing over an extended period of time.
When the test begins to run, FriendRunner launches virtual users that interact with your Facebook application using the test script that you created. We use a grid of computers to do this so we can simulate as many users as you like.
After the test is complete, we show the data that we’ve compiled. This includes information such as the number of errors encountered, the duration of various tasks, and the effect that load had on the application’s responsiveness.
Since we control the entire system, our results are very accurate and won’t be affected by what’s happening at the Facebook servers. This makes it much easier to optimize your application, and would be impossible to do if you tested it through Facebook.
We’ve also built an API into the FriendRunner infrastructure so that anyone can create additional functionality that they need. For instance, we’re developing a way to test for security problems in Facebook applications using this API.
FriendRunner is currently ready for limited alpha testing. If you or someone you know is developing Facebook applications and you think that FriendRunner could be a useful tool, please let us know. We’d be happy to work with you.
If you find FriendRunner fascinating and would like to know more about it, please contact us, we’d be happy to hear from you. If you liked the presentation, leave a comment and let us know what you thought. Thanks a lot for your time.