Why and when to use Node.js?

Daniil Kopilevych
Daniil Kopilevych
Marketing Manager
Jul 21, 2018 7 min read
Technology
Technology Jul 21, 2018 7 min read

Putting together a technology stack for a project is a task in itself. Choosing the right languages, tools and platforms can determine a lot of aspects of the future app functioning – from the straightforwardness of development to the performance and efficiency. Thus, it is critical to make the right choice in the beginning.

If you have a web application project in mind, you are, most probably, evaluating the pros and cons of building your stack around JavaScript and the tools using it. Sooner or later, you will think of the backend development platform, and surely come across Node.js.

What is Node.js? What is Node.js good for? Why to use Node.js? We will try to answer these questions to help you decide whether this environment is suitable for your project.

Node.js in a few words

First, why did you ever think of Node.js? Most likely, because your development team said so. And why would your team recommend Node.js? Most likely, because they see the advantages of “JavaScript everywhere”. Yes, this is the most revolutionary thing about Node.js – it is the first-ever environment supporting JavaScript both client-side and server-side.

What does it mean from the practical point of view? The possibility to use JavaScript for writing both the frontend and the backend lies at the core of multiple Node.js advantages:

  • Easy learning curve. Knowing JavaScript gives a developer a good start with Node.js. Of course, you need to know the backend development principles, however, the knowledge of the programming language will simplify things a lot.
  • Large community. Node.js, being an open-source project, encourages support and contribution aimed at the improvement and adoption of the platform. This is the mission of its Foundation intended for continuous development and enhancement of Node.js. Therefore, you can be sure that, on one hand, Node.js is always getting better and, on the other hand, there is already a lot of reusable resources.
  • Robustness. Using Node.js allows organizing full stack JavaScript development ensuring the speed and performance of the application.
  • Scalability. This is a true jewel of the Node.js development environment, as it allows building applications that can easily grow with your business. Node.js works great in systems using the microservices architecture or containerization where the scalability and flexibility can be achieved quickly and easily.
  • Great ecosystem. Browse npm (Node.js package manager) for 650,000 free code packages that you can reuse with Node.js.

These are just a few of the advantages of Node.js as a development environment. You can read more about the strong sides of Node.js in our blog.

Besides, the popularity of Node.js has prompted the creation of a whole line of Node.js frameworks intended to simplify web development using this environment.

At the same time, while we have mentioned the great things that Node.js brings to web development, for fairness sake, we should also touch upon the Node.js disadvantages, as nothing is perfect.

  • Single-threaded processes. By its nature, Node.js can process only one command at a time. However, the blocking of other processes is avoided by the implementation of the asynchronous mechanism allowing to perform several simple tasks simultaneously. However, a complex calculation requiring a lot of processing resources may block the flow and cause delays.
  • Poor quality of open-source tools. Yes, we mentioned npm as the advantage of Node.js, however, it has its flip side, too. While the number of modules and packages available in the registry is great and there is definitely a lot to choose from, some packages can be either low-quality or poorly documented. This has nothing to do with the quality of the core Node.js code, while the contributed tools can sometimes be substandard.

What is Node.js used for?

Since we have outlined the advantages and disadvantages of Node.js, let’s see how they translate into the practical aspects. We will try to determine when to use Node.js in web development in order to achieve the best application performance.

  • Real-time applications. As we have found that Node.js can ensure great speed and performance, one of the textbook Node.js use cases is real-time messaging, or chatting. The environment can support intense traffic of multiple short messages, or chatrooms when messages are displayed to many users at the same time.
  • Collaborative tools. This Node.js use case example is also related to its ability to process real-time flows. You should have heard of Trello, a project management application that is rather popular with software development companies. Well, Trello was developed on the basis of Node.js and benefited from its event-driven, non-blocking model. Node.js is great for applications requiring immediate updates, such as various collaboration tools and online documentation suites.
  • Data streaming applications. The term “streaming” means exactly that – sending large amounts of data in smaller packages instead of a single batch. This ability is especially critical for audio or video streaming applications. Node.js is perfectly suited for this task with built-in modules supporting data streaming and allowing to create both readable and writable data streams. If we add that Netflix, a global media service provider, uses Node.js, you may get the idea of how powerful this environment is.
  • Applications relying on scalability. The superb scalability supported by Node.js answers the “why Node.js” question for apps required to withstand high peak loads. This is the reason why Uber chose Node.js to develop its app. The global taxi network is always growing and expanding its presence; at the same time, the nature of the taxi business causes high demand peaks during holidays. Node.js handles these challenges quite well.

Visit our blog for the detailed research on the companies that have chosen Node.js as the platform to develop their applications.

When is Node.js not a good idea?

While there are quite a number of use cases that Node.js fits perfectly, there are situations when you should look for other platforms, as Node.js will not provide the best performance.

  • Applications with heavy computing server-side. Since Node.js uses only one CPU core, heavy computations on the server will block all other requests. In this case, the event-driven non-blocking I/O model which is the strongest side of Node.js will become useless, and the application performance will suffer.
  • CRUD applications. In this case, using Node.js does not automatically mean poor performance. However, if you are building a simple CRUD app with data coming directly from the server and no API is needed, Node.js may be excessive, as its powerful features will be simply wasted.
  • Server-side web applications with relational databases. The reason for Node.js poor performance in this case is that its relational database tools are not as advanced as those created for other platforms. However, the recent news suggests that the latest version of Sequelize ORM may fill this gap and create the possibilities of using Node.js with relational databases.

Other considerations to remember when choosing Node.js

As you see, there are quite a lot of cases where the use of Node.js is going to add to your application performance and reliability. At the same time, when musing about why we use Node.js in web development, we should also mention other aspects that belong to the organizational rather than technical matters.

Of course, when selecting the technology stack for your project you should also think of engaging experienced professionals who know the tools and platforms that you choose and can use them to the maximum benefit of your app. If you already have a Node.js pro on board, you are all set. However, if the technology is right for your idea but you still need to find the people to work with it, we have some good news for you.

The Stack Overflow developer survey of 2018 showed that almost half of the respondents named Node.js the framework they use in their work.

Image credit: StackOverflow

For startups, this means that there are quite a lot of Node.js professionals on the market, and it is not going to be a problem to find one for your team.

Besides, there is also another point that you should factor in while selecting the technologies and looking for developers to invite to your team – the rates of Node.js pros. There are several hiring models that you can use to put together your team.

If you want to hire Node.js developers full-time, take into account that the average salary of such a professional is going to be about $95,000 in the US. At the same time, you can choose to engage freelance Node.js developers, thus saving the costs of their vacations, sick leaves, office administration, and employee benefits. In this case, a US-based Node.js freelancer will charge about $81-100 on the average. However, a more cost-effective solution may be outsourcing your development to Eastern Europe which has proved to provide the same high quality at somewhat lower rates. If we are talking about Node.js professionals, in Eastern Europe their average hourly rates are $61-80.

Summing up

As you see, Node.js is a powerful development framework showing excellent performance in many cases. The list of Node.js application examples is quite long, and your project may very well benefit from using this technology.

Moreover, the vast Node.js community is constantly working on making the platform better, and it may happen that even the cases where Node.js is not the best choice will become a thing of the past. If you want to follow the latest news from the JavaScript universe and, particularly, about the evolution of Node.js and other useful tools, subscribe to our blog.

If you are planning a web application project and think that, maybe, Node.js is just the right thing for it, contact us for a professional analysis and consultation. We will suggest the technology that will showcase your idea and ensure the most optimal performance.