Groupon 為什麼從 RoR 遷移到 Node.js?

Geekon: I-Tier

上述博文提到了從 RoR app 到 SOA 的遷移,但沒有提到棄 RoR 改 Node.js 的原因。


文章里不是說了嗎?

主要原因是:

1,把SOA架構提到了最核心的高度,公共邏輯全部服務化,各個業務共享介面。這是剝離了ROR的服務層,大網站的必經之路。

2,適應50%的北美流量都來自於移動端的現實,採用一致的json介面是非常有利的。

可見富客戶端(前端mvc、移動版)的這種應用場景催生了統一介面(移動端、web網站共用一套網站介面)的流行,而nodejs以其優異的並髮長鏈接處理、前後端js同質化很適合他們的需求。

我想,他們必定在前端mvc上投入了大量精力。

現在的架構是:

web front-end mvc / mobile client &<--&> json &<--&> nodejs &<--&> service server (可能也是nodejs)

我猜想SOA這一層應該不是nodejs,也就是核心邏輯可能是其他語言開發的,畢竟用nodejs寫複雜業務邏輯簡直是噩夢。


我就會猜到肯定有人在知乎問這個問題。

昨天晚上看到這個新聞之後,做了以下猜測

1 首先ROR面對那麼高流量的壓力,性能是個問題,所以要換,Ruby其實也可以滿足Groupon那麼大的流量壓力,因為Ruby也有高性能的Reactor框架,比如Goliath,Groupon卻沒有改用Ruby的這類高性能框架,估計是相比較Node.js而言硬體成本及管理成本可能會更高。

2 有人提到Github不是流量更大嗎,怎麼沒用Node.js。Github是技術型公司,而Groupon是更商業化的公司,可能決策的時候考慮更多的是一勞永逸,與其不斷的添加伺服器,還不如用個性能更好的Node.js.

3 Groupon的Web前端是用了ember.js, 難道是為了前後統一嗎?哈哈

而且現在大的平台網站, 都是多語言架構,自從看過Twitter從Ruby轉型scala這種新聞之後,就沒必要對此類新聞大驚小怪了吧。沒有任何一種語言是萬能的,到一定階段,總會碰到一些問題需要解決,只是選擇了不同的解決方案而已。 而且也沒必要高呼「Node.js才是未來之類」的話,世界上有幾個程序員能參與到如此高流量的應用開發中去呢? 所以還是快樂的編程最重要了,我還是繼續用Ruby吧。

Update: 剛有新聞, paypal全面使用javascript替代了java。PayPal從Java切換到JavaScript, 文章裡面的理由也可以作為一個參考。


培養一個js開發 vs 培養一個ruby開發 //或者僱傭

在已經成熟的業務體系下,系統已成熟,打天下的人要換成守天下的人了。


過一大段時間,巨頭踩了一個巨大的坑,然後決定換回去。。

小公司跟著業務發展走,不要跟著技術走。如果可能,選最容易招到工程師的語言


業務發展了,技術棧就要跟著變,互聯網公司用的東西莫不如是。


不是喜聞樂見的效率問題么

最慢的腳本之一ruby -&> 最快的腳本之一js

=== 純猜測 可摺疊


推薦閱讀:

如何理解 Ryan Dahl 最近專訪中的言論「Node 也許不是構建大型服務的最佳選擇」?
如何解釋Node.js下與瀏覽器環境代碼執行結果不一致的問題?
nunjucks如何在express 4中使用?
Node.js 中 setTimeout(f1, 0) 與 setImmediate(f2) ,f1 f2的執行順序是隨機的嗎,為什麼呢?
為什麼 Node.js 不給每一個.js文件以獨立的上下文來避免作用域被污染?

TAG:RubyonRails | 後端技術 | Nodejs |