Web Scalability Practices: Bumper Sticker on Rails

June 23, 2008

This is the first post in a series on scalability using Ruby on Rails including an examination of the steps we took – some successful, some not so much – to scale Bumper Sticker to be one of the top four applications on Facebook. This time out, we’re going to give you a quick history of the Light Engineering Development (LED) team at LinkedIn and the creation of Bumper Sticker.

One of the best things about working for LinkedIn is the constant exposure to new technologies and challenges. While the majority of the LinkedIn infrastructure runs on Java, it’s no secret that we don’t shy away from other interesting languages and frameworks – we’re always looking for ways to make better software faster. This is the spirit that launched the LED group with the charter to see how quickly it could prototype new ideas and features using Ruby on Rails.

Interestingly enough, the most successful of LED’s Rails applications is one of its first – Bumper Sticker, the fun, viral media sharing application that allows users to express their individuality by sticking small, quirky, sometimes edgy, often humorous, rarely serious virtual stickers on each other’s (and their own) Facebook profiles.

Bumper Sticker started as a small experiment in August, 2007. Facebook had released their development platform while we were hard at work on our own. We were curious to experiment and discover some of the characteristics of an application platform built on a social network and to see what, if any, learning we could apply to our own efforts. After noticing that professional and business-related applications weren’t flourishing in the Facebook ecosystem, a few of our Product folks put their heads together while out for a run; one engineer, one week, and a few Joyent accelerators later, Bumper Sticker was born.

We’d be lying if we said that anyone was prepared for the kind of success Bumper Sticker has had since then … though we should have expected it, given the excellent Product team here at LinkedIn. Here's a quick snapshot of Bumper Sticker statistics at this moment:

  • 13.5 million installations
  • 1.5 million daily active users
  • 20-27 million canvas page views a day

All of this is served by:

  • 13 web application servers running nginx and mongrel
  • 8 static asset servers serving over 3,500,000 stickers, soon to migrate to a content distribution network (CDN)
  • 4 MySQL servers in a master/slave configuration using Rick Olson’s excellent masochism plugin

Ruby on Rails is frequently criticized for lacking the ability to scale. While the road to a billion page views per month has certainly had some potholes, Bumper Sticker has clearly demonstrated that the Rails platform can scale quite well, so as long as the team behind it understands that many of the bottlenecks are exactly those faced by developers on any other database-driven web platform. From an engineering perspective, Bumper Sticker could not be more perfect for developing a set of best practices for scaling web applications that exhibit unpredicted, unexpected, explosive growth.

Stay tuned! There’s much more good stuff to come.

Quick Update: Watch Ikai and Jim describe the genesis of the LED team and Bumper Sticker