LinkedIn缘何抛弃Ruby,转投NodeJS怀抱?

记得在2012年10月份的时候,鉴于性能和可扩展性方面的原因,LinkedIn将其移动设施的后台Ruby on Rails替换成了Node.js。那么为什么要做出这样的决策,Node.js又比Ruby强在哪里呢?下面一起来为你解答。

Node.js——基于JavaScript的服务器端软件平台,它的作用主要是用于构建可伸缩的网络应用程序,在过去的几年里它已经风靡于全球众多开发商。Node.js使用一个事件驱动的、非阻塞I/O模型,这使得它的体积更小、效果更佳,适合运行在分布式设备里实时数据密集型的应用程序上。正是由于这些强大的优势,才吸引了大量的网站迁移到Node.js平台。其中就包括LinkedIn。

LinkedIn最初是建立在Ruby平台上,包括6万行代码,但是在2011年下半年的时候,LinkedIn开始利用Node.js来重建他们的核心移动服务,旨在提高它的服务性能。与此同时,重建过程也是一项简化过程,最终将代码缩减到2千行。你可能会问:为什么LinkedIn选择Node.js?主持这项任务的项目负责人Kiran Prasad给出了一些原因。Node.js之所以最后被选中,是因为它提供了一些好处:

  • 更高的性能,在特定场景下Node.js能比Rails快20倍。
  • 使用3个服务器而不是30个就能应对10倍的流量增长。
  • 前端工程师能够进行后端代码的开发,两个团队实际上合二为一了。

下面给出详细解释:

代码减少的最大原因是我们当前代码库实质上是framework-free,这意味着原来的代码里有很多是冗余的,应该被去掉。

第二个原因主要是和LinkedIn现在正在采用的函数式编程有关,这跟面向对象的实现途径截然不同,不过后来证明函数式编程对于LinkedIn来说是一个重要的转变。在Ruby平台中,最常见的方式是创建一个可以封装每一个通信和类型的对象。Ruby实际上是一种函数式语言,但是它有一个比JavaScript更强大的类和对象的概念。所以在早期的代码库里,开发者有很多抽象层和对象层,而这些抽象层和对象层是在更大的组件化、可分解化和可重用性的前提下创建的。不过现在回想起来,那时候的这些动作都是多余的。

另一个减少代码的重要原因是MVC(model-view-controller)模型背后的动力,至少MVC模型可以在移动设备和Web基础系统之间能够做出更好的选择。在此之前,LinkedIn有很多服务器端呈现,现在随着模板和视图不断地向客户端转移,因此导致大量的呈现代码是多余的,缩减代码是必不可少的。之后出现的情况就是人们对后端技术的信任和依赖程度不断的加重,许多先进的东西也慢慢的出现了。这就意味着没必要像之前那样使用巨大的代码块了。

中国现在是一个拥有庞大网民数量的网络市场,LinkedIn在中国无疑会获得巨大的利润。但是LinkedIn紧随其后的问题是如何应对当前技术架构上的挑战。不过,LinkedIn迁移到Node.js将会一直保持之前的良好表现,并且在扩大市场的前提下将会更加的从容。


原文 Why does LinkedIn migrate to NodeJS from Ruby?
翻译 ITeye

你可能感兴趣的:(linkedin,ruby-on-rails,node.js)