Before last weekend, our FaceStat website was chugging away with a small but loyal userbase:
But on Sunday, an insane number of people suddenly decided to flock to our site. Let’s extend the previous chart by 2 days, then a little bit of y-axis auto-scaling says it all:
Turns out the giant spike was due to our being featured via a news article on Yahoo.com’s front page!
Of course, we had to frantically rearchitect the system and scale it under this deluge of traffic. You can read the blow-by-blow account of our crazy few days on Lukas’s blog, here.
The web startup community seems pretty interested in the mad scaling issues, so I’ll respond to some of the comments on Lukas’s blog below:
Yes, we’re pretty much using Rails. We actually use an offshoot called Merb — which is a bit more efficient — on top of Thin. We find that a Rails-like platform is invaluable for rapidly prototyping a new site, especially since we started FaceStat as a pure experiment with no idea whether people would like it or not, and with a very different feature set in mind compared to what it later became. And it’s invaluable that Chris on our team is such a Ruby expert :).
However, the high-level platform really doesn’t matter compared to overall architecture: how we use the database (postgres), how much we cache (memcached/merb-cache), how we distribute load, how we deploy new systems (xen/slicehost), etc. It’s hasn’t been trivial since FaceStat is write-heavy and performs fairly complex statistical calculations, and various issues remain. But we are serving many users at nearly 100x our old load, so something must be going right — at least for now!
p.s. Thank you, Google Analytics, for the above charts. Some day when I grow up, I hope I am wise enough to create an equally brilliant data visualization tool.