The State of Node in the Enterprise
Reposted From Medium
Like the Node community itself, things are moving at a lightning pace at NodeSource with literally everyone at the company completely engaged: consulting or training with customers, developing our new suite of enterprise Node tools, and participating in community activities and projects.
We have, however, taken some time to reflect on the progress that Node and NodeSource has made in the past year and to share that with the community in the form of our newly published white paper, The State of Node in the Enterprise. The paper provides our perspective on the role of Node in enterprise development, common factors of successful implementations, and how NodeSource can help you get there.
Here’s an excerpt:
The Essence of Node
The growing popularity of Node is the result of a confluence of factors. First, there is an increasing need to quickly build fast, scalable, distributed web applications. Second, there is inherent risk associated with running large, complex monolithic applications. Third, software developers are looking to develop a skill set that has lasting value in the job market.
In order to understand how gains can be achieved using Node, it is important to understand what makes it so unique and powerful.
Node requires developers to embrace a different mindset in the form of asynchronous programming — as opposed to the traditional serial, or sequential programming.By treating I/O as a special class of operation, developers must design highly performant applications by default, but it does come with the burden of adjusting the way the programmer thinks about the execution of their code. Node is single-threaded by nature, and while some consider this a weakness, it should instead be embraced as a win for application design.
Applications built with Node are built for predictable scalability; the idiomatic design patterns adopted by Node programmers confer robust scalability by nature without the overhead required by complicated synchronization mechanisms.
Node is a highly productive platform that is modular by nature and has a track record as a key component in an agile technology stack. Node embraces the new mantra of “Throw-awayability” that is becoming pervasive in the services oriented software design world. Node encourages developers to think in terms of creating small services that can be easily replaced or updated when necessary.
By adopting a module-driven approach, Node developers can deconstruct the functionality of large monolithic applications and redesign them as a series of Node modules, bundled together to form a collection of services. This establishes an elegant simplicity in building scalable application functionality that improves both business and developer agility and leads to greater code-reuse.
Small Core, Vibrant Ecosystem
The main risk in large monolithic applications and traditional development methods is the natural mission creep of applications and the development environments that build them. Over time this results in feature rich but bloated products.
Node avoids this scenario by creating a small core of essential functionality that is studiously defended and constantly debated by the Node community. This pushes experimentation to the edges and encourages a vibrant ecosystem and development culture. It also ensures that spurious functionality does not become a permanent part of the Node environment. This ethos also extends to Node-style development, with developers constantly thinking about how to keep modules small and focused and splitting apart functionality where the “do one thing well” rule is broken.
New Models in Open Source
Most IT organizations now realize the increasing difficulty of modernizing their approach to development and operations without embracing open source technology to some degree. Gartner predicts that by 2016, “the vast majority of mainstream IT organizations will leverage non-trivial elements of open source software” in mission-critical solutions.
Node was born in the new era of open source, embodied by the GitHub model of developer interaction, collaboration and governance. Both Node and GitHub allow for a public and private open source development platform that empowers a growing, global community of developers.
Enterprises adopting Node are generally seeking to capture some of the obvious benefits of open source development practices and ethos. The culture and development workflow of Node encourages greater collaboration, communication and code-sharing — engineering practices that often go missing as enterprises grow and change over time.
The above excerpt is an abridged version of the first section of the white paper. The rest of the paper is the product of our work in the Node community and the experience gained from customer engagements. We hope you find it useful.
Read the paper