Node.js 在 PayPal實戰

以前有過一個談了不少關於PayPal移動到node.js的一個應用平臺。做爲設置個人免費用戶界面的第1部分的延續,我很高興地說,這些傳言是真的,咱們的Web應用程序正在從Java遷移到JavaScript和node.js中。javascript

從歷史上看,咱們工程團隊的代碼已經被分割成瀏覽器層(使用HTML , CSS和JavaScript )和應用層(使用Java ) 。試想一下,一個HTML的開發人員要求一個Java開發人員將「A」和「B」頁面鏈接在一塊兒,可是這就是咱們。該模型經過引入全棧工程師,落後那些可以創造一個好的用戶界面,而後生成應用程序去支持它。稱他們爲獨角獸,可是這就是咱們想要的,在PayPal中,主要阻滯劑是咱們在瀏覽器和服務器之間創建的人工邊界。java

Node.js 使用javascript,經過創建瀏覽器和服務端的應用程序幫助咱們解決了這個問題。它統一了咱們團隊,讓咱們在技術堆棧上了解和應對咱們用戶的任何需求。node

早期使用Node.jsweb

和其餘同樣,咱們把Node.js 做爲一個原型的平臺。同其餘同樣,它表現了很好的性能,咱們決定在產品上使用它。
最開始的時候,咱們使用express做爲路由,nconf來做爲配置,grunt來創建工做流。咱們特別喜歡express框架的普及,卻發現它並無在多個開發團隊很好地擴展。express是非強制性的,並容許您在任何方式合適地去設置一個服務器。它很是靈活,但不利於在大型團隊中保持一致。隨着時間的推移,咱們看到的模式脫穎而出,更多的人拿起node.js的轉身進入Kraken.js ,它不是一個框架自己,而是基於express的一個層,容許它擴展到更大的組織。咱們但願咱們的工程師專一於打造本身的應用程序,而不是僅僅着眼於創建本身的環境。
到如今爲止,咱們在內部使用kraken.js 已經有幾個月了(不久,咱們將會開源),咱們的工程師團隊指望將它變成一個實時的公司內部的node.js應用程序。express

促使Node.js 到產品上瀏覽器

咱們首先在產品上嘗試node.js不是一個小的應用程序,它是咱們的帳目總覽頁面,這個頁面具備很大的流量。咱們打算去使用,可是咱們也得下降風險,服務器

因而咱們同時創建了一個java應用程序。咱們知道如何去部署和度量java應用程序,所以若是在node.js 程序出了任何問題,咱們可以迅速的切換到java上來。它提供對一些數據的設置。session

部署app

咱們在1月份就開始了,它花費了咱們幾個月的時間去研究node.js必要的基礎東西。好比sessions, centralized logging, keystores。在這段時間內咱們有5名工程師在使用java工做。在2個月的java開發後,2名工程師開始使用node.js 並行開發 app。在7月初的時候,他們相互溝通了一下,他們的應用程序具備相同功能。node.js的應用程序,是以一個更小的團隊在2個月後開始,可是很快就追上了。有幾個細節脫穎而出後,咱們運行測試案例,兩個應用程序經過相同的功能測試。node.js 是:框架

1)更少的人去創建,幾乎是2倍甚至更快的速度
2)少了33% 的代碼
3)創建40%甚至更少的文件

這個提供了一個使人鼓舞的消息代表javascript能夠更快的工做。咱們都贊成而且作了一個決定:將java應用程序擱置了。可是問題是java工程師在項目上,開始的時候對轉向node.js而且很高興的在咱們的工做流中提交代碼,提升咱們雙倍的生產力不太自信。

性能

性能是一個高興而有爭議性的話題,在咱們的案例中,咱們一個團隊有2套功能相同的應用程序:一個使用java 基於Spring而另外一個基於kraken.js 使用 express, dust.js 和其餘的開源代碼。這個應用程序包含了3套路由,而且每一套路由2個或者5個請求,數據是經過Dust去渲染頁面的。

在咱們的測試路由中,咱們收集的數據是吞吐量和響應時間

你能看到在咱們的node.js 應用程序中:

1)與Java應用程序相比較,雙倍的每秒請求。更有趣的是,Node.js應用程序是單核,而在Java中五核。咱們但願進一步增長這個鴻溝。
2) 35%的跌幅,平均響應時間在同一頁。這致使響應200ms的快一些用戶確定會注意到。

對於這個結果我申明一下:咱們的框架使用2種不一樣的應用程序,它僅僅在不一樣的技術上的是一個對等測試。有可能你的區別更大。也就是說,咱們很是激動的看到了node.js表現出的性能。

將來

全部咱們的用戶將使用咱們用node.js構造的web應用程序。一些咱們已經在線上了,一些咱們正在開發,處理beta狀態。還有不少的應用程序咱們已經在遷移計劃中。咱們將會分享咱們線上的數據,對於PayPal工程師來講,這個是一個很是激動人心的時刻!

原文地址:https://www.paypal-engineering.com/2013/11/22/node-js-at-paypal/

相關文章
相關標籤/搜索