Node.js was made possible following Google’s release of its V8 JavaScript engine, which was developed as the JavaScript execution engine for the Chrome browser. Shortly after V8 was open sourced, Ryan Dahl, the inventor of Node.js, realised that the execution engine could be used to power a whole new concept of server-side JavaScript.
Recently, the market has witnessed the acquisitions of several Node.js pioneers, including StrongLoop by IBM, FeedHenry by Red Hat and Modulus by Progress Software.
IT industry experts have observed that the JavaScript-based scripting language is a must-have tool in the application development and delivery toolkit of modern companies.
>See also: The new era of app development – mobile vs. legacy
Node.js is growing quickly with almost unprecedented adoption. In the past five years, more than 190,000 Node.js modules (and other JavaScript libraries) have been added by developers. This outnumbers the entire Perl CPAN repository contributed over the past 20 years, and surpasses Java Maven Central, despite Node.js having a smaller developer base.
What is driving this growth among enterprise developers, and can CIOs trust Node to still be around in ten years?
The supporting ecosystem of Node modules around the core has seen strong growth. The Node community has greatly benefitted from having the Node Package Manager tool (the npmjs), which provides the central repository of shared modules.
This is a key part of the flexible, lightweight workflow of Node.js. It enables each app to include a set of dependencies in its own dependency tree. Thus, each application can have its dependencies bundled individually for that application, avoiding potential dependency conflicts with other applications.
This flexible framework provided by the Node.js design and the availability of the npmjs.org service have led to growth of the number of shared modules, and seen npmjs.org grow to service client-side JavaScript as well as Node.js.
The central npm.js registry surpassed 2 billion downloads in September 2015.
Early Node.js adopters included Netflix, Walmart, PayPal, Dow Jones and Groupon. These companies created internal “tiger teams” that used Node, deployed it into production, and typically used a divide and conquer approach, splitting up what had previously been a more monolithic approach to managing the way web pages were served up. This enabled them to innovate quickly in specific areas of the business and then immediately deploy microservices into production.
Going mainstream
Node.js is particularly suited to companies that had web-facing infrastructures and mobile apps that needed to innovate quickly on the backend, using a microservices architecture. This includes organisations that might ordinarily be viewed as conservative, but are faced with the dual challenge of developing apps to respond to rapid business changes, while maintaining the stability and security of existing systems.
These dual demands on IT teams have forced a change in mindset. Nearly all companies need to have some way of responding quickly to urgent business software requirements, whilst maintaining legacy software systems that change less frequently. Node.js is one of the tools of choice for the “fast-IT” teams building systems of engagement, such as mobile solutions.
Node.js is most frequently lauded for its ability to address enterprise demand for building apps with APIs that can connect to the backend and handle large data volumes in an efficient and lightweight manner. Indeed the focus on reusable RESTful APIs, as the most flexible way to architect large-scale software systems, has helped Node.js find a home.
Node.js can massively reduce application development time while achieving the same functionality. John K. Ousterhout, who helped to develop the influential Tcl/Tk scripting language and toolkit, first put forward the argument in the late 1990s that scripting languages are inherently more productive than heavier weight programming languages such as C and C++.
In comparison to a more heavyweight stack, application development with Node.js can be faster, and only stands to increase as the third-party ecosystem matures. It is worth investing time in understanding what is already there in the Node community to see whether it is possible to reuse some open-source modules.
There is a developer affinity for Node.js; a positive buzz around people working in it. Developer retention and morale is improved when an organisation’s IT ecosystem includes a Node team. It is perceived as an exciting, cool thing to be doing.
It also lends itself to a microservices architecture because it has such a low resource footprint in terms of its CPU, computing power, and RAM usage. This advantage accrues when the computing tasks are I/O bound, rather than CPU-bound, as the design of the Node.js execution model allows for a lightweight parallelism, using a single threading model that does not require complex parallel programming techniques.
With these things combined – the mindset of the developers and the various technical advantages of the lightweight approach – enterprises get a different approach to solving IT problems, with a set of developers who are motivated to solve them, armed with a fast set of tools.
>See also: The rise of no-code enterprise applications
Future of Node
Even the more conservative parts of the enterprise IT community have now recognised that Node is quickly maturing. It has a stable core, with backwards compatibility maintained across most versions, and the ability to run real solutions in production in very large enterprises.
Last month at the NodeConf EU, Node 4.0.0 was announced, along with an aggressive release cycle goal. The first long-term support (LTS) release of Node was scheduled for October, with further LTS releases planned every 12 months. Each LTS release will be actively maintained for 18 months, and after that period has passed it will go into maintenance mode for another 12 months.
This long-term support plan gives enterprise developers a reliable understanding of which version of Node is safe to use if they want to experiment and which to use if they plan to deploy to production. And it’s reassuring to see the Node.js Foundation making sure that it has an open governance model.
While Node is not intended to replace other languages, it will certainly take its place as one of the tools for enterprise software development and will hold that place for at least a decade. Node has already shown early promise for Internet of Things implementations. For web-based and mobile-based backend systems, Node is here to stay.
Sourced from Mícheál Ó Foghlú, CTO of Red Hat Mobile