为什么Node.js正在成为企业软件的宠儿?

在过去18个月以来Node.js应用呈现指数级增长,它从创新者Voxer (www.voxer.com) 和 Yammer (www.yammer.com) 采取的技术转变为主流大众技术,电子商务沃尔玛和paypal已经在Node上面下了大赌注,而世界上最大的读者新闻出版Mail Online (www.dailymail.co.uk) 已经采取Node,Netflix正在采取Node.JS.

下面我们可以看看NodeJS带来的业务好处:
快速创新与交付
互联网公司之间不断增加的竞争对手,交货速度和迭代能力成为市场领导者的关键特征。在竞争激烈的情况下,能够对终端用户及时响应,并将他们反馈结合到产品中,并且定期更新,NodeJS能够贯彻互联网思维的战术实现。

快乐的开发者
聘用顶尖人才是非常困难的,优秀的开发人员总是喜欢不断学习新的东西,使用新的技术。让开发商开心体现了一个组织的管理,作用不容小觑,快乐热情的开发意味着更好的软件,有乐趣和兴趣的人才会有激情。

PayPal的比尔·斯科特曾询问新员工如果面临为Facebook或PayPal雇佣的两个选择。前提是有同样的薪资或福利。“如果你能去Paypal做Node.js,为什么去Facebook做PHP?”

容易吸引和留住人才
确实你可以使用Java做任何事情,但是最好的程序员总是喜欢新的有趣的技术,这也是确实的,开发者希望使用新技术,激发更多更新的点子能被快速容易的表达出来。

高性能
Node能激发程序员开发高性能的数据服务,Node.js使应用程序避开与线程相关的问题,使得编写高性能的服务器真的很容易。

Paypal报道:每秒双倍于原来的请求数量,每个请求响应花费的时间比原来提高了35%或200毫秒。

沃尔玛实验室在2013年推出使用Node.js时有一个保险杠,在黑色周五他们把他们所有的移动通信通过Node.js系统,这是一年中最繁忙的购物时间。黑色周五沃尔玛的服务器并没有超过1%的CPU。支持2亿用户在线。

类似Groupon 使用Node重新实现他们的系统,导致页面加载时间提高了高达50%。

LinkedIn从Rail迁移到Node.js实现移动应用是一个老的故事,减少服务器数量从30个到3个,新系统是原来20倍之快。

易于维护和修改
使用 Node.js开发新的服务很容易,因为写一个Node-way的应用意味着从小的模块组合,它们类似管道一样接合在一起,而过时的传统的铁板一块的应用变得难以让新的需求加入。最终传统系统会在压力下变得不堪重负,因为它们不再是为变化的需求而设计了。

因为Node.js是一组织小的应用,而不是一个大的应用,它能应对修改,以及新功能的加入,这些都无需做出代码深度核心的修改。

产品化
Node.js程序是使用JavaScript开发, 这意味着前端和后端之间存在的隔阂被填平了, 这会导致显著的开发效率,它可能融合Web和后端队伍在一个团队,工作将更有效率,Node.js 打开了一个新的一扇大门,全栈式开发者将生活得更好。

Node.js 也有类似Maven的包管理器叫NPM, NPM的高效率杀死了依赖噩梦, Node也有庞大的社区,大量模块,超过 60,000 多。增长快速。

PayPal衡量出开发产品化提升两倍,相比Java程序员只需要一半数量的程序就可以做同样的事情,甚至更少时间。

Node.JS未来更美好
Eran Hammer 在 NodeDay (www.nodeday.com)宣布,沃尔玛将计划到2014年底全部电子商务系统使用Node.js

PayPal已经使用Node.js实现整个Web应用,在两年内Node将更加快速大规模使用。

尽管google还没有公开谈论他们使用Node.js,但是有证据显示他们在使用,一个在linkedin简单的简历搜索显示大约在google有200人使用Node.js,VentureBeat文章说:google无疑正在使用Node.js,甚至在不远将来将公开发布大家伙,他们只是换没有准备好公开谈论。

Yahoo在Node.js上已经用了很长时间,有200名程序员在整时间的使用Node.js,有800个公开模块和500个私有模块。

新的NodeJs采用事件如Netflix正在显示一个大的改变即将发生。

适合Node的领域
互联网
E-Commerce电子商务
支付处理
社交媒体
实时服务
媒体
企业Web服务

NodeJS可以让你做到:
雇佣一半的程序员开发产品
降低服务器数量
50%提高页面加载时间
在大公司之前雇佣顶级程序员。
让客户满意
让程序员快乐
留住员工服务更长时间

答案显而易见,问题是企业是否疯狂到竟然不去认真考虑一下Node.js?

[该贴被banq于2014-03-12 18:39修改过]

觉得好的js程序猿不好找。也是一个问题
[该贴被c3tc3tc3t于2014-03-13 10:27修改过]

2014-03-13 10:26 "@c3tc3tc3t"的内容
觉得好的js程序猿不好找 ...

是的,我也这么认为,NodeJS的事件驱动编程其实不是一般程序员就能掌握,普通编程是按顺序一行行写代码,理所当然认为电脑也是一行行执行,如同我们上普通台阶,完全依靠我们自己一个台阶一个台阶走上去,这个原来静止不动台阶变成了自动扶梯,那么就需要程序员有顺势而为的智慧,否则:

vertx不就是java版的nodejs么。。。为啥没nodejs火呢。。。

2014-03-13 12:40 "@lostalien"的内容
vertx不就是java版的nodejs么。。。为啥没nodejs火呢 ...

这里面原因比较多,可能原因是:vertx是瞄着nodejs去实现的,所以,不可能仿造者胜过原创,古玩收藏行业都讲究这个,更何况重视创新的高科技行业,这是我个人猜测的原因,其他还有语言方面。现在vertx有朝着事件总线EventBus方向发展可能。

Java和Scala在CPU密集型计算方面实现还是继续有自己的用武之地,比如大数据分析等等。

2014-03-15 09:53 "@flyzb"的内容
nodejs也有相应处理的办法 ...

是的通过子进程实现,但是我不是想特别较真,CPU密集型的任务不只是长任务计算这种类型,还有频繁交易事务型,对可靠性要求比较高的。总体来说,Java提供并行计算 Scala或Erlang的Actors模型对于大规模频繁交易处理还是很擅长的,比如证券交易等高频交易,吞吐量要求大,延迟要短,每笔交易又不能出错。

对于非苛刻条件下的应用,使用NodeJs 的MEAN足以应对,说白了,就是CRUD之类应用。

其实我也在思考nodejs最适合做什么。
对于后台逻辑而言,java/c#/scala都很成熟,是目前nodejs所不及的。所以是否可以考虑Server端用java之类的做,而web端用nodejs实现,这样可以结合2者的优点。

呵呵,这个论坛是否也可做一个这样的版本。
[该贴被flyzb于2014-03-16 11:00修改过]

2014-03-16 10:58 "@flyzb"的内容
是目前nodejs所不及的。所以是否可以考虑Server端用java之类的做,而web端用nodejs实现,这样可以结合2者的优点 ...

我认为不是先后依次的关系,而是并列的关系,也就是说Server端也可以用NodeJS完成,因为NodeJS是天然的微服务,因此只要Java也是微服务,通过Vertx之类多语言消息总线通讯就可以。

参考微服务:http://www.jdon.com/46204

2014-03-13 12:40 "@lostalien"的内容
vertx不就是java版的nodejs么。。。为啥没nodejs火呢。。。 ...

个人认为有2个原因:

1、vertx比nodejs入门曲线更高,需要知道java,(虽然开发可以用其它语言,ruby,python,javascript etc)。
2、生态圈没有nodejs成熟,看看module库的数量就知道了。

所以对于单一功能的项目,我选用vertx。比如,combohandler,站点访问统计,可以在 https://github.com/jianglibo 查看这两个项目,都是使用中的项目。