"I’m making the bold claim: To every organization, Node.js is absolutely essential." - Scott Rahner, Engineering Productivity Lead of Dow Jones.
Using Node.js in an enterprise setting has many well-known advantages:
- It makes development faster and increases the productivity of teams, thanks to the NPM which has more than 230.000 modules that can be used instantly.
- The high-scalability of Node lets you spend less on infrastructure, since you can handle the same amount of load with less hardware.
- A well-established Long Term Support plan ensures that each release is going to be maintained for 30 months.
But when we are saying Node.js is enterprise ready, we don’t just talk about advantages in theory. We have summarized what leading developers say about using Node.js in an enterprise environment, why they chose it and how the technology improved their teams and products.
Dow Jones Uses Node.js from the Start
The developer team at Dow Jones used Node.js in production for the first time in 2011 with "Wall Street Journal Social", an experimental Facebook reader application. Node met all their expectations, since application performance was great and active development took only a few weeks.
The success of Wall Street Journal Social with Node got the whole engineering team excited at Dow Jones, but it was more like an experimental project. The first premium Node project, "Wall Street Journal Real Time" - a news feed app came a year later. They experienced the same success, again.
The newly appointed CTO at Dow Jones was very enthusiastic about Node. He had first-hand experience on how it benefited the company, therefore pushed management to support it, and soon announced that Node will be the primary technology at Dow Jones.
Thanks to the standardization of the development processes, great management decisions and internal Node.js evangelists, they were able to scale a large organization to use Node.js. They could even re-educate over 100 .NET developers to Node.js in a short amount of time.
Today, most of the products - especially on the consumer side - are 100% Node.js-based at Dow Jones.
Uber Runs on Node.js
Tom Croucher let us peek under the hood of Uber at his latest NodeConf talk in December 2015.
"The thing that I like best about Node is the amount of power that I've personally found it gives me. The ease with which I can do things with Node have amplified the power that I have as a developer."
Most of Uber - for the first 5 billion dollars of valuation - was built using Node 0.8. Then they moved to Node 0.10 in six months. Node 0.10 is super stable everywhere and works well according to Tom, but they clearly see the benefit of jumping to a newer version.
Uber owes a lot to Node.js:
"The heart of the 15 billion dollar business is written as server-side Node, as API-s, as reliable distributed systems with queuing and replication and geospatial databases written in Node."
High Speed, High Volume for GoDaddy
Stephen Comissio, senior (ex) .NET developer told the story of how GoDaddy migrated to Node.js and how it benefited the company.
A few years ago GoDaddy mainly employed Java and .NET developers and developers with 10+ years of monolithic stack experience. They saw that it wasn’t the future for an agile company, so they decided to start an enterprise level culture shift and began prototyping Node.js applications in 2013.
But why have they chosen Node?
"Node allows you to easily build applications with high confidence in build quality. Unit testing is easier. Integration testing is easier. REST is easier. Deployments are easier."
During the "Puppet Master" SuperBowl ad in 2014, they faced one of their biggest scaling challenges so far. Their spot - broadcasted to more than 100 million people urged it’s viewers to visit a website - made by one of their customer with their Website Builder app.
At the time, GoDaddy’s infrastructure handled 13.000 rps’s with ~87ms TTFB (Time To First Byte) on an average day, but now they had to think bigger. They estimated that the website alone will have to handle 10.000 requests per second. To support this amount of traffic, the site had to be manually migrated to its own cluster, consisting of 12 servers, but they succeeded.
"We can handle the same load with only 10% of the hardware now."
According to Stephen, GoDaddy uses Node.js because they can handle the same load with only 10% of the hardware than before. Fewer servers need to be managed, and they are not forced to build out new servers at the previous rate. They are serving 1.7 million request per months and survive DDOS attacks with basically zero impact using Node.js from day to day.
Adopting Node.js has its' advantages from a talent acquisition point of view as well.
"It's hard to find top talent in the next generation of developers who want to work with statically typed languages like #C or Java. If you look at the momentum behind the Node, you will see the growth of the platform, the increasing number of downloads, high number of enterprise adoptions and the largest growth for startups. "
PayPal has Increased Productivity with Node.js
Sameera worked at a startup which was familiar with microservices and Node.js before he joined PayPal in 2012, an experience he described as going back in time. PayPal's architecture was monolithic, so one app had everything: UI, controllers, and cohesive call to the API for all the operations.
There was a lot of duplications: teams copy-pasted code and made tweaks needed for a particular country, then rolled out another application. From an engineering point of view, it was like an assembly line.
If they wanted to customize something for a localized version of PayPal - given that there was no foundation to build on - everything went to the core team’s backlog as something to work on.
"It was a prioritisation exercise when not much got done. We wanted to build a foundation on which teams can work on, and it all came together and just works."
What PayPal did:
- They moved from the old architecture and mindset to a new, service-oriented one.
- Scaled Node.js and Kraken.js for a global organization - with multiple teams working on the same project.
- They incorporated an open-source model, where anyone can submit a pull request to the core Github repository as long as the guidelines are met.
"What Node gave for us is an ability to modularize every piece of the stack. Global teams were able to roll out experiences in a much quicker way."
Netflix & Node.js
Kim Trott, director of UI platform engineering, told the story of Node.js at Netflix at the latest NodeSummit in Portland.
The tale started in 2013 when they haven’t used Node.js in production at all. They were running a monolithic application, a large legacy application with 40 minute startup times, slow builds and huge developer machines.
It affected their ability to be productive, to move quickly and to be able to innovate rapidly. They weren’t able to build out A/B testing effectively enough - which is crucial, since Netflix is constantly doing 100’s of A/B tests simultaneously.
"We’ve been doing a lot of things twice. Pretty much had to write everything twice - once for the server and once for the client."
They had two ways of debugging, data access and rendering, so it was difficult to work in that environment. They hired and trained a lot of people to be great with all of that - but it wasn't working. They didn't have the developer productivity they wanted, and they weren’t moving at the pace of innovation needed to keep up with the business.
So they decided to simplify their stack, since their complex webapp layer did way too much: it had a lot of business logic, it was doing a lot of data access and was directly talking to 100’s of middle tier services. They simply wanted to turn it into a single responsibility rendering layer, where they only have to worry about routing, view templates and sending data to those templates. They also wanted to move the website to a single page application instead of rendering each page fully like they had done before.
Netflix choose Node.js because they wanted a common language to write the same code. Write it once, run it everywhere.
Now Netflix is running more as a single page application, and with a rich user experience. They had to unlearn Java instincts and really understand and learn about the characteristics of Node and how its different.
"Instead of worrying about tuning the VM, we focused more on tuning the application and looking for where you're spending too much time on CPU, and finding CPU bottlenecks. Big challenge was memory leaks in production and learning how to root cause and find where those leaks are coming from."
Now Node.js is used on the entire website, but the rest of their clients (mobile, tv apps) are not necessarily using Node. More than 30% of the Netflix team is working on Node in production.
"You can go from 0 to 60 with Node really fast, so you can get something going really quickly."
Node.js fits the enterprise world and can be adopted successfully with great benefits, but it has its’ challenges as well. To reach the full potential of developing with Node.js, there are crucial points that must be addressed at an organization level.
If you’d like to know more on adopting Node.js and overcome common challenges read our detailed report on the topic.
Do you have additional insights on the topic? Share it in the comments.