This year I attended Node Summit 2013 from December 3rd-4th in San Francsico. I went to support Michael Shim, an HBO coworker who was speaking on a panel about Node.js in the Digital Media Universe, and to get a crash course into the culture, tech, and community surrounding this framework. Being brand new to Node.js Node Summit was a great opportunity to get a feel for the community and how other companies were using it.
Below are some of the thoughts and overall themes that I took away from the conference.
Node Can Perform at Enterprise Scale
There were dozens of examples of companies using and deploying Node.js at enterprise scale. Walmart had great success this past Black Friday. Groupon, LinkedIn, Ebay, & Paypal have all recently made the switch over to running Node in their services’ stack, and had great success. Media companies like NPR, CondeNast, and Direct TV are also starting to use Node with success.
The big takeaway was this framework is being deployed by several companies, at large scale, and it is performing. The fledgling tech does have some challenges to work through, especially surrounding security and patching, which were addressed in a panel on day 2, but overall Node.js is a very viable option to build large scale services on.
Node & Functional Programming
On Day One of the summit, many presentations and panels talked a lot about the process of incorporating Node.js into their tech stacks, which was not surprising. However, I was surprised to hear that as part of the process many companies, like LinkedIn and PayPal, also switched from Object Oriented Programming models to Functional Programming models.
Thinking back on this it shouldn’t be surprising since the asynchronous and event-driven nature of Node.js applications fits extremely well with Functional Programming models. Now if only message passing between node processes was easier…
Fast Mean Time to Recovery
An overall theme throughout several talks was how easy it is to bring up and tear down Node.js processes. This is not only great for developer efficiency, but it is also incredibly important in production. The ability to kill a misbehaving process and quickly replace it with a new instance means the Mean Time To Recovery (MTTR) is low. Having a low MTTR means you can fail fast and often.
It was also cited that Mean Time to Failure (MTTF) is no longer as important of a metric. This is a bit of a paradigm shift, when thinking about more traditional services.
No More Monoliths
Node.js is really useful when you structure your services into small modular systems. Node services should be broken down into lots of little processes that communicate via messages passed through queues or streams.
Small processes are more easy to reason about, make your application more testable, and the code more manageable. The Node Package Module (NPM) makes breaking your code into modules and managing dependencies extremely easy. NPM was touted throughout the conference as Node’s killer feature.
The Node Community really loves Node
This may sound like a no brainer, but the community was incredibly passionate. Its no wonder since the use of Node.js has grown tremendously over the past year, and the number of modules in NPM has also been growing exponentially. It was awesome to be around such a group of motivated passionate developers.
In addition companies are finding it easy to hire developers, because developers really love Node.js. Even if they don’t have prior experience developers want to learn and work with Node.js. I should know I’m one of them :)
and not a lot else…
The down side of this passion came with a lot of other tech bashing, that felt more religious than factual. Java was lambasted in every talk and panel. To be fair asynchronous programming in Java is quite cumbersome, whereas the asynchronous model is built into the Node.js framework. But at its core Java is a language and Node.js is a framework, so apples to apples comparisons seemed odd without the mention of Java frameworks, like Typesafe, that also try and solve this problem.
.Net tech was barely mentioned beyond snide remarks. I found these remarks odd since I have worked rather extensively with the Async/Await programming model introduced in .Net 4.5, and in my experience the async/await model is easy to use and resulted in clean concise code.
Ruby on Rails also took a lot of heat especially in the Why Large Scale Mobile & E-Commerce Apps Use Node.js panel. Groupon and LinkedIn both started with a Ruby on Rails stacks. Both companies switched to a Node stack citing that the Ruby on Rails services could not scale and that the code base was unmanageable. However, in a later talk Sean McCullogh, a Groupon Engineer, did mention that Groupon’s original architecture using Ruby on Rails was broken and that there were changing business needs which led them to switch to Node.js. I greatly appreciated this honesty instead of just blaming the Ruby stack for all their problems.
As a developer I think Node.js is fantastic. The framework embraces a lot of the core principles that make developing and deploying large scale web services easy. And to be fair, most tech communities, and tech specific conferences tend to run into this problem. However, there are tradeoffs in any technology and lessons to be learned from other solutions. While this was a Node conference I wish there would have been a more honest discussion about these tradeoffs, and an openness to other technology.
Reflections on Three Years of Node.js in Production – Bryan Cantril
This was one of the more technical talks, and Bryan was immensely entertaining. Dropping quotes like, “You gotta love open source sometimes a magical pony comes and poops out a rainbow on your code.”
Node From the Battlefield – Eran Hammer
Eran, a Senior Architect at Walmart, gave a highly entertaining talk on how Walmart moved a large portion of their service’s stack over to Node.js and the lead up to their biggest test, Black Friday.
While preparing for Black Friday the Walmart team encountered a suspected memory leak. To help diagnose the problem the team increased analytics and monitoring which signaled that the problem was actually in the core of Node.js. TJ Fontaine at Joyent tracked down the memory leak fixed it and released a new version of Node which the Walmart team picked up just in time for holiday shopping.
On Black Friday Eran live tweeted Walmart Devops under the hashtag #nodebf, and it was surprisingly boring. With the memory leak fixed, their services performed well consuming low amounts of memory and CPU despite high amounts of traffic.
At the end of his talk Eran read a “bed time story” to TJ on stage called the Leek Seed. It was quite comical and had the audience in stitches.
This talk demonstrated the ability for Node to scale and perform in large production environments. In addition this talk reinforced my opinion that rigorous logging, monitoring, and testing at load is the only way to discover some issues of the most nefarious issues in distributed systems.
I had an excellent time at NodeSummit, I learned a lot. Personally I like more technical talks and code at conferences, and less panels, but there are other Node.js related conferences that are tailored to that. Overall it was a great crash course into the Node world and community, and I look forward to applying what I learned, getting more involved in the community, and developing services on Node in the future.
You should follow me on Twitter here