Volodymyr Nazarenko, CEO / Co-founder,
KAI Software Inc.
Consider the experience of PayPal which engaged in parallel development of a new application in which one team was using Java and another was using Node.js. According to Jeff Harrell, Director of Engineering and Chief Architect at PayPal, the Node.js-built app needed 33 percent fewer lines of code, handled double the number of requests per second, and shortened response time by 35 percent compared to the Java version.
The Node team completed their project in two months while the Java team was still trying to finish up after eight months. Also, the Node team was made up of two developers while the Java team numbered 20. PayPal used Node.js to modernize a monolithic application environment burdened by a massive code base. It began by redesigning existing Java services using Node.js. In doing so, PayPal directly addressed the rigidity imposed on its business and has enabled it to continue to innovate rapidly and continue to adapt the services to its needs.
Java application development frameworks have encouraged building of large monolithic applications. While this was the established best practice 15 years ago, today, modular, service-oriented architectures are considered better approaches to deal with complex software that exists within complex business environments. PayPal used Node.js to drive modularity into its software development processes. Node.js encourages modular design and enables it through its ecosystem and tooling. One of the key decisions PayPal made early on was to have an internal package registry in Node.js to manage code internally and enable teams to collaborate more effectively.
Because each module delivers specific functionality that can be easily shared across teams and across applications, Node.js enables faster app development and better team collaboration.
The modular design of Node.js code creates a rich ecosystem that you can build on while developing applications.
There are many dependencies within the Node.js ecosystem that make it easier to adapt, incorporate, and share.
The package registry for Node.js code, npm, is the largest package ecosystem ever. There are nearly 300,000 packages according to modulecounts.com — more than 300 new packages added daily, which is three times more than any other ecosystem
With modular design and such a large ecosystem to work with, Node.js developers enjoy increased collaboration. Java’s tendency to create large monolithic systems and deep alliance with Object Oriented programming make sharing discrete functional components difficult. When code is shared in Java, it’s typically in the form of large libraries. Node.js makes building applications easier and faster with smaller, more focused components that teams company-wide can collaborate on together to produce. These components have specific functionality that’s more easily shared across teams and applications
To understand how a Node project can bring developers, operations teams, and executives together to shorten the time to market for a new app, you could refer to the PayPal example above. Fewer lines of code, modular design, and cross-organizational collaboration all contribute to accelerated time to market.
At Yahoo, Reid Burke shared at Node Summit how Node.js enabled teams of developers to ship fully functional, production-ready Node.js applications in just 30 days by leveraging modular design with small modules and an internal registry to collaborate more effectively.
Because Node.js makes it easier to create software applications, it also makes it easier to cost-effectively operate them.
Companies deploying Node apps report that they typically require significantly less compute power to host them and that Node.js leaves a significantly smaller footprint in their IT environment than systems built with Java. A typical Java installation will sit on a server with 32 cores and 64GBs of RAM. On that same hardware, up to 32 instances of a Node.js app can be run.
Node.js easily maps to modern cloud environments, enabling operations teams to have a near one-to-one relationship between compute resources and servers. Java servers, by comparison, are typically heavily over-provisioned to compensate for high variances of resource usage.
Node helped Netflix build upon the existing savings of cloud computing. The company now uses just one-quarter of the Amazon EC2 cloud instances on Node compared to Java. Better yet, it served the same number of subscribers but delivered lower latency rates.
“We have improved performance and reduced infrastructure costs with Node,” said Yunong Xiao, Node.js Platform Architect at Netflix.
Because Node.js teams build apps faster, it reduces total labor costs. In the PayPal example earlier, the company had just two Node app developers versus as many as 20 on Java. So not only are fewer developers needed per Node project, the projects are completed faster than on Java.
For those new to Node, understand that it enjoys solid community support from the vendor neutral Node.js Foundation and companies focused on commercial Node.js products and support like NodeSource. The NodeSource product portfolio includes N|Solid, for live instrumentation of your production environment without changing your application code, enabling improved insight and productivity for teams building Node.js applications at scale.
NodeSource — along with Joyent and StrongLoop — are to Node.js what Red Hat is to Linux, Cloudera and HortonWorks are to Hadoop, and Datastax is to Cassandra. These vendors help ensure companies have the products and support they need to solve issues and make Node.js initiatives succeed.