Erlang at Yahoo!
Jebu Ittiachen and Arun Suresh of Yahoo! have written an interesting article for Dr. Dobbs about a prototype they’ve built for Yahoo! Harvester using Erlang. The performance gains they achieved are quite impressive.
Some of the more interesting highlights/discussion points I’ve pulled from the article:
- The language itself is only part of the draw for Erlang users. The OTP framework provides great value to those writing distributed applications. “Since the restart functionality is already found in the standard library, no extra code was required to be written.” What parts of the OTP do you feel are essential? What’s missing?
- It reiterates some of Erlang’s flaws (we’ve heard lots of complaints about syntax). I read this as a major opportunity for us to provide a highly differentiated solution and increase developer productivity (which is what Visual Studio is all about!). “Erlang is not the perfect platform. It has its share of weaknesses and most of it comes from the design goals behind the language.” What else besides syntax and the lack of true string data types gets in your way?
- Performance comparisons. WOW. The performance gains on quad-cores are simply incredible. 100% CPU efficiency and a 3750% increase in MAX capacity per machine. These numbers show major cost savings for our customers. Of course, it all depends on the baseline of which you are comparing against but I think it’s a safe assumption that Yahoo!’s developers are capable of writing fairly scalable, fairly performant code.
- It’s interesting to note that they’re using Erlang “successfully” in 5 properties. We’re seeing a lot more commercial products written entirely in Erlang or with components written in Erlang. Some other noteworthy examples include Amazon, Facebook Chat, and Microsoft’s own PowerSet. This trend suggests that companies are willing to overcome the learning curve and employ once-obscure technologies to achieve performance gains and, ultimately, cost savings in both hardware scale-down and developer productivity.