為什麼國外的創業公司更喜歡 Rails?

yafeilee.me發表於2015-05-13

 本文成因

  1. 最近朋友中加入了不少對技術不十分了解的朋友, 我希望能夠簡單有效回覆他們 Rails 是幹什麼的.

  2. 是時候抬頭看看整個 web 技術圈子發展的情況, 總結一下, 也順帶打消一些客戶對於採用 Rails 的顧慮.

 Rails 的起源

  Rails 全稱為 Ruby on Rails, 是基於 Ruby 程式語言( 一種通用的動態程式語言 )的 Web 全棧開發框架. 可以類比於 j2ee( 基於 java ), 類比 Symfony( 基於php ), 類比 Django ( 基於 Python ).

  Rails 起源只是一次無心的嘗試, DHH( Rails 創始人 ) 在開發一個任務管理系統( basecamp )的時候, 感覺 php 寫網站太磋了( 寫過 Rails 的話, 你懂的 ), 就在 2003 年時候隨帶開發了 Rails.

  之後, 05 年 12 月 Rails 1.0 釋出後, 成為年度最佳 web 框架.

  06 年, 由於 Rails 的大獲成功, Ruby 從一個默默無聞的語言, 成長為在 TIOBE 統計使用者使用量排名第十的語言.

  之後, 中國國內開始後知後覺, 第一批創業者像 ITeye 的 robbin 開始使用 Ruby on Rails 作為自己的核心技術競爭優勢.

  這幾年, Ruby 越來越成熟, 社群也越來越強大, Rails 在經歷了 07-08 年的小低峰後, 在 09 年之後到 2015 年的今日, 又開始大發光彩.

 越來越多的創業公司採用了 Rails

  在國外, 一大批的創業公司採用 Rails 作為核心技術棧.

  廣為人知的:

  1. Twitter ( 推特: https://twitter.com )

    Twitter 從 06 年起便開始將其核心構建在 Rails 之上, 之後發展超過 5 年, 在 11 年才逐步將其搜尋業務與訊息佇列從 Ruby 分別切換到 Java 與 Scala 上.

    隨後 12 年之後, 技術棧開始慢慢地多元化, 並開源了前端框架 Bootstrap( 沒錯, 就是大名鼎鼎的它 )

  2. Github ( 找程式設計師哪裡去, Github 等著你: https://github.com )

    Github 是程式設計師事實的社交圈子, 它從 09 年開始起家, 一直構建於 Rails 技術棧之上. 經歷過防火長城的惡意攻擊, 卻仍然堅挺. 詳見: 烏雲分析

    只要有良好的橫向擴充套件能力, Rails 的伸縮性也十分給力.

  3. Kickstarter( https://kickstarter.com )

    Kickstarter 是全球最著名的眾籌平臺, 09 年建立, 目前每天的訪問量十分巨大, 其核心構建於 Rails.

  只是找一些知名的案例, 大家肯定不滿意, 別的平臺與框架下也有不少案例, 對吧. 但接下來就有意思了, 越來越多的創業團隊開始在使用 Rails.

  比如最近的

  1. producthunt ( 一個發現新產品的平臺, 國內有很多贗品了: http://www.producthunt.com/ )

    基於 Rails 構建, 據說, 只花了幾天就把原型做好了.

  2. hired ( 程式設計師拍賣網, 國內已有類似產品: https://hired.com/ )

    基於 Rails 構建.

  3. dribbble ( 設計師社交平臺: https://dribbble.com )

    已經是全球設計師社交圈子事實的標準, 基於 Rails 構建.

  國內的一些作品:

  1. Tower ( 一個專案協作工具: https://tower.im )

    完全基於 Rails 構建.

  2. 36kr ( 創業媒體: http://36kr.com )

    基於 Rails 構建.

  3. Knewone ( 非常有勢頭的科技與設計產品社群: https://knewone.com )

    完全基於 Rails 構建.

  4. 100offer ( 另一個程式設計師拍賣網, 使用者體驗很出色: http://100offer.com )

    完全基於 Rails 構建.

 為什麼創業公司會優先選擇 Rails 作為核心技術棧

  作為創業公司的創始人, 你不必:

  1. 立刻開始做 APP
  2. 立刻考慮效能瓶頸
  3. 立刻考慮大量招人

  而創業更容易成功的奧妙與核心在於, 以最快的速度打造產品並試水市場

  這時, 選擇 Rails 往往是最佳的:

  1. 快速迭代的特性

    如果說 Rails 的開發效率在所有框架中排名是第二, 那麼我相信沒有框架敢輕易說自己是第一.

    無論是 Rails 的 15 分鐘開發部落格系統中提到的腳手架, 還是 CRUD 與 RESTful 整合的天衣無縫, 再加上慣例配置, 能都讓 Rails 的開發效率得到極大的提高.

    其殺手級特性:

    1. 慣例配置, 這個特性可以讓你的程式碼寫到最少
    2. 全棧型框架, 包含了 web 最佳實踐, 本來各種前端, 後端, 運維一堆人的工作, 現在一個人都可以非常優雅地完成, 例如百度年薪大幾十萬的前端工程師分享了內部的工作流後, 發現本質上就是 Rails 的佈署原理: 大公司前端都在做什麼?
    3. 資料庫遷移, 有了它, 快速迭代功能是非常非常簡單
    4. 生態, 類似於 app store, 一個俱複雜的登入註冊功能, 在 Rails 中都是 5 行程式碼的事.
  2. 快速市場試水與響應能力

    Rails 生態的特點就是如何更少更快地寫出高可用的程式碼. 一般來說, 程式碼越少, 對業務響應能力越強.

    1. simple_form
    2. slim
    3. scss
    4. coffeescript

    類似這樣簡化業務程式碼的 gem 非常多, 難怪在前幾年, 就有大神呼籲: 超過 3000 行程式碼的 Rails 就應該拆分了.

    除了程式碼的優化外, 還需要極強的自動化測試才能保證我們能夠自由地重構業務, 調整市場方向, 而不致於出現產品 bug 層出不窮的問題. 1. guard 2. rspec 3. jasmine 4. capybara 5. selenium-webdriver

    這種全自動觸發的測試系統在我印象中首創於 Rails, 目前很多框架已經學走了它. 但沒關係, Rails 仍然是目前生態最為強大的一個.

    如果你將自動測試做好, 快速迭代能力將是十分可怕的.

  3. 最擁抱 web 最新標準的框架

    永遠不擔心技術棧過時, 這是 Rails 的理想, 也是 web 開發者的最終理想.

    Rails 的 RESTful 實現, 是最接近標準的一個. Rails 早在幾年就擁抱 coffeescript, 而 Javascript 最新標準 ECMA6 基本與 coffeescript 類似.

    Rails 4 開始直接對 mobile 提供支援.

    Rails 5 對 API server 提供直接支援.

  快速迭代, 市場響應, 以及對於移動網際網路的支援, 都是創業公司核心優勢. 難怪了很多擁有 Rails 技能的人才一定會選擇 Rails 作為公司的核心技術棧, 就是快.

  如果你有 Rails 方面的人才, 不選擇 Rails 技術棧豈不浪費?

 國內的現狀與風險提示

  國內的 IT 市場往往落後於國際 2 年之久, Rails 方面的人才十分緊缺. 選擇 Rails 意味著:

  1. 招人風險

  Rails 招人唯一靠譜的圈子就是 RubyChina, 圈子對於招聘貼有著嚴格的要求, 如果你想招到優秀的人才, 不僅要有好的待遇與福利, 還需要你的真誠與耐心.

  但選擇 Rails 的人才會有個極大的優點, 是為了快樂而選擇的 Rails, 他們一般也不僅僅只會一種技能, 他們會更積極去學習, 成長與生活.

  如果一個高階 Rails 工程師可以頂住兩個人的工作量, 你是願意給兩倍工資給他, 還是招兩個新手呢?

  我會選擇前者.

  1. 效能風險

  Rails 會有效能風險, 這是真的, 因為 Rails 與 Ruby 一樣, 設計理念是面向程式設計師的, 而不是機器. 所以它們效能方面都不比其他語言好, 比如 C, C++, Golang, Java.

  但從創業公司的經歷看, 這個問題現在可以忽略了. 其原因有二:

  1) 初期, 使用者才是王道, 無關併發效能. 2) 效能往往從 IO 瓶頸開始, 而不是語言效能.

 總結

  我不算是對各種語言與框架都十分熟悉的人, 但都是有接觸的人, 對於 Rails 的優點與缺點, 我私以為是十分的中肯, 我看好 Rails 在創業公司中的應用, 也希望更多的創業公司能夠意識到:

  選擇一個合適的技術棧, 產品將是事半功倍的.

  這才是公司除了商業模式外成功的核心祕密.

  在 web 界, Rails 是創業公司更優的選擇.

相關文章