After nearly two years of high profile scaling problems, Twitter is planning to abandon Ruby on Rails…
As a Django fan and evangelist, I admit it would give me great pleasure to see this as a colossal failure for Rails, point, laugh, and generally poke fun at all the Rails fanboys and girls.
But let’s be real for one minute. Twitter doesn’t suck because of Rails. Twitter sucks because they have ridiculous amounts of traffic (especially to their API and SMS gateways), a limited ability to cache (a non-realtime Twitter is a pretty useless Twitter), and (as far as I can tell), they’re not making any money, so they probably have limited resources to pour into more hardware.
The bottom line is that Twitter will probably cause major scaling problems for any platform, be it Rails, Django, Java, .NET, PHP, or tin cans with a string tied between them. Ruby is undeniably slow compared to Python, Java, and PHP, but I really doubt the problems Twitter deals with are at the Ruby level, anyway. Much as I wish they weren’t, anyone who says Twitter sucks because of Ruby on Rails is either foolish or joking.
Twitter sucks because of Rails. Just joking.
http://www.techcrunch.com/2008/05/01/twitter-said-to-be-abandoning-ruby-on-rails/
001 // Nathan // 05.14.2008 // 10:33 PM
As a ROR user myself, I must say this seems like a good idea and I’m surprised they didn’t do it sooner. The big advantage of a framework like Rails is that it does a lot of things for you and makes development easy. It seems like that quick-n-easy feature development isn’t a big priority at Twitter, their application is so simple, why not implement it in the most simple, lean, efficient way?
002 // Jeff Croft // 05.14.2008 // 11:03 PM
I can generally get behind the idea that Twitter doesn’t really need to be developed on Rails (or a similar framework), but I still doubt that switching to any other platform (including framework-less Ruby) is going to help them very much with their scaling issues.
I’m no expert, but I’m inclined to believe the only real way to deal with the kind of traffic they get is to throw a lot more hardware at the problem.
003 // Kenny Meyers // 05.15.2008 // 12:04 AM
With the limitation of 140 characters, I don’t think it was a Rails problem. For example 37 signals takes the same sort of data (in their case tasks) and it scales very well if you think about multiple people adding multiple tasks at one given time. That’s about the extent of twitter posts I would believe.
Despite whatever flaws that exist, they’re still growing and people still use it… so I guess I don’t see the problem. They already got the brand.
004 // Jeff Croft // 05.15.2008 // 12:14 AM
Dude, Twitter’s traffic has got to be at least 100 times what Basecamp’s is, in my non-scientific estimation. :)
The problem is simply one of traffic. Twitter gets too much of it, and they can’t really cache very much like most extremely high-traffic sites can. Period.
005 // Phil Oye // 05.15.2008 // 2:18 AM
I’m glad that someone has a measured response to this.
This is not a rails problem, this is a money problem. If Twitter’s revenue grew proportionally to its traffic, they wouldn’t have a scaling problem. They would just throw hardware at the problem.
The fact that they can’t indicates they don’t have enough cash. Which is probably an indication of a larger issue—the lack of an actual revenue model.
006 // Chris Harrison // 05.15.2008 // 5:45 AM
Which begs the question: When is Twitter going to introduce a Pro-level ala Pownce? And why aren’t they displaying ads on the site in some fashion yet? Granted, I loathe online advertising, BUT… if it meant enabling Twitter to better support itself, hell, I’d tolerate them.
People will pay for services they find useful. Granted Yahoo!’s not making a killing off of Flickr Pro memberships, but it’s still something.
Twitter, I don’t care what technology you use to power the site: it just needs to work, and it needs to be reliable.
007 // Dylan // 05.15.2008 // 7:59 AM
Good measured post here, Jeff, but Twitter isn’t actually ‘abandoning rails.’ http://twitter.com/ev/statuses/801530348
I really don’t get the whole language/framework competitiveness thing that undergirds these kinds of posts (I mean the TC post not yours) or the ‘rails is for noobs or whatever’-type flaming that the post seems to bait a bit.
I just don’t get it. They are just tools at the end of the day. We choose the tools we choose for any number of reasons and when need to scale you do (throwing hardware at the problem, caching the hell out of it, whatever). Can you build twitter or any number of other sites in different languages? Of course. Can you scale those apps? Of course.
It’s off-topic, but I’ve been following the development of Merb a bit (another Ruby framework) and I think it’s interesting that I haven’t seen any of the Ruby/Python/PHP/Java antagonism between Rails/Merb; in fact just the opposite is true - Merb is really being driven by folks already heavily involved in Rails, but who want to do certain things differently. It’s a cool project that’s in some sense competing with Rails (drawing attention away a bit) but in another sense greatly benefitting the community of folks working in rails. I am just trying to figure why folks can’t apply that “these are all tools that we are working to improve to make what we do easier” attitude across languages (ruby-python for example).
I am curious if you guys have seen similar sharing between (seemingly) rival Python projects?
Sorry for the long comment.
008 // Jeff Croft // 05.15.2008 // 8:46 AM
I would characterize the relationship between competing Python web frameworks as friendly rivalries. There are certainly debates about which is best, etc., but it seems to be done with more respect and good-natured humor than it often is when it’s cross-language.
009 // Stephen Van Dahm // 05.15.2008 // 9:38 AM
The Twitter folks have denied that they’re abandoning Rails, and I’ve heard that Twitter’s biggest scaling issues are caused by MySQL and not by Rails.
Anyway, even if it’s true, I don’t see an inherent problem with getting started in Rails or Django, then rewriting for efficiency once that becomes an issue. Of all the problems in the world, figuring out how to support all the traffic to your ridiculously successful website seems like one of the better ones to have.
With respect to language and framework rivalries, whenever a site built with Python or Ruby gets positive exposure, it’s good news for every Ruby and Python framework. The different framework camps are, philosophically, more similar than they are different:
When a Rails or Django site does well, it just reinforces the idea that there are viable alternatives to Java, C#, and PHP. And I think that when programmers have a positive experience with one of these frameworks, they’re more likely to look at the others with an open mind.
010 // Jeff Croft // 05.15.2008 // 10:07 AM
Agreed 100%, Stephen.
011 // Matt Robin // 05.15.2008 // 10:09 AM
Twitter sucks because of…ah, I’ve just posted an image recently to Flickr about this, here: http://www.flickr.com/photos/mattrobin/2493045112/
I don’t think Rails is the problem.
012 // Kenny Meyers // 05.16.2008 // 8:02 PM
My point was the volume of data… because that was what would bring twitter down. Traffic wise are not its the stuff constantly reading/writing to the database, and in terms of data I was saying due to the multiple amounts of forms and inputs on Basecamp it may be equivocal.
In my non-scientific estimation, I’m totally 100% correct and this is a fact.
So don’t you “dude” me you rat bastard.
I’m just kidding baby… puts on some 70s funky Marvin Gaye… it’s probably just a poorly designed railsplication, but it’s not a fault of the framework.
The LANGUAGE however…
:)
013 // Kenny // 05.16.2008 // 8:03 PM
I meant “Traffic wise OR not its…”
Stupid django. :)