Although Node.js has been around since 2009, it is a technology that has gained a lot of momentum in the past year and one in which customers will frequently inquire about. However, it can be easily misunderstood with respect to how it can be best used in web application development.  Node.js is a web technology platform that is installed on a web server and is built in JavaScript. It is very good at enabling high volumes of data to be sent between the server-side application and the end-user’s browser in real or near real time (for example a website that has live chat functionality).  It enables many end users (potentially millions and millions) to communicate with web servers while using very little of the web server’s resources.

Traditionally, these sorts of real time chat and push notification applications required software that had to be first installed on the user’s computer, or installed onto the user’s browser as a plug-in (such as Adobe Flash) which could make for a cumbersome end-user experience (that sometimes would just not work depending on the user’s browser type, version, and computer operating system).  The beauty of  Node.js is that it “lives” in a very standards-based world (same as simple HTML, CSS, and JavaScript), where it works in modern web browsers without the need to install anything.  Therefore, it allows for a very lightweight and seamless experience for your end users.

Node.js is best suited for web applications that need to handle real-time, high traffic communication between many, many users via simultaneous connections.  For example, social media sites that require constant posts or “likes”, dashboard-driven applications that are retrieving data and then presenting it to the user, and updating in real time, or applications that send out push notifications to the web browser, or chat and collaboration applications which involve many users communicating with each other.

Node.js can run on Windows, Linux, or Mac servers.  It uses Google’s V8 Engine as a run time environment which is able to route massive amounts of data connections over a single “thread” on the web server. This requires very little resources from the web server compared to traditional request/response web technologies where each request/response uses it’s own thread.  As a result, Node.js applications can be highly scalable.  Since JavaScript is very popular amongst millions of developers, the learning curve for working with Node.js is low for most web developers.

One important thing to note however, is that Node.js should NOT be used for applications or tasks that require a high amount of computing power such as large computations.  This is because Node.js would need to wait until the server has completed the computation before being able to use the server’s thread again.  This essentially “blocks” the thread from all of the other high traffic messages and communication on the thread and would effectively mitigate any benefits of the Node.js technology.

Like all technology platforms, proper technical planning and thought should be employed in the early stages of custom web application development to first understand the functional and system requirements before deciding on the right technology set to use.  However, if your web application plans call for a large number of simultaneous connections, and needs to be fast and highly scalable, then Node.js is likely a good candidate for this purpose.