I must say I’m really looking forward to working more closely with the Modulus team – I’ve really enjoyed all my interactions with Charlie, Brandon and Ghuffran and it will be fun to meet the rest. I even scheduled a get-together in Cincinnati with our Progress summer interns!
Modulus provides a PaaS to host, deploy, scale and monitor applications using Node.js and MongoDB. The Modulus platform is offered as a hosted service and can also be deployed by enterprises in public, private and hybrid clouds as well as in an on-premise infrastructure. This flexibility is fully aligned with what we offer in the Progress Software product line.
The Modulus team has been doing an outstanding job with their platform, adding new features like multi-region and multi-provider scalability; you can expect continued new features with the extra resources that come with the acquisition.
In addition to its great team and great product, Modulus is also built on up-to-the-minute technology. It is a very young company which means it leverages all the modern building blocks that we, and our customers, need to face the needs of our changing industry – from Joyent JoyentCloud and Amazon’s AWS to LXC. The code is also very well architected, reusable and scalable. The platform is all written in Node.js except for the new load balancer, which is written in Go.
As we Modulus and Progress start working together, I thought it would be useful to write down the main reasons why the adoption of Node.js is taking off now.
Recent conferences and events, including those focused on the enterprise like NodeDay and Node On The Road, have been very well attended, and adoption is everywhere, including within the Progress community. Some examples include the AKIOMA CRM, the WApp framework from wiz4biz and the #42 app from dot.r.
Node on the Road, Boston
Node.js is designed around non-blocking IO and asynchronous events. This is a good model for modern horizontally scalable applications. Node is portable (via V8), easy to install, fast to start and has good performance – with a few exceptions like computation-bound applications.
Node.js is also a great match for the new API-first, mobile/browser client architectures. And the principles that served Unix well are clearly a part of Node.js. (See posts by Alex Young andIsaac Z. Schlueter.)
Node is also efficient, relatively small and is being used in many contexts, including Fitness machines! (See presentation from Koko Fit Club.)
Another key driver for adoption is NPM, the Node Package Management repository, which is growing very rapidly. NPM has been a part of Node since the very early releases (since 0.3, in late 2009) and the large majority of the industry uses it. A typical organization will have a local repository, a remote one and contributions to the main repository are encouraged. There are more than 78K modules in NPM; some contributed by corporation but most by individuals – and publishing is as easy as npm publish.
The NPM repository has many types of modules, including infrastructure like async and frameworks like express. Because of the synergy between Node.js applications, developers and “modern” services, you are likely to find packages for most of your needs, from Philips Hue to Hadoop. NPM is still relatively new and will continue to improve with more contributions, along with better curating and searching; a recent development was the creation of NPM, Inc, which is focused specifically on NPM.
NPM is growing very fast. As of this writing, NPM is the second largest repository, only surpassed Maven Central with almost 80K components. NPM is growing twice as fast as Maven Central and it should be the largest repository sometime in July.
Node.js is very well suited to the needs of the modern front-end engineer. These engineers need velocity and productivity to create and deliver mobile and browser-based applications while interacting with services over which they have little control. The result is a mismatch of requirements. I like the way Nicholas Zakas presents this argument so I’ll borrow from Node.js and the new web front-end.
Zakas describes the goal in using Node.js as:
“To me, Node.js was [about] … liberating the back-end UI layer from the rest of the back-end.”
The current situation is pictured in the diagram below: the front-end developer has control of the UI layer (in the browser or the mobile app) but needs to conform to the architecture and processes imposed by the back-end layer.
Traditional Front-End Architecture
The typical Node.js front-end architecture gives control back to the front-end engineer by separating these layers:
Node.js Front-End Architecture
The two service layers will differ not just in technology but also in development processes. Typically the back-end – written in .NET, Python, Java, etc. – will change very slowly, while the front-end can change very quickly, maybe even several times a day. The extra layer is also a good architectural practice to provide horizontal scalability.
The adoption of Node.js is also happening among many enterprises with 15 year old infrastructure. This infrastructure, often in Java, was designed for a different world, and cannot deliver the velocity and productivity needed in today’s world. Companies like eBay and PayPal have been trying to move away from that old architecture for many years, and Node.js is providing the opportunity and excuse to do the rewrite. The new architecture is usually based around the notion of micro-services. These services can be written in any of several languages but there are real benefits to using Node.js. As the industry moves this way, the benefits (like NPM) compound.
There are significant performance benefits from rearchitecting the layers following the principles discussed above, as presented in Jeff Harrell’s PayPal’s switch from Java to Node.js, but I also believe the performance could be achieved with other implementations – see for example Stephen Connolly’s About PayPal’s Node vs Java “fight”. That said, Node.js does encourage a good architecture and the overall community experience is very positive.
Finally, there are real benefits in being in a new platform and starting afresh, it is always fun for developers to learn something new and this means plenty of highly qualified candidates with high energy.
Node.js opens many new ways to leverage other Progress technology. As I am writing this, the PUG Challenge Americas conference is winding down and I’ve attended multiple sessions reporting on these synergies; I’ll write a post on those. In addition to its great synergy with Progress Software, Node.js provides a natural way to interact with the services needed for IOT applications, and Rollbase and Node.js also mix nicely together for this purpose – check the posts from LAHacks for some early experiments.
It will be a fun summer and fall! For more information on Modulus visit their website and their blog and follow them at @onmodulus. I will also cover these topics here and in my blog and you can follow me at @pelegri.
Eduardo's focus is on strategic initiatives, technology trends and on Corporate Development. Eduardo is also interested in Technology Adoption and tries to stay in touch with the new waves of developers through Hackathons, internships and other community interactions. Eduardo joined Progress in November 2013; before that he worked at BlackBerry, Oracle, Sun Microsystems and Xerox PARC. He has CS degrees from UCB and USB (Venezuela).
Copyright © 2018 Progress Software Corporation and/or its subsidiaries or affiliates.
All Rights Reserved.
Progress, Telerik, and certain product names used herein are trademarks or registered trademarks of Progress Software Corporation and/or one of its subsidiaries or affiliates in the U.S. and/or other countries. See Trademarks for appropriate markings.