Why Node.js is more popular than ever and why is it good for product development?

I Love Node

1. Node Is More Popular Than Ever:

Only a few years later its launch Node.js is quickly winning the hearts and minds of developers and the companies around the globe. Just five years after its debut, Node is the third most popular project on GitHub and is being used to build scalable products because f its ease, speed of development and superb performance.

As per the study/survey by StrongLoop:

  • There are more than 2 millions downloads per month of Node.js.
  • Over 20 millions downloads of Node v0.10X
  • Over 475 worldwide meetups
  • With booming community of developers, there are now more than 81,000 modules available on npm
  • everyone wants to do way more powerful application, things like Google instant and Facebook people are expected to support millions of users on a ton of devices in real-time that is the reason Node is the next big thing and so popular.

2. Node Is Getting Deployed By Most Of The Big Brands:

As of today Node.js usage is growing day by day, it’s becoming a trusted component of load bearing infrastructure within the new product development. Node.js has already found its way into the code stack of several features. 500 companies and tech giants who are all praising Node for its scalability, its ease, its speed of development and its superb performance.

Groupon, LinkedIn, WalMart, PayPal and many more are successfully using Node.js in their current product development activities. Let’s take a look:

Groupon:

Last year Groupon shifted to Node.js from RoR framework for their back-end services. Engineer ‘Adam Geitgey’ explained the reason: “we were looking for a solution to a very specific problem-efficiently handling many incoming HTTP request making parallel API request to service each of those HTTP request and rendering the results the results into HTML. We also wanted something that we could confidently monitor, deploy and support.” and switching to Node.js allowed to do exactly that they also improved page loads across the entire site typically around 50% faster. Also development teams were able to ship features faster.

LinkedIn:

When the world’s largest professional social network re-launched its mobile app in 2011 with a Node.js back-end, they were able to improve their system speed by up to 20x while reducing number of server by 90%

“It was fast by all standards”, LinkedIn’s mobile development lead ‘Kiran Prasad’ told VentureBeat at the time. “I’ve worked at startups and big companies like Yahoo and it was fast.”

WalMart:

Walmart is world’s largest retailer and they made even bigger waves with their switch to Node.js because they decided to deploy it on Black Friday, the biggest online shopping day of the year and it paid off. On that day Walmart’s servers didn’t even go over 1% CPU utilization, despite the fact that they supported 200,000,000 users that day.

Dion Almaer, Walmart’s Vice President for mobile architecture, reported, “Node allows us to scale up very nicely and it’s perfect for what we’re doing in mobile.”

PayPal:

PayPal is also reaping the benefits of Node.js too. Their first node.js application was a rewrite of their account overview page- “one of the most trafficked apps on the website,” writes Seff Harrwll of PayPal.

Wanting to test out Node.js, they decided to build the app in both Node.js and Java, side-by-side and see which one performed better. And in the side-by-side tet, Node.js won. They build almost twice as fast, with fewer people, with 33% fewer lines of code and 40% fewer files and performance improved too. It offered double the request per second versus the Java application and 33% decreases in response time.

Being fast and scalable is imperative in today’s hyper-competitive tech space. Node.js let all of these companies dramatically reduce costs, and still improve their system speed.

3. Node is growing faster than ever:

Developers try so many new technologies and do so far faster than the rest of the market. This time with Node.js, the speed of the adoption is hyper fast, distorting its true acceptance, perhaps in a way you never expect when a technology becomes such an instant success. Companies are hiring Node developers and everyone wants to learn more, according to reports from indeed.com in Jan 2014 Job Trends for Node.js developer is +90,000% higher than java, RoR, scala, objective-c. And from interest over time on Google, search trends for Node.js in Jan-2014 were much higher than the RoR and objective-C.

Node.js is the fastest growing server side technology and has massive community support, thousands of production-ready modules and dozens of production-ready options which is extendable, scalable and adaptable which makes Node.js the perfect choice in modern application development. Over the last few months the use of Node.js has grown at an exponential rate. E-commerce giants like Walmart and PayPal have made big bets on Node while the world’s most read news publication- The Mail Online have implemented Node.js and Netflix is now in the process of implementing it too.

4. Node is good for:

API’s:

-Is the glue that connects devices and applications and services. Node is required for building a basic API ; either for mobile application to be able to access data or for multiple client website to access data.

-Node really shines building light-weight REST/JSON API’s.

-It’s non-blocking I/O model combined with JavaScript which makes it a great choice for wrapping other data sources such as database or web services and exposing them via a JSON interface.

-One of the popular and useful modules ‘Express’ makes life much easier. It carries a lot of similarities of Ruby framework. The express and Mangoskin libraries are absolutely great when you need to build simple REST API server in a few line of code. If you need to expand the libraries they also provide a way to configure and organize code.

Web:

-After over 20 years of stateless-web based on the stateless request-response paradigm, we finally have web applications with real-time, two-way connections, where both the client and server can initiate communication, allowing them to exchange data freely. This is in stark contrast to the typical web response paradigm, where the client always initiates communication.

-HTTP server: HTTP is a first class protocol in node. Node’s HTTP library has grown out of the author’s experience developing and working with web servers. Streaming data through most web framework is impossible Node attempts to correct those problems in its HTTP parser and API coupled with Node’s purely evented infrastructure, it makes a good foundation for web libraries or framework.

-Single Page Application: If you want to write an Ajax heavy single page application, Node is a great fit as well. The ability to process many request with low response times, as well as sharing things like validation code between the client and server make it great choice for modern web application that do lots of processing on the client.

-Shelling out to UNIX tools: Nodes ability to spawn thousands of childs process and treating their outputs as a stream makes it an ideal choice for those seeking to leverage existing software.

Mobile:

-Certain tasks Node would be very good at; it would work brilliantly if your program needs to response to events immediately. Such as mobile applications that need dynamic navigation, games and interactive e-learning. Node allows you to manage resources with unreliable mobile data connection, choose where to apply rendering, pick the right rendering solution for the right scenario.

-Streaming data: Traditional web stacks often treat HTTP request and response as atomic events. However the truth is that they are streams and many cool node.js applications can be built to take advantage of this fact. One great example is parsing file uploads in real time, building proxies between different data layers.

Soft Real-Time Applications:

-Another great aspect of Node.js is the ease at which one can develop soft real time systems. Such as: twiter, chat software, instant messaging network, sport bets. But your response times may sometimes vary depending on how often and long the garbage collection kick in because JavaScript has became a dynamic/garbage collected language.

Internet of Things:

-One of the challenges for an IoT Development Company is to make it as easy as possible to allow developers to make things for play or profit, serious or whimsical, professional or hobbyist. Node.js is an open source visual tool for writing the IoT. Built on the top of Node.js framework, it provides a lightweight, browser based editor that makes it easy to integrate different stream of both physical and digital events.

-The emergence of the IoT is driving a huge need for API’s that can connect devices to data. It should come as no surprise that Node has emerged as the technology of choice for creating these API’s given the speed in which you can develop them, you shouldn’t think of Node as a technology being adopted by just startup and cutting edge technology companies.

5. What’s Next?

Round-Robin Clustering:

New connections are accepted by the master process, which then selects a worker process to hand off the connection. Round Robin – it just picks the next available worker – but testing done by core developers and users indicates it works well: connections now get distributed evenly across the worker processes. Turning the selection algorithm into something that is configurable or pluggable by the developer is a change that is under consideration.

 

Performance Optimization:

The Node.js v0.12 version has given the core team and contributors ample opportunity to introduce a no. of performance optimization.

Cork support for writable stream: Writable streams now support a ‘corked’ mode, when corked; data written to the stream is queued up until the stream is uncorked again. This lets node.js combine smaller writes into larger ones which resulted in fewer system calls and TCP roundtrips.

TLS Performance Improvements: TLS module is reworked in Node v0.12. and has rewritten to use libuv directly. In this version, it pulls incoming network traffic directly off the wire and decrypts it without going through intermediate layer.

Crypto Performance Improvement: In v0.12 assembly version of v0.10 are expanded greatly.

Reduce garbage collector strain: The net effect of reduce garbage strain is that your application spends less time inside the garbage collector and more time doing useful work.

Better cluster Performance: The cluster module in node.js v0.10 depends on operating system to distribute incoming connections evenly among the worker process. It turns out that on Solaris and Linux, some workloads caused very unbalanced distribution among the workers. To mitigate that, node.js v0.12 has switched to round robin by default.

Faster timers, Faster setlmmediate(), Faster process.nextTick(): setTimeout() and friends now use a time source that is both faster and immune to clock skew. This optimization is enabled on all platform but on linux it take one step further and read the current time directly from the VDSO, thereby greatly reducing the no. of gettimeofday(2) and clock_gettime(2) system calls. Setlmmediate() and process.nextTick() alsosaw performance tweaks that add fast paths for dispatch in the general case, now functions are more faster.

 

Debugging Clustered Apps with Node Inspector:

Node inspector is a debugger interface for Node.js applications that uses the blink developer tools.

 

Running Multiple Instances in a Single Process:

The ability to have multiple instances of Node co-exist peacefully within the same process, it is an often requested feature. Imagine a Node-Webkit application where each window runs its own Node instance isolated from all other windows. Or Node embedded in a phone or network switch where it is performing routing logic for multiple connections, but in a single process and you are not so far.

 

A Synchronous API for Child Process:

The newly added API spawnSync, is analogous to its asynchronous counterpart, provides the low level API that gives you full control over how the child process is set up. It also returns all the information we’re able to gather: the exit code, termination signal, possible startup error and all the out puts of the process.