開發者如何使用 Node.js 的調查結果

古魯伊發表於2016-12-15

導讀

為了解開發者如何使用 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 成為資料庫首選

開發者如何使用 Node.js 的調查結果

根據結果,MongoDB 顯然是 Node.js 開發者的首選資料庫。大約 2/3 的參與者表示他們在自己的 Node.js 應用中使用 MongoDB。值得注意的是,在閱歷豐富的 Node 工程師當中,Redis 的人氣劇增,PostgreSQL 和 ElasticSearch 也是如此。

開發者如何使用 Node.js 的調查結果

“Redis 和 PostgreSQL 在富有經驗的開發者中人氣劇增”——@RisingStack #nodejs #survey

Redis 在快取解決方案上領先,但是許多開發者還沒有做這方面的處理。

開發者如何使用 Node.js 的調查結果

一半參與者表示在用 Redis 進行快取,但難以置信的是,有 45% 根本沒有快取方案。相互比對經驗豐富的程式設計師的答案,我們可以發現,相比於 Node.js 經驗少於 1 年的工程師,Redis 在 Node 長期使用者中的人氣相當高。

開發者如何使用 Node.js 的調查結果

訊息系統的流行度仍舊較低

根據調查,58% 的 Node.js 開發者沒有使用任何的訊息系統。這意味著開發者在自己的微服務系統中很少使用訊息,而用了 REST API,或者他們的系統不夠複雜。

開發者如何使用 Node.js 的調查結果

使用訊息系統的開發者表示他們大多用 RabbitMQ(24% 的調查物件)。如果我們只研究使用訊息系統的開發者的答案,那麼 RabbitMQ 遠勝於其它已有的解決方案。

開發者如何使用 Node.js 的調查結果

Node.js 應用大多在 AWS 上執行

根據調查,43% 的 Node.js 開發者用 AWS 來執行應用,但是自己執行資料中心也很普遍(34%),尤其是在企業間(幾乎 50% 有自己的資料中心)。這也並不奇怪。

開發者如何使用 Node.js 的調查結果

“43% 的 Node.js 開發者用 AWS 執行應用”——@RisingStack #nodejs #survey @awscloud

但有意思的是,Heroku 和 DigitalOcean 並駕齊驅成為 Node.js 第二大雲平臺。根據資料,DigitalOcean 在小公司(少於 50 人)間更流行,而 Heroku 作為企業解決方案也很強。

開發者如何使用 Node.js 的調查結果

Docker 在 Node 社群中獨領風騷

目前,Docker container 是多數 Node.js 開發者的首選解決方案(47% 的調查物件表示在用——而 container 技術使用者中則高達 73%)。Docker 似乎在所有規模的公司間都很流行,但資深程式設計師使用得更多(一年以上開發經驗的)。

開發者如何使用 Node.js 的調查結果

“Docker container 是多數 Node.js 開發者的首選方案。”——@RisingStack #nodejs #survey @docker

64% 的調查物件表示使用 container 技術——意味著 container 的流行度從 2016 年 1 月 Node.js 調查 的 45% 顯著提升了 20%。

開發者如何使用 Node.js 的調查結果

Amazon Container Service 是執行 container 的首選

開發者如何使用 Node.js 的調查結果

雖然 Amazon Container Service 是執行 Node.js container 的首選,但值得注意的是,根據我們的調查,Kubernetes 也佔比 25%,並且似乎在企業 Node.js 開發者中尤其受歡迎。

開發者如何使用 Node.js 的調查結果

Node.js 開發

配置檔案比環境變數更加常用。

與證書相比,多數 Node 開發者(59% vs. 38%)更喜歡配置檔案。只有 29 位調查物件(3%)表示兩個都用。

開發者如何使用 Node.js 的調查結果

只用配置檔案有潛在的安全問題,因為這表明證書存放在倉庫中。如果你在 GitHub 的生產系統中有證書,那麼很快就會有無賴程式設計師來找麻煩。

為了安全性,建議使用環境變數,但是總的來說仍然可以用配置檔案。

Promise 主導非同步控制流

在 Node.js中,大部分核心庫都涉及回撥。結果表明 Node.js 使用者目前都傾向使用 promise。

開發者如何使用 Node.js 的調查結果

大概半年前,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.js 的調查結果

“大概 1/4 的 Node 開發者在應用中使用 console.log 定位 error。”——@RisingStack #nodejs #survey

進一步觀察資料可以發現更有經驗的開發者也傾向於 Node Inspector 和 Debug Module。

開發者如何使用 Node.js 的調查結果

APM 在 Node.js 社群中仍舊低迷

根據調查顯示,只有 1/4 Node.js 開發者使用 APM——應用效能監測工具——來識別應用問題。但是,資料集的趨勢表明 APM 使用率會隨著公司規模和開發者經驗而上升。

開發者如何使用 Node.js 的調查結果

SaaS CI 在 Node.js 社群的市場佔有率依然較低

根據調查物件的答案,使用 shell 指令碼是將程式碼推到測試或生產環境最普遍的方式。但是 Jenkins 目前在持續交付和整合平臺方面明顯勝出,並且隨著公司規模的擴大而更受歡迎。

開發者如何使用 Node.js 的調查結果

 

Node.js 開發者極少更新依賴

Node.js 應用強烈推薦經常更新依賴,因為 根據一項最近的調查,約 15% 的 npm 包帶有已知的漏洞,76% 的 Node 商店利用漏洞依賴。

開發者如何使用 Node.js 的調查結果

每週至少要更新一次依賴,否則應用就會時刻暴露在嚴重的攻擊下。根據調查,45% Node.js 開發者一個月以上更新一次依賴,27% 每月更新一次,只有 28% 回答至少每週更新一次依賴。

這些數字與公司規模和程式設計師經驗都沒有關係。

Node.js 開發者用 Google 找包

根據調查,大多數開發者用 Google 找包,並 決定應該使用哪一個。雖然在調查物件中, npmjs.org/npms.io 搜尋平臺的流行度達到了 56%,但是資料顯示在經驗豐富(四年以上的 Node 開發)的程式設計師中流行度幾乎高達 70%!此情況下偏好會隨經驗增加。

開發者如何使用 Node.js 的調查結果

剛接觸 Node.js 的開發者不知道什麼是語義版本管理

雖然 71% 的調查物件在釋出/使用模組時會用到語義版本管理,但是在我們看來,這個數字應該更高。每個人都應該使用語義版本控制,因為 npm 就用到了 semver。不用語義版本管理更新包很容易破壞 Node.js 應用。

開發者如何使用 Node.js 的調查結果

深挖資料集,我們可以發現大約有一半經驗少於一年的 Node 開發者不知道 semver 是什麼或者沒有使用 semver,而資深開發者們 semver 的接受度更高。

Node.js 團隊快速引進新技術、工具

據調查,35% Node 開發者能夠幾天內就為公司引進新的技術/工具/產品,29% 需要幾周的時間。

開發者如何使用 Node.js 的調查結果

“35% Node 開發者能夠幾天內為公司引進新的技術/工具”——@RisingStack #nodejs #survey

深入研究資料,可以發現一種合理的模式——引進新技術/工具所需的時間會隨著公司規模遞增。

除錯是開發 Node.js 的最大痛點

我們也詢問了 Node 開發者,什麼是他們開發的最大痛點。答案排名如下:

  • 除錯/效能分析/效能監測
  • 回撥和回撥地獄
  • 理解非同步程式設計
  • 依賴管理
  • 缺少統一規定/最佳實踐
  • 結構化
  • 糟糕的文件
  • 尋找合適的包

“開發 Node.js 最大的痛點是除錯。”——@RisingStack #nodejs #survey

總結

開發 Node.js 仍是一項有意思、不斷變化的體驗。在此感謝抽時間回答問題的工程師們,希望本文的資訊對整個 Node 社群是有價值的。

打賞支援我翻譯更多好文章,謝謝!

打賞譯者

打賞支援我翻譯更多好文章,謝謝!

任選一種支付方式

開發者如何使用 Node.js 的調查結果 開發者如何使用 Node.js 的調查結果

相關文章