If Facebook Can Do It, Why Can’t Twitter?
I know right now, in writing the first sentence of this article that this is going to be a controversial post. I will get a lot of "who the hell are you" remarks. So in a preemptive response, let me just say I am not criticizing and I seriously wondering.
With that said, today Dan Farber from CNet sat down with Jonathan Heiliger who is Vice president of technical operations at Facebook. They talked about the technical challenges that Facebook runs into adding 250,000 users a day. It is a really good article, and gives you some insight into how Facebook operations work.
While reading the article I could not help myself in asking why is Twitter having so much trouble with uptime, when Facebook can do it with a lot more page views and users. One could argue it’s that Facebook has more money behind it, more employees, more resources. Some would play the PHP is better than Rails card, as Facebook is written primarily in PHP, and Twitter primarily in Rails. I truly do not know what it is, I wish I knew.
I have heard through third parties that the folks at Twitter contribute the down time to the back end engine written in C++, and that Ruby never goes down. Makes sense, I have seen that problem before in similar setups.
Twitter just got another huge chunk of cash, so hopefully that will help in stabilizing the service.
Anyone have any insight?
If you enjoyed this post, please consider to leave a comment or subscribe to the feed and get future articles delivered to your feed reader.
Comments
FaceBook and Twitter offer two fundamentally different services to their users. FaceBook is just a data dump about the users’ lives; Twitter is a constant stream-of-consciousness of the users’ brains. Facebook has the advantage of being distributed and cache-able while Twitter has the unfortunate disadvantage of needing to be centralized. I don’t foresee Twitter calling for Akami’s services any time soon. Whereas Facebook can mirror it’s data at cache servers around the country/world, Twitter just has too much data coming in and going out of its servers to have a mirrored server somewhere else (much less multiple mirrored servers). While it is clear that the current usage is overloading Twitter’s centralized server bank, it would cause and even bigger load to duplicate it elsewhere. I would not blame Ruby for their troubles (though I have my own issues with RoR…) since the web front-end is not their problem. It seems clear that their backend is the bottle-neck right now. I don’t know how to fix it (seeing as I don’t work there), but it would definitely be an interesting challenge. Throwing money at it won’t solve the problem (as many people have been saying… “they just got more money, can’t they fix it now???”). This is a hard problem in mathematical and computational theory that will take brilliant minds a bit of time to think out. The only way money would solve it is if a bigger paycheck caused the engineers to think faster… and who knows, maybe it does.
My biggest fear is that Twitter is running out of time before their users get fed up with the down-time and start asking “why bother?”
I heard that RoR has problems supporting clustered db servers. So basically Twitter is running on 1 or 2 db servers.
I don’t remember exactly where I heard it but it was definitely from a reliable source. Even possibly the Twitter status blog.
Sorry, the comment form is closed at this time.




































Since I don’t really know EXACTLY how either of them works it seems like the biggest challenge with twitter is that all messages must be guaranteed. So for every tweet, it must be processed down to EVERY follower, API, and action in twitter in near real time.. Notice that the feed in your facebook account updates sporadically.
Not saying that twitter doesn’t need fixing, but it does seem to have it’s own unique challenges that are not found elsewhere.