BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

PayPal从Java切换到JavaScript

| 作者 Abel Avram 关注 7 他的粉丝 ,译者 马德奎 关注 0 他的粉丝 发布于 2013年12月4日. 估计阅读时间: 5 分钟 | Google、Facebook、Pinterest、阿里、腾讯 等顶尖技术团队的上百个可供参考的架构实例!

已经决定使用JavaScript开发Web应用程序,从浏览器一直到后端服务器,并放弃了使用JSP/Java编写的遗留代码。

PayPal技术总监Jeff Harrell在两篇博文中(解放我的UI第一部分:Dust JavaScript模板、开源等PayPal的Node.js)解释了他们做出这一决定的原因,并对Web应用程序开发从Java/JSP切换到完全的JavaScript/Node.js技术栈的过程中所产生的若干结论进行了说明。

据Harrell说,PayPal的网站已经积累了大量的技术债务,他们想要一种“可以使他们摆脱债务而又能带来更大产品灵活性和创新的技术栈”。最初,在使用Web技术的前端工程师和使用Java编码的后端工程师之间存在着巨大的鸿沟。当用户体验设计人员想草绘一些页面时,为了使它们运行,他们不得不要求Java程序员做一些后端编码。这与他们的精益用户体验开发模型不相符:

当时,我们的UI应用程序基于Java和JSP,使用了一个无弹性、紧耦合而又难以快速行动的专有解决方案。我们的团队发现它与精益用户体验开发模型不相符,而且无法快速行动,因此,他们用脚本语言构建原型,与用户一起测试,然后将代码移植到产品栈中。

他们想要一个“从底层服务器技术解耦并能使UI设计独立于应用程序语言的模板[解决方案]”,而且它可以工作在多种环境中。他们决定选用Dust.js——一个由LinkedIn支持的模板框架——,再加上Twitter的BootstrapBower,后者是一个面向Web的包管理器。之后又加入了LESSRequireJSBackbone.jsGruntMocha等其它部分。

PayPal的部分页面已经经过重新设计,但他们仍然还有部分页面使用遗留技术栈:

……我们有C++/XSL和Java/JSP两个遗留技术栈,随着继续推进,我们不打算留下这些UI。JavaScript模板是理想之选。在C++技术栈上,我们构建了一个使用V8引擎执行Dust本地渲染的库——其速度惊人的快!在Java端,我们使用Spring ViewResolver和Rhino集成Dust来渲染页面。

当时,他们还开始用Node.js进行新页面的原型设计,并认为它“非常巧妙”,进而决定在生产环境对其进行试用。为了达到这一目的,他们还构建了Kraken.js,这是一个位于以Node.js为基础的Web框架Express之上的 “约定层”。(PayPal最近开源了Kraken.js。)第一个使用Node.js完成的应用程序是账户概览页,据Harrell说,该页面是PayPal的一个最经常访问页面。但是,由于担心Node.js应用程序可能扩展性不好,他们决定创建一个等效的Java应用程序,一旦Node.js应用程序不能正常运行,就可以回退到Java应用程序。下面是关于两种应用程序开发所需工作量的几个结论:

 

Java/Spring

JavaScript/Node.js

设置时间

0

2个月

开发

大约5个月

大约3个月

工程师

5

2

代码行数

未说明

未说明,占Java应用程序的66%

JavaScript团队需要两个月的时间进行基础设施的初始设置,但他们创建具有相同功能的应用程序用人更少、耗时更短。他们在生产环境硬件上运行测试套件,得出的结论是Node.js应用程序的性能要优于Java应用程序:

Node.js应用程序每秒服务的请求数是Java应用程序的两倍。更为有趣的是,在最初的性能结果的产生过程中,Node.js应用程序使用了单核,而Java应用程序使用了五核。我们打算进一步增大这种差异。

而且:

对于同一页面,Node.js应用程序的平均响应时间减少了35%。这使得页面提供时间快了200毫秒——用户可以明显地感觉到这种变化。

结果,PayPal开始在生产环境中使用了尚处于测试阶段的Node.js应用程序,并决定“今后所有面向客户的Web应用程序均基于Node.js构建,”,而现有的部分应用程序也将迁移到Node.js。

据Harrell说,从浏览器到服务器都使用JavaScript的一个好处是,形成了一个“允许我们在技术栈的任何层次理解和响应用户需求”的团队,消除了前端开发与后端开发之间的鸿沟。

查看英文原文:PayPal Switches from Java to JavaScript

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

這篇文章我早先時候已經翻譯過了 by Keyue Hu

看来这是个方向 by nick huang

看来这是个方向,以后JavaScript要一统前端和后端的开发了。

听到这个消息感觉很振奋 by Chen Rong

js应该玩得更好,更有用~

Node.js 比 java快10倍? by wang xinkai

有用过Node.js 的给解释一下吗? 常规操作能做到多少QPS?我看不是JAVA烂,是遗留的代码太烂了吧。要么是用的容器太烂了?

猜测. by 刘 文豪

我觉得他们可能只是用了Node.js写AJAX应用,以为Java不可以。
不过使用Node.js可以减少工程师倒是真的,因为一个写Node.Js的人基本上是从前端到后端。

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

5 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT