印前

Node.js案例 - 2016企业使用Node来作甚| @RisingStack

印前 · 2017-01-09翻译 · 902阅读 原文链接

之前发表了一篇总结企业如何使用Node.js的文章,我们非常惊讶能收到如此多人的赞赏,所以我们决定继续这个主题,并对使用Node构建软件产品的知名公司介绍更多。

本文意在介绍Node.js案例,介绍了Groupon,Lowe's Home Improvement 还有Skycatch这几个公司如何成功地用Node.js部署企业应用程序。这些案例研究源自Node Foundation的企业对话系列。如果你很好奇我们为什么加入Node Fundation,它的目的又是作何,请前往这里.

Groupon使用Node.js重构整个web层

Adam Geitgey是首个参与Node Foundation 企业对话系列的人,他已在最大的电子商务公司之一——Groupon担任软件工程经理5年。

他初入公司时,公司还是个主要使用Ruby on Rails的网店系统,一切都要作为一个巨大的单片应用程序运行。这样运行了很长一段时间都没有问题,但最终,它变得越来越难维护,他们似乎要放弃它。

此外,Groupon近几年做了许多收购,因此,除了他们的Ruby on Rails栈,他们最终在欧洲还有个新的Java栈,在南美洲有个PHP栈。

Groupon意识到需要替换当前技术栈,所以在大约3-4年前,他们开始寻找一个更适合的软件平台。

选择Node的原因

Groupon决定采用Node.js出于以下原因:

  • JavaScript接近通用语言,所以它学习和工作的成本更低,并且开发人员间也更容易交流。

  • Node.js应用程序的扩展在测试中运行良好。Node不仅统一了他们的开发语言而且在某些情况下为他们提供性能优化。

  • Node开发人员可以重用写过的代码元素,这时不时能带来极大的便利。

  • Node.js在Groupon是最统一的平台,即使他们用Java写了很多后端服务,使用Java的框架和方法也多种多样。但Nodejs提供了一个方法,能将软件一大块一举移动到一个平台上。

Groupon的工程团队最终决定用Node.js重构了整个web层。在重构过程中,Adam的任务是管理团队开发平台以及其他团队用于在生产环境中构建和运送Node应用的框架。

The team also released several open-source libraries that they built along the way: 该团队一路构建时也发布了几个自建的开源库:

  • gofer,一个用于与后端服务对话的API客户端库。

  • node cached,Node.js的缓存库。

如今Groupon在多个平台上均使用Node:

  • 大约3-400个后端服务使用Node.js混合Java和Ruby运行。

  • 他们使用Node做为API集成层。

  • 他们所有的客户端app,包括网站都使用Node.

当前,Groupon在生产中的有70个Node.js的app,这些app在30个国家都有使用。总的来说,Groupon在前端大量使用Node.js,各处也都有几处后端用途。

Groupon的Node前景

对于未来,他们完全相信值得为web平台投资Node。现在他们所有的产品服务都建立在Node4之上,但他们早已对Node6心怀期待,而且还正在等待长期支持版本出世。

在过去,由于Groupon使用Ruby,导致他们已经使用了非常多CoffeeScript,这是一个绝好的机会帮助他们最终迁离CoffeeScript然后规范纯JavaScript。

Another big project Groupon is working on is moving from a model where developers maintain their own servers to a model where the company provides them with clusters of servers and their apps run on them - more like a Heroku model. Groupon另一个在运行的大项目是从由开发人员维护自己的服务器模式转移到将app运行在由其他公司提供的服务集群上的模式——更像Heroku模式。

使Node.js调试更容易 - 查看 Trace by RisingStack!

Node.js:Skycatch的黏合剂

Andre Deutmeyer是Node Foundation企业对话系列的下一个参与者,他在Skycatch的职责是领导web基础架构和开发团队。

Skycatch是一家帮助进行捕获,管理和分析商业无人机数据的数据公司,它将构造或挖掘站点视为需要查询的数据库。现有的工具创建时非常困难又耗时,如编写原始SQL查询的工具,但是该公司的解决方案使得从站点中提取可操作数据变得垂手而得。

Skycatch拥有一个由20位开发成员组成的跨职能小团队,正如我已提过的,Andre的职责是领导web,基础架构,以及开发团队。他参与架构和扩展数据处理,因为他的目标是可靠并时效地传输你发送的数据。

What helps them with that? Of course, Node.js, but where do they use it? 什么工具能令他们做这样的事呢?当然是Node.js,但是他们在哪里用到的它呢?

"你能想得到的所有地方我们都用了Node——Node是我们的黏合剂"

他们把Node运用在无人机上,并通过他们的管理人员结合iOS的app进行管理.几乎他们公司全部后端服务都是运行在Node上。对于所有的数据处理,他们有很多微服务,通过Node来保持这些微服务之间顺利交互。

Skycatch公司使用Node.js的好处

Node has a great impact on the development at Skycatch, as Andre says: Node对Skycatch公司的开发具有深远的影响,正如Andre所说:

“你无法真正给从前端开发顺利迁移到服务端体系风格加上扩展容易的这种能力估价,因为从前后端间迁移对它来说小菜一碟。相比我们选择另一种语言在服务器上运行使用Node更容易得多”

他们公司有很多web,API,以及数据处理的工作。因此,开发人员在项目中可以找到他们更喜欢的工作,由于编程语言根本不成问题,他们从这种工作跳到那种工作中也不会产生巨大的心理负担。

Skycatch公司Node.js的前景

最近他们一直关注的AWS Lambda发布了对Node4的支持。从那时起,为了充分利用AWS Lambda提供的基础设施,他们急切地开始编码大量小型服务。他们是个小团队,所以他们想专注于产品而非不得以去扩展基础设施,所以使用AWS Lambda扩展基础设施是完美的选择。

Lowe's Home Improvement对Node.js的别致运用

Rick Adam最近参与到Node Foundation企业对话系列。他是负责Lowe’s Home Improvement公司数字接口IT应用组合的经理。

他在Lowe's公司的职责是管理应用程序和推动该公司数字属性的表示层的团队。他管理着一个25人开发团队,其中包括软件架构团队。

Lowe's公司的历史以及它如何运用到Node.js

渡过2007-2008年的经济衰退期后,该公司开始发现,国内市场持续增长,需要进一步投资到数字化空间。

随着新的消费技术开始在智能机、平板上出现,公司开始将Lowe's Digital不仅视为一个有价值的销售渠道,也将其视为一个实际的销售驱动力。

从那时起,他们就开始构建由2-3个web开发人员的工程团队。

Killing the Monolith

由于公司的应用程序是巨大的单片应用,想要发布或是引入任何细小的改变都是一个艰巨的过程所以他们开始寻求一种新的技术。

由于Lowe's是零售企业,他们首要任务是推动客户完成一系列选购过程,并使他们能完成结账流程。然而,在那段时间里,有些小事情如要求产品列表页文本改变,整个应用程序都要更新,而且单片应用需要被再次打包或部署——这削弱了快速移动的能力。

最终,背后的风险和质量保证因此变得非常艰巨,以至于他们的业务和IT从业人员不能轻易跟上业务所需步伐。 尽管他们研究过大量现成软件解决方案或更大的应用程序来驱动他们的数字资产,但传统上,数字资产不是他们程序的一部分,甚至也不是开源技术,然而,他们开始重新思考他们的应用程序组合,并想出引入一个更开源的源代码软件或解决方案。

Lowe's数字团队首当其冲,尝试着推动他们的技术向前迈进。为能在桌面提供一个全新的体验,他们正在为www.lowes.com 以及他们的移动站点重构和重新设计项目。

在这个项目中,他们开始研究业务、品牌所需的正确技术栈,这同时也促进他们在2年前开始使用Node.js。

Lowe's选择Node.js如何获益

当他们关注Node.js时,发现由于他们这个优秀的web开发团队早已熟悉JavaScript,这会带来极大便利,因此,他们无需再寻找新的人才或一个身怀多技的人。

“我们已经有个非常优秀的团队,而应有程序只有达到我们的目标才有意义!”

在他们的代理API请求的web层方面,Node简直是一个完美的技术。同时,Lowe’s公司从公司本身和从他们引入的技术都获得很大的成长。

“It's been exciting to see the growth and the maturity of our development of acumen and where we are going to take the brand.” “真开心能看到我们开发的智慧的成长和成熟,我们将选择Node”

他们喜欢Node的其中一个原因是异步模式,它能同时调用多个服务。当它们都完成后,他们可以用微服务模型来渲染结果。

"它提供一个页面的体验调用5个不同的小服务而无需用传统的瀑布方法。"

Node有很好的的表现,尤其是在扩展方面。相比传统使用Java来渲染页面使用Node.js的应用程序花费较少的资源。 使用Node.js还有个好处:重复利用他们的前端开发人员的技能——JavaScript,用于后端。这个好处特别有用,因为以前他们团队之间有隔离,后端成员是Java,前端使用CSS,JavaScript,还有HTML.

通过使用Node.js,工程团队能够完全负责整个技术栈,从后端通过视图层,到前端交互。他们能够重用已经精通的JavaScript和HTML资源深入Node.js。

现在他们可以很快地将新的功能集合在一起,甚至可以做原型来做研究和一些用户测试。然后把这个想法带到到产品级别并发布它,而不会将其应用程序栈的其他部分置于风险之中。Rick甚至说:

“Node.js真的打开了这里的潜在视角,我们的想法与过去6年能够想到的都不同。”

Node.js案例:结语

正如Node.js已经指出的,公司无论在开发人员还是应用程序级别上采用Node.js都可以受益匪浅,特别是当应用程序需要考虑性能和扩展性时。

相关文章