PayPal為什麼從Java遷移到Node.js 效能提高一倍 檔案程式碼減少44%
大家都知道PayPal是另一家遷移到Node.js平臺的大型公司,Jeff Harrell的這篇博文 Node.js at PayPal 解釋了為什麼從Java遷移出來的原因: 開發效率提高一倍(2個人用更少的時間幹了5個人的活), 效能提高一倍, 程式碼量減少33%, 檔案減少40%:
(小編: 個人認為深層次原因是Java正在越來越走向封閉,而且變得越來越複雜而且oracle正在對Java收費,參見: Oracle計劃釋出收費版JVM , 這促使了越來越多的公司加入了去Java化的隊伍)
外面有很多人說PayPal正在遷移到node.js平臺。我很高興地在這裡宣佈,傳言是真的,我們正在從Java遷移至node.js
由於歷史原因,我們的工程師一直分為兩撥人,一撥在瀏覽器上寫程式碼(HTML,CSS,JavaScript);另一撥用Java寫應用層的程式碼。想象一下,一個寫HTML的不得不去叫一個寫Java將A/B兩個頁面連結到一起嗎?我們正在這樣幹,我們稱這樣的人為全端工程師,那些即可以設計精美介面和伺服器後臺的那些人。現在前後端已經沒有界限了,這曾經是阻礙PayPal發現的一個很大的瓶頸。
Node.js幫助我們將前、後端合二為一,現在我們一個全端團隊即可解決使用者的所有問題。
早期採納
像其他人一樣,我們剛開始使用node.js做了一些demo用的原型程式。跟很多人一樣,她表現出來的超高效能,讓我們最終決定把她放到線上去。
我們最初使用express來路由請求,nconf用來配置,grunt用來建立tasks。Express非常普及,但是我們發現Express在多個團隊協作時表現出的可伸縮性不足,它並不適合所有場合。Expres非常靈活,但在大型團隊開發上的可擴充套件性不佳。最終我們的隊員基於原生的node.js,並建立了Karken.js;她並不是一個框架,更像是一個規範,但相對於express,她更適合大型團隊的擴充套件。我們希望我們的工程師專注他們的應用,而不是專注他們的執行環境。
我們已經在內部使用kraken.js好幾個月了(我們馬上會把他開源的!)我們的工程師非常渴望這個內部框架能儘快上線。
(小編:預測karken.js即將是,另一個超火的後端框架,火熱程度參考twitter的bootstrap)
將node.js佈署到線上
我們第一個採用nodejs的產品不是一個小的應用;是我們的瀏覽量最多的使用者首頁。我們希望步子邁得大一點,但是我們清楚知道其中的風險,所以我們同時還並行地執行了一個Java的程式。我們在開發和擴充套件Java方面非常有經驗。所以一旦node.js應用出問題了,我們可以立即切回Java。不過,同時我們也發現了一些非常有意思的資料。
開發
從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下的同樣的工作,並且吃力不討好。)
這是一個非常鼓舞人的證據,我們似乎應該更快地遷移到JavaScript平臺上去。我們立即做了一個決定,暫停Java應用的開發,全心全意開發JavaScript應用。這對開發Java專案的工程師來說是個好訊息,他們已經消除了對node.js的疑慮,非常高興地投入到了並行的node.js開發上來,這樣我們的開發效率提高了兩倍。
效能
效能是一個非常有意思和具有爭議性的話題。在我們這,我們有兩個平臺實現完全一樣功能的程式;一個是使用基於Spring的內部Java框架;另一個是基於kraken.js,express,dust.js和其他開源框架。 這些程式包含三個API,每個API來響應2到5個請求,由Dust來模擬獲取資料和顯示頁面。
我們用線上的環境去測試這兩個應用,並收集了完成響應的時間和請求數。
node.js vs Java 效能對比
在這張圖上你可以看到node.js應用的優勢:
每秒請求數量是Java的兩倍。不過更有意思的是我們僅使用了單核的node去跟5核的Java來對比,我們非常希望將來繼承擴大node.js的優勢。
渲染相同的頁面,node.js節省了35%的時間。即每個頁面節約了200豪秒,使用者可以清楚地感覺到這樣的區別。
未來
我們將繼續使用node.js來構建我們的Web應用。像我們正在開發的那些門戶,和已經上線的使用者概覽頁面。還有一打正在進入Beta測試的那些工程,我們會繼續分享我們在上線過程中的經驗,資料。對於PayPal來說這是一個另人激動的時刻。
相關文章
- PayPal從Java遷移到Node.jsJavaNode.js
- PayPal從Java遷移到Node.js之我見JavaNode.js
- 我為什麼從Redux遷移到了MobxRedux
- 為什麼我會從MongoDB遷移到PostgreSQLMongoDBSQL
- 為什麼我們要從 NodeJS 遷移到 Ruby on RailsNodeJSAI
- 為什麼你需要將程式碼遷移到ASP.NET Core 2.0?ASP.NET
- 從檔案系統遷移到ASM上ASM
- oralce 從檔案系統遷移到ASMASM
- Docker檔案遷移到TF卡或者隨身碟,最大限度減少空間佔用Docker
- 為什麼把 dig 遷移到 wire
- 我為什麼減少使用C++ (轉)C++
- 從本地MySQL遷移到雲資料庫,為什麼是Amazon Aurora?MySql資料庫
- 將spfile從ASM裡遷移到檔案系統ASM
- 資料庫從檔案系統遷移到ASM資料庫ASM
- oracle將控制檔案從裸裝置遷移到檔案系統Oracle
- 為什麼你會遷移到Python3.5 ?Python
- 將資料庫從ASM遷移到檔案系統資料庫ASM
- 將資料庫從檔案系統遷移到ASM資料庫ASM
- 我們為什麼以及是如何從Angular.js遷移到Vue.js?AngularVue.js
- 我們為什麼以及是如何從 Angular.js 遷移到 Vue.js?AngularVue.js
- 我們為什麼以及是如何從Angular.js 遷移到 Vue.js?AngularVue.js
- 為什麼程式設計師應該少寫程式碼程式設計師
- 使用MVVM減少控制器程式碼實戰(減少56%)MVVM
- c盤滿了檔案怎麼遷移 軟體怎麼從c盤移到d盤
- 利用RMAN將資料庫從檔案系統遷移到ASM資料庫ASM
- 為什麼程式設計師要儘量少寫程式碼程式設計師
- 成功的專案管理策略:減少成本,提高質量專案管理
- 從Perforce遷移到GitGit
- 提高 Java 程式碼效能的各種技巧Java
- javascript提高效能方式之減少dom元素訪問次數JavaScript
- 從Node Redis遷移到Ioredis後CPU 使用率減少了 30% - AblyRedis
- 為什麼沿著梯度的反向函式值減少的最多梯度函式
- Bowery為什麼從Node.js轉向 GoNode.jsGo
- 為何我們前端從Vue 2遷移到Svelte?前端Vue
- 如何在Mac上減少PDF檔案大小Mac
- 將應用程式從Sql Server遷移到OracleSQLServerOracle
- 修改他人程式碼:怎麼才能減少釋出Bug概率?
- 使用RAM將檔案系統遷移到ASMASM