Report: Node.js Developers Prefer MongoDB, RabbitMQ, AWS, More
"The results show that MongoDB, RabbitMQ, AWS, Jenkins, Docker and Amazon Container Services are the go-to choices for developing, containerizing and shipping Node.js applications," the company said in a blog post published Wednesday.
The survey was conducted this summer (July 11 to Aug. 15) and received responses from 1,126 Node.js developers. It was offered via an online form that was publicized via Twitter, blog posts and a newsletter.
Nearly two-thirds of respondents reported MongoDB was their database of choice, with a wide margin over No. 2 Redis.
The latter, however, was the top choice for caching, with a large percentage of developers (44 percent) reporting they don't use anything for caching.
Messaging systems weren't that popular either, as most devs (about 58 percent), said they don't use one, though RabbitMQ (24 percent) was the No. 1 choice among those who do.
Amazon Web Services Inc. (AWS), the overwhelming top cloud services provider in just about any metric you can think of, was the most-used platform for running Node.js apps, favored by 43 percent of respondents, followed by an organization's own datacenter (34 percent), DigitalOcean (25 percent), Heroku (25 percent), Azure (7 percent), Google Cloud (5 percent) and IBM BlueMix (2 percent).
RisingStack said that finding wasn't surprising, but "What's interesting though is that Heroku and DigitalOcean are competing neck and neck to become the second biggest cloud platform for Node.js. According to our data, DigitalOcean is more popular with smaller companies (under 50) while Heroku stays strong as an enterprise solution as well."
Other highlights of the survey include:
- Docker was the No. 1 container tech/VM in use (47 percent), followed by none, VirtualBox, AWS AMIs and VMware.
- Promises was the top choice for async control flow (74 percent), followed by plain callbacks, the async npm module, async-await, generators and RXJS.
- Semantic versioning was used by 71 percent of respondents, though 15 percent didn't even know what it was and another 14 percent said they didn't use it (apparently knowing what it was).
- Shell scripts are the primary means of pushing code or containers (53 percent), followed by Jenkins used in-house, Travis CI, Circle CI, Codeship and hosted Jenkins.
- Application performance monitoring (APM) tools "are still quite unpopular." Only 24 percent of respondents reported using an APM.
- For debugging, some 82 percent of devs just use console.log, while many fewer prefer using the node-inspector module, the built-in debugger and the debug module.
Concerning the latter item, RisingStack cited debugging as the most severe pain-point for coding with Node.js. (Note that RisingStack sells Trace, described as "a next-gen Node.js debugging and performance monitoring solution.")
The top pain points were:
- Debugging/profiling/performance monitoring.
- Callbacks and "callback hell."
- Understanding Async programming.
- Dependency management.
- Lack of conventions/best practices.
- Bad documentation.
- Finding the right packages.
"Developing Node.js is still an interesting and ever-changing experience," RisingStack concluded. "We'd like to thank ... the engineers who took their time with answering to our questions, and we hope that the information presented in the article is valuable for the whole Node community." The company said it would release the full dataset resulting from the survey "in a few days."
Meanwhile, Node.js developers may want to check out a similar survey conducted earlier this year by the Node.js Foundation. In that survey (separated into front-end, back-end and IoT categories), the top technologies used by respondents included (in order from most to least): Express, MongoDB, jQuery, Angular, React, nginix, Docker, MySQL, Postgres, Codeship/Shippable/Jenkins, RabbitMQ/ZeromQ/NSQ, etc., Restify, Hapi, Koa, HAProxy and Cassandra.
David Ramel is an editor and writer for 1105 Media.