Node JS first appeared in 2010 and since that has been rocketing in the sky of web development. It has broken all previous concepts and beliefs. It was like a small DOS diskette of young Bill Gates that pushed huge players of operating systems out of the personal computer market.

Node Js, being very simple and incomplete compare to traditional systems, won the sympathy of developers for its freshness and minimalism. JavaScript engine with built in web server and few libraries that can be installed and started in a minute. Comparing to traditional setup of LAMP/WAMP it was revolutionary.

There were 2 biggest achievements that improved the performance. First is to have a web server in the user application space. Traditional HTTP servers call user applications via CGI or Fast CGI. It introduces one more level of inter-process communication and often becomes a bottleneck. In case of Node Js the web server is a part of application and requires no additional communication. This is especially beneficial for small applications that do not need all the power of Apache or NginX.

Second achievement towards performance is the single-threaded model. Instead of spawning a new thread or process for every connection, NodeJs operates in a single thread loop but uses non-blocking IO calls. All IO and other long-time operations return immediately and call callback function upon completion. This is naturally suitable for JavaScript engine that uses the same paradigm. Some companies report multiple times increment in performance after switching to NideJs from other systems.

The last advantage is that the same programming language and even same libraries are used for server and client side application. It greatly reduces learning curve and development resources.

Now Node JS has become very mature. Lot of supporting tools have been developed around it. Combined with new client side frameworks like Angular JS or Vue JS and MongoDB noSQL database, it provides super powerful, completely open source development environment for small and middle size web applications.

Yet building a bigger reliable and scalable WEB platform on the base of Node Js poses many challenges. Choosing among open source and commercial libraries, scalability solutions, creating production deployment is more difficult than with more developed LAMP or IIS and can become quite expensive in terms of human resources and time.

AgriCom uses Node JS for its server application Agri Commander. It lets us achieve very high performance with little resources and reduce cost of the end products.