你們都知道 PayPal 是另外一家遷移到 Node.js 平臺的大型公司,Jeff Harrell 的這篇博文 Node.js at PayPal 解釋了爲何從Java遷移出來的緣由:開發效率提升一倍(2我的用更少的時間幹了5我的的活),性能提升一倍,代碼量減小33%, 文件減小40%。node
(小編:我的認爲深層次緣由是 Java 正在愈來愈走向封閉,並且變得愈來愈複雜並且 oracle 正在對 Java 收費,參見:Oracle 計劃發佈收費版 JVM,這促使了愈來愈多的公司加入了去Java化的隊伍)程序員
外面有不少人說PayPal正在遷移到node.js平臺。我很高興地在這裏宣佈,傳言是真的,咱們正在從Java遷移至node.js。express
因爲歷史緣由,咱們的工程師一直分爲兩撥人,一撥在瀏覽器上寫代碼(HTML,CSS,JavaScript);另外一撥用 Java 寫應用層的代碼。想象一下,一個寫 HTML 的不得不去叫一個寫 Java 將 A/B 兩個頁面連接到一塊兒嗎?咱們正在這樣幹,咱們稱這樣的人爲全端工程師,那些便可以設計精美界面和服務器後臺的那些人。如今先後端已經沒有界限了,這曾經是阻礙PayPal發現的一個很大的瓶頸。bootstrap
Node.js 幫助咱們將前、後端合二爲一,如今咱們一個全端團隊便可解決用戶的全部問題。segmentfault
像其餘人同樣,咱們剛開始使用 node.js 作了一些 demo 用的原型程序。跟不少人同樣,她表現出來的超高性能,讓咱們最終決定把她放到線上去。後端
咱們最初使用 express 來路由請求,nconf 用來配置,grunt 用來建立 tasks。Express 很是普及,可是咱們發現 Express 在多個團隊協做時表現出的可伸縮性不足,它並不適合全部場合。Expres 很是靈活,但在大型團隊開發上的可擴展性不佳。最終咱們的隊員基於原生的node.js,並建立了Karken.js;她並非一個框架,更像是一個規範,但相對於 express,她更適合大型團隊的擴展。咱們但願咱們的工程師專一他們的應用,而不是專一他們的運行環境。瀏覽器
咱們已經在內部使用 kraken.js 好幾個月了(咱們立刻會把他開源的!)咱們的工程師很是渴望這個內部框架能儘快上線。服務器
(小編:預測 karken.js 即將是,另外一個超火的後端框架,火熱程度參考 twitter 的 bootstrap )session
咱們第一個採用 nodejs 的產品不是一個小的應用;是咱們的瀏覽量最多的用戶首頁。咱們但願步子邁得大一點,可是咱們清楚知道其中的風險,因此咱們同時還並行地運行了一個 Java 的程序。咱們在開發和擴展 Java 方面很是有經驗。因此一旦 node.js 應用出問題了,咱們能夠當即切回 Java。不過,同時咱們也發現了一些很是有意思的數據。oracle
從1月份開始,咱們花了幾個月的時間來搭建 node.js 的基礎設施。好比:sessions(會話),centralized logging(集中日誌),keystores(存儲)。在這期間咱們有5位 Java 工程師在開發 Java。在開發了兩個月後,兩位工程師開始開發 node.js 應用。在6月初兩個團隊的開發進度已經同樣了,二者的功能徹底同樣。開發 node.js 應用的那個小團隊,儘管推遲了兩個月,可是很快遇上了。這裏咱們對這些相同功能作的一些單元測試得出的結果:
Node.js的是:
更少的人開發的 node.js 應用比 Java 的快一倍;
節省了33%的代碼量;
少了40的文件;
(小編,這裏做者的意思並非 Java 程序員的素質沒有 node.js 的好,Java 語言的特色決定她須要更多的人,更多的時間,更多的代碼去完成在 node.js 下的一樣的工做,而且吃力不討好。參考:他們爲何說面向對象有問題,探討面向對象的一些缺陷 ;性能測評:Node.JS 比 Java EE 快 20% )
這是一個很是鼓舞人的證據,咱們彷佛應該更快地遷移到 JavaScript 平臺上去。咱們當即作了一個決定,暫停 Java 應用的開發,全心全意開發 JavaScript 應用。這對開發 Java 項目的工程師來講是個好消息,他們已經消除了對 node.js 的疑慮,很是高興地投入到了並行的 node.js開發上來,這樣咱們的開發效率提升了兩倍。
性能是一個很是有意思和具備爭議性的話題。在咱們這,咱們有兩個平臺實現徹底同樣功能的程序;一個是使用基於 Spring 的內部 Java 框架;另外一個是基於 kraken.js,express,dust.js 和其餘開源框架。 這些程序包含三個 API,每一個 API 來響應 2 到 5 個請求,由Dust 來模擬獲取數據和顯示頁面。
咱們用線上的環境去測試這兩個應用,並收集了完成響應的時間和請求數。
在這張圖上你能夠看到 node.js 應用的優點:
每秒請求數量是Java的兩倍。不過更有意思的是咱們僅使用了單核的node去跟5核的Java來對比,咱們很是但願未來繼承擴大 node.js 的優點。
渲染相同的頁面,node.js 節省了35%的時間。即每一個頁面節約了 200 豪秒,用戶能夠清楚地感受到這樣的區別。
咱們將繼續使用 node.js 來構建咱們的Web應用。像咱們正在開發的那些門戶,和已經上線的用戶概覽頁面。還有一打正在進入 Beta 測試的那些工程,咱們會繼續分享咱們在上線過程當中的經驗,數據。對於 PayPal 來講這是一個另人激動的時刻。
原文:Node.js at PayPal
翻譯轉載自:OurJS