Notes from Two Years of NodeJS at Yammer


These are my notes from a talk titled Two Years of node.js at Yammer given by Matthew Eernisse at on July 2, 2012 at NodeConf 2012. You can follow Matt at @mde on twitter

I've been at Yammer a little over two years, and I brought Node with me. When I started I was on the platform team; now I'm on the front-end team. I want to talk about now node became successful inside Yammer and how we used it to be successful. On Monday it was announced that Microsoft was purchasing Yammer for $1.2 billion in cash.


The reason we achieved this outcome can be directly attributed in many ways to what we did with node inside Yammer. Let's do a rogue's gallery approach:

Bob "jQuery is for n00bs" Remeika will not let you forget that he is a Dojo committer. We convinced him to work for us by providing copious quantites of beer _during the interview._ Very early on, we made the decision that it was time to pull our JS code out of the rails app that we had and make it its own project. Bob decided to use node for our development proxy server, and converted us to jake.

Daniel "Techwraith" Erickson and Mike "Cutie Pie" Ihbe took this initial work and turned it into a production quality web service. They continued to add features, iterate on it, add third-party integrations such as video transcoding. They did an excellent job of making it excellent and keeping the thing up and running.

Mikeal "We Don't need No Stinking Semis" Rogers had an interesting contribution because he had a very public role in the company, and at the same time being a very vocal advocate of JavaScript and Node. He evangelized Node but also built our developer site and API sandbox with Node. This was a nice example of using Node for what it's good for: making API calls, tying them together and presenting the results in the browser. The other thing he did which was probably most important was hiring:

Marco "Young 'Un" Rogers is a badass. His primary contribution was as lead developer on the Pages feature. Pages is a multi-user collaborative document editing service based on Etherpad Light. When we started planning the implementation of this feature, there was already a core services team at Yammer who could implement these high-throughput web services, and their preferred tool is the JVM. At Yammer, we place a particular value on developer velocity; how quickly we can iterate. At some point it became clear that the time to market with Java was prohibitively long, whereas node would be very fast. At this point, there was some discussion about picking the right tool, but node was the clear correct choice in this case to get us where we wanted to go at the speed we wanted to go.

Why was Node good for us?

1. Node is scalable. We were able to quickly build scalable web services that we didn't have to worry about falling over consistently. The guys on the core services team have said that they're not worried about scaling in the short-to-mid term. At some point, they may want to rewrite these services on their preferred platform, but the fact remains that we were able to build these things very quickly, and they scaled.

2. Node is fast to develop. You can quickly add new features. Deploying an MVP and iterating on it constantly in a direction that's driven by user metrics is core to the way we think about developing things. JavaScript and Node specifically are excellent tools for this.

3. Node as a vibrant ecosystem. The node ecosystem is full of awesome and interesting and nice helpful people who are doing interesting stuff. The question of "what's going to happen at 3am when you have this problem that nobody understands" is ameliorated to some extent by the amazing community of developers who work around node.

In a nutshell, we demonstrated viability incrementally, built the internal tools first, used the right tool for the job, and capitalized on JavaScript's strength of iterative development.

Did you enjoy this post? Please spread the word.