(点击上方公众号,可快速关注)
导读为了解开发者如何使用Node.js 以及偏爱的相关技术,2016年 RisingStack进行了一项调查。本文对调查结果进行了总结。 结果表明,MongoDB、RabbitMQ、AWS、Jenkins、Docker以及Amazon Container Services是开发、集成、装载 Node.js 应用的首选。 此项调查也让我们了解开发Node.js 的方方面面以及异步控制流、调试、持续集成或寻找包的选择方案。结果显示,Node 开发者的主要痛点是调试。 这项调查从2016 年 7 月 11 日至 8 月 15 日,共开放了35 天。在此期间,1126 位 Node.js 开发者共同完成了这项调查。其中 55% 开发者拥有两年以上的 Node.js 经验,26% 使用 Node 一至两年。20% 在上市公司工作,7% 在《财富》500 强。 Node.js 相关技术MongoDB成为数据库首选根据结果,MongoDB 显然是Node.js 开发者的首选数据库。大约 2/3 的参与者表示他们在自己的 Node.js 应用中使用 MongoDB。值得注意的是,在阅历丰富的Node 工程师当中,Redis的人气剧增,PostgreSQL 和ElasticSearch也是如此。
Redis 在缓存解决方案上领先,但是许多开发者还没有做这方面的处理。一半参与者表示在用Redis 进行缓存,但难以置信的是,有 45% 根本没有缓存方案。相互比对经验丰富的程序员的答案,我们可以发现,相比于 Node.js 经验少于 1 年的工程师,Redis 在 Node 长期使用者中的人气相当高。 消息系统的流行度仍旧较低根据调查,58% 的 Node.js 开发者没有使用任何的消息系统。这意味着开发者在自己的微服务系统中很少使用消息,而用了 REST API,或者他们的系统不够复杂。 使用消息系统的开发者表示他们大多用RabbitMQ(24% 的调查对象)。如果我们只研究使用消息系统的开发者的答案,那么RabbitMQ远胜于其它已有的解决方案。 Node.js 应用大多在 AWS 上运行根据调查,43% 的 Node.js 开发者用 AWS 来运行应用,但是自己运行数据中心也很普遍(34%),尤其是在企业间(几乎 50% 有自己的数据中心)。这也并不奇怪。
但有意思的是,Heroku 和DigitalOcean并驾齐驱成为 Node.js 第二大云平台。根据数据,DigitalOcean在小公司(少于 50 人)间更流行,而 Heroku作为企业解决方案也很强。 Docker 在 Node 社区中独领**目前,Docker container 是多数 Node.js 开发者的首选解决方案(47% 的调查对象表示在用而 container 技术用户中则高达 73%)。Docker 似乎在所有规模的公司间都很流行,但资深程序员使用得更多(一年以上开发经验的)。
64% 的调查对象表示使用 container 技术意味着 container 的流行度从 2016 年 1 月Node.js 调查的 45% 显著提升了 20%。 Amazon Container Service是运行 container 的首选虽然Amazon Container Service是运行 Node.js container 的首选,但值得注意的是,根据我们的调查,Kubernetes也占比 25%,并且似乎在企业 Node.js 开发者中尤其受欢迎。 Node.js 开发配置文件比环境变量更加常用。与证书相比,多数Node 开发者(59%vs. 38%)更喜欢配置文件。只有 29 位调查对象(3%)表示两个都用。 只用配置文件有潜在的安全问题,因为这表明证书存放在仓库中。如果你在GitHub 的生产系统中有证书,那么很快就会有无赖程序员来找麻烦。 为了安全性,建议使用环境变量,但是总的来说仍然可以用配置文件。 Promise 主导异步控制流在Node.js中,大部分核心库都涉及回调。结果表明 Node.js 用户目前都倾向使用 promise。 大概半年前,Node.js 核心仓库的一条pull-request要求异步函数返回原生 Promise。对此的回答是:“Promise API 目前对核心功能来说没有意义,因为基于 V8 的 promise 以及和其它 ES*特性的关系还在发展初期。短期内 TC 内部在核心中探索 promise 的兴趣不大”。 也许是时候重新审视这个问题了,因为出现了需求。 开发者依赖于console.log调试Console.log比其它像是 Node Inspector、Built-in debugger 和 debug module 等调试方案更胜一筹。大概 1/4 的 Node 开发者在应用中使用 console.log定位 error,即使也有更加精细的解决办法。
进一步观察数据可以发现更有经验的开发者也倾向于Node Inspector 和Debug Module。 APM 在 Node.js 社区中仍旧低迷根据调查显示,只有1/4 Node.js 开发者使用 APM应用性能监测工具来识别应用问题。但是,数据集的趋势表明 APM 使用率会随着公司规模和开发者经验而上升。 SaaS CI在 Node.js 社区的市场占有率依然较低根据调查对象的答案,使用shell 脚本是将代码推到测试或生产环境最普遍的方式。但是 Jenkins 目前在持续交付和集成平台方面明显胜出,并且随着公司规模的扩大而更受欢迎。 Node.js 开发者极少更新依赖Node.js 应用强烈推荐经常更新依赖,因为根据一项最近的调查,约 15% 的 npm 包带有已知的漏洞,76% 的 Node 商店利用漏洞依赖。 每周至少要更新一次依赖,否则应用就会时刻暴露在严重的攻击下。根据调查,45% Node.js 开发者一个月以上更新一次依赖,27% 每月更新一次,只有 28% 回答至少每周更新一次依赖。 这些数字与公司规模和程序员经验都没有关系。 Node.js 开发者用 Google 找包根据调查,大多数开发者用Google 找包,并 决定应该使用哪一个。虽然在调查对象中, npmjs.org/npms.io搜索平台的流行度达到了 56%,但是数据显示在经验丰富(四年以上的 Node 开发)的程序员中流行度几乎高达 70%!此情况下偏好会随经验增加。 刚接触 Node.js 的开发者不知道什么是语义版本管理虽然71% 的调查对象在发布/使用模块时会用到语义版本管理,但是在我们看来,这个数字应该更高。每个人都应该使用语义版本控制,因为 npm 就用到了 semver。不用语义版本管理更新包很容易破坏Node.js 应用。 深挖数据集,我们可以发现大约有一半经验少于一年的Node 开发者不知道 semver 是什么或者没有使用 semver,而资深开发者们 semver 的接受度更高。 Node.js 团队快速引进新技术、工具据调查,35% Node 开发者能够几天内就为公司引进新的技术/工具/产品,29% 需要几周的时间。
深入研究数据,可以发现一种合理的模式引进新技术/工具所需的时间会随着公司规模递增。 调试是开发Node.js 的最大痛点我们也询问了Node 开发者,什么是他们开发的最大痛点。答案排名如下:
总结开发Node.js 仍是一项有意思、不断变化的体验。在此感谢抽时间回答问题的工程师们,希望本文的信息对整个 Node 社区是有价值的。 觉得这条资讯有帮助?请转发给更多人 关注技术最前线,看 IT 要闻 |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|