I have no idea what Twitter is, I don't want to know. But I hear they have scalability issues which raises a question at what time does a love for a language/platform interfere with your core business goals? further more when should we as developers care? Twitter seems to be infatuated with Ruby on Rails to the extent that Ruby is slow causes performance and scalability issues but Twitter seems to stick with it.
How has Ruby on Rails been holding up to the increased load? By various metrics Twitter is the biggest Rails site on the net rightnow. Running on Rails has forced us to deal with scaling issues -issues that any growing site eventually contends with - far soonerthan I think we would on another framework. The common wisdom in the Rails community at this time is that scalingRails is a matter of cost: just throw more CPUs at it. The problemis that more instances of Rails (running as part of a Mongrelcluster, in our case) means more requests to your database. At thispoint in time there’s no facility in Rails to talk to more than onedatabase at a time. The solutions to this are caching the hell outof everything and setting up multiple read-only slave databases,neither of which are quick fixes to implement. So it’s not justcost, it’s time, and time is that much more precious when people can[’t]reach your site. None of these scaling approaches are as fun and easy as developingfor Rails. All the convenience methods and syntactical sugar thatmakes Rails such a pleasure for coders ends up being absolutelypunishing, performance-wise. Once you hit a certain threshold oftraffic, either you need to strip out all the costly neat stuff thatRails does for you (RJS, ActiveRecord, ActiveSupport, etc.) or movethe slow parts of your application out of Rails, or both. It’s also worth mentioning that there shouldn’t be doubt in anybody’smind at this point that Ruby itself is slow. It’s great that peopleare hard at work on faster implementations of the language, but rightnow, it’s tough. If you’re looking to deploy a big web applicationand you’re language-agnostic, realize that the same operation in Rubywill take less time in Python. All of us working on Twitter are bigRuby fans, but I think it’s worth being frank that this isn’t one ofthose relativistic language issues. Ruby is slow.
How has Ruby on Rails been holding up to the increased load?
By various metrics Twitter is the biggest Rails site on the net rightnow. Running on Rails has forced us to deal with scaling issues -issues that any growing site eventually contends with - far soonerthan I think we would on another framework.
The common wisdom in the Rails community at this time is that scalingRails is a matter of cost: just throw more CPUs at it. The problemis that more instances of Rails (running as part of a Mongrelcluster, in our case) means more requests to your database. At thispoint in time there’s no facility in Rails to talk to more than onedatabase at a time. The solutions to this are caching the hell outof everything and setting up multiple read-only slave databases,neither of which are quick fixes to implement. So it’s not justcost, it’s time, and time is that much more precious when people can[’t]reach your site.
None of these scaling approaches are as fun and easy as developingfor Rails. All the convenience methods and syntactical sugar thatmakes Rails such a pleasure for coders ends up being absolutelypunishing, performance-wise. Once you hit a certain threshold oftraffic, either you need to strip out all the costly neat stuff thatRails does for you (RJS, ActiveRecord, ActiveSupport, etc.) or movethe slow parts of your application out of Rails, or both.
It’s also worth mentioning that there shouldn’t be doubt in anybody’smind at this point that Ruby itself is slow. It’s great that peopleare hard at work on faster implementations of the language, but rightnow, it’s tough. If you’re looking to deploy a big web applicationand you’re language-agnostic, realize that the same operation in Rubywill take less time in Python. All of us working on Twitter are bigRuby fans, but I think it’s worth being frank that this isn’t one ofthose relativistic language issues. Ruby is slow.
Poor Ruby Slow But cool. Twitter does seem to be looking for a Senior Engineer so maybe they will find their way off of the tracks and back into the boring but scalable world of DotNet and Java. Job postings via blogs are interesting. Especial when your end users us it.
Anonymous said... Could someone please take this job? The current team obviously has no idea how to solve twitter's scaling issues, despite saying they were working on it a week ago.
Could someone please take this job? The current team obviously has no idea how to solve twitter's scaling issues, despite saying they were working on it a week ago.
Even if Twitter finds some one tomorrow they are looking at months to correct this issue(if they are lucky). I wonder how many, if any users this will cost them.
Does time to market matter more then performance and or usability? It seems to me that having a lot of pissed off customers is not a good thing. Assuming Twitter's developers knew they had issues when they started with this architecture.
Remember Me
a@href@title, b, blockquote@cite, em, i, strike, strong, sub, super, u
Disclaimer The opinions expressed herein are my own personal opinions and do not represent my employer's view in anyway.