Review of Node.JS: Pros and Cons

MARYNA DEMCHENKO

Published: 02 Nov 2020

Software Development

JavaScript is a universal recipe when it comes to developing web applications. But its possibilities go far beyond that. JS is also known as a go-to technology for cross-platform development. It's also an essential tool for various platforms, from React Native and Accelerator to Phone Gap and NativeScript. The syntax of JavaScript has become the foundation for server-side development.

Case in point, Node.js. 

What is Node JS?

Or rather, is Node.js a framework? Node.js is a server-side JavaScript platform that runs on the Google Chrome engine - V8 and can compile JavaScript code into machine code.

NodeJS saw the light of day in 2009. In a nutshell, it was presented as a step away from JS running in the browser to JS running on a machine as a stand-alone application. LinkedIn was one of the first companies that took an interest in this technology. Companies like Uber, Netflix, eBay followed suit a few years later. However, broad adoption only started several years ago. 

What is Node js is used for? It's a popular platform for building full-blown Node.js web applications, hybrid applications, REST APIs, desktop programs, and even IoT solutions. 

Using Node.js for server-side programming has both benefits and downsides. To understand whether this technology suits your project, we shall discuss both sides. So, let's start with its strengths. 

What are Node js advantages?

  • Dynamic tech stack

JavaScript is a wildly popular programming language. At the same time, Node.js is seen as an independent technology. It encompasses all the benefits of JavaScript but on the back-end, including:

  • It's a widely adopted language
  • Extensive library and tools
  • Efficiency due to the use of a single language
  • High speed and performance

As such, using Node.js, your team builds reliable software at remarkable speed. Whatever technologies your front-end team uses, they can handle the server-side with Node.js and enjoy code reuse benefits. 

  • High speed and event-based model

Node.js is synonymous with high speed. Having taken the asynchronous and non-blocking nature from its parent, JavaScript, it can perform minor tasks in the background without impeding the core thread. Another reason behind its fast processing is the V8 engine, which is the quickest JS engine so far. 

Node.js relies on an event-based model. It assumes updating data in real time, which is critical for messaging programs, online games, and video chats. Using the same language on the front-end and back-end is the best way to achieve fast synchronization. 

Finally, Node.js offers non-blocking I/O systems that let process concurrent requests at the same time. When the requests are lined up, they are processed efficiently and without any delays. Conversely to asynchronous request handling (which is a major benefit of Node.js), synchronous processing handles request one by one. It means that a request cannot be handled if there is another one in the process. Nodejs's asynchronous processing allows handling requests without blocking the thread. 

  • Microservices 

Node.js is well-suited for working with a microservices architecture. This type of architecture allows you to break down an application into separate modules with specific functions so you can easily integrate new elements into your app. This type of architecture enables high levels of flexibility and paves the way for scalability in the future. 

Read also: Microservices vs. Monolithic: Which Architecture Suits Best for Your Project

Building Node js server side has helped many companies achieve remarkable microservice transformation. Paypal and Netflix are probably the best examples.

Node.js review: PayPal switched to microservices using Node.js. What started as an experiment back in 2013, has brought amazing results:

  • The Node.js app was built 2 times faster
  • They used fewer engineers 
  • The code was significantly reduced 
  • Performance exceeded the boldest expectations: A single core Node app could handle double rps as the five core Java app. 
  • Response time went down 35%
  • Microservices allowed to roll out new features at an impressive speed 
  • Scaling with Node.js on a global scale lets several teams smoothly work on the same project

Netflix Reduced its 40 Mins Startup Time With Node

Netflix used to be a sizeable monolithic app with slow builds that didn't let the team innovate quickly. Using two different languages on client- and server-side, the team had to write everything twice. They made a strategic decision to simplify the stack and break down the monolith, and Node.js played a crucial role in this. That resulted in increasing engineer productivity. 

  • Vast tools 

A large toolbox that includes a variety of frameworks and tools is another reason to choose Node.js. Node.js package manager, npm, is why many developers out there love Node.js. Npm offers more than 800K tools (and counting) suitable for a wide variety of cases. Name any web application these days, and it will have npm modules. That's how popular Node.js is. 

What are the shortcomings of Node.js?

  • Decreased performance during complex computation tasks 

As we have mentioned before, Node.js is single-threaded and event-driven, and that is why it isn't suited for heavy computational tasks. Receiving a massive computational task, it uses the CPU power to the fullest to handle that task, leaving other tasks running in a queue. That means slowing down the entire thread of events, which impedes the interface. "Worker threads" have been introduced to remedy this problem, but this solution isn't absolutely effective at handling CPU-related computational tasks. 

  • Callback hell puts code quality at risk

Node.js is reliant on callbacks due to its asynchronous approach. Typically, this function works after executing a task. If multiple tasks are running in the background, each having a callback, it might cause callback hell, an unwieldy number of nested “if” statements or functions. It impedes performance and lowers the quality of code. 

  • Lack of library support 

While the npm library seems rich, the quality of many packages leaves much to be desired. Lots of them don't have proper documentation. Since it's an open source system, professional monitoring here is scant, so many packages don't meet the coding standards. The good news is that Joyent supervises the key Node.js technologies. 

  • Shortage of developers 

Even though it's part of the full-stack development concept, not many JavaScript developers are willing to learn NodeJS. That is because it requires lots of effort and previous experience in software development. As such, the JS developer pool by far exceeds that of Node.js. 

Node.js is not a one-size-fits-all solution, but it's a good solution for creating fast and scalable web applications with less engineering effort. Our NCube specialists have vast experience in front-end, back-end and full-stack development, not only using Node.js but also a wealth of other technologies. Please send us a message below, and our experts will help you find developers for the tech stack of your choice. 

X

Talk to our experts

Your name

Your email*

Your question

Reading nowReview of Node.JS: Pros and Cons
MARYNA DEMCHENKO|02 Nov 2020
CTO Guide: Remote Work During the Crisis
MARYNA DEMCHENKO|19 Oct 2020

Build your own virtual team in Ukraine