为什么国外的创业公司更喜欢 Rails?

2015-05-13 04:04:40 +08:00
 yafeilee

For V友, 是时候推销一下 Rails 这个技术栈, 希望此文能将 Rails 一些优势带给各位技术人员.

本文成因

  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 是创业公司更优的选择.


本文来自 WinDy's Blog

17134 次点击
所在节点    程序员
84 条回复
chengzhoukun
2015-05-13 09:52:15 +08:00
@robertlyc 哈哈
hustlzp
2015-05-13 10:02:52 +08:00
创业用自己最熟悉的就好。
MarineGG
2015-05-13 10:09:21 +08:00
@robertlyc 哈哈,的确如此。面试过的很多懂点node的前端开发,对后端的东西知之甚少就敢谎报是全端工程师
woojuno
2015-05-13 10:12:42 +08:00
当年rails火的时候,确实影响了各个框架的发展。但是现在,rails有点重了。
kimmykuang
2015-05-13 10:20:25 +08:00
我觉得rails的优势应该已经是众所周知的事情了,但是国内初创团队可能会更加考虑招人难度以及学习成本方面
r00tt
2015-05-13 10:22:08 +08:00
适合自己才是最好的,我用`rails`,我为自己带盐
johncang
2015-05-13 11:10:06 +08:00
36kr 不是基于wordpress吗,以前看他用这个程序弄的
lichao
2015-05-13 11:11:57 +08:00
@johncang 最初是 wordpress ,后来 fork 了 ruby-china
est
2015-05-13 11:38:28 +08:00
从隔壁复制粘贴过来,Django的成功案例:


* Instagram
* Quora
* Pinterest
* Disqus
* Onion
* Hulu
* The Boston Globe
* NYTimes
* Telegraph.co.uk
* Bitbucket
* SourceForge
* edX
est
2015-05-13 11:45:29 +08:00
还有一些django写的网站:

* Rdio
* 部分mozilla.com页面
* guardian.co.uk
* Mahalo
* Globo.com
* Washington Post
* LA Times
* curse.com
* rasp.yandex.ru
* Pownce(已挂)

来源 http://stackoverflow.com/questions/886221/does-django-scale
karloku
2015-05-13 11:55:31 +08:00
rails不是有点重, 而是非常重, 但是如果有个项目让我来启动的话我还是会首选rails. 不知道在其他rails工程师眼里和其他语言的web工程师眼里rails是什么, 不过在我看起来rails就是一套默认的最佳实践集, 写rails的时候更容易专注于业务而不是技术方案之类的.
做东西的时候先用rails先把东西做出来当demo, 觉得可行的话开始从rails迁移向sinatra/padrino, 甚至有需要的话直接把controller的逻辑变成api放到grape里跑个纯rack.

至于国内外初创对rails态度的不同, 我觉得就是因为国内学ruby的人少, 连rails工程师都很难找, 更不要说敢走出rails的ruby工程师了.
chloerei
2015-05-13 11:56:55 +08:00
1. Blub 语言出现了仿 Rails 框架
2. Blub 程序员感到高兴,因为不用更换语言就能体验到 Rails 的生产力
3. Rails 程序员发现它缺少了 Y 功能,不过 Blub 程序员认为这并不重要
4. 经过漫长的岁月,Blub Rails 终于发现 Y 功能应该设为默认,于是集成到框架内。(回到2)

过去有 Migration,正在进行的有 Assets Pipeline,未来可能是 Turbolinks?Action Cable?

Rails 的功能可以被复制,但功能外一些地方是难以复制的:

1. Ruby 语言的灵活
2. DHH 和核心团队的品味
3. 10 年社区的积累

如果你不想等待 Blub Rails 慢慢进化到更像 Rails,总可以直接……
newtonisaac
2015-05-13 11:57:35 +08:00
开发快,质量稳定,运行速度慢
jyootai
2015-05-13 12:31:23 +08:00
Rails 的生产力确实高效,不过还有一个吸引人的地方是 Ruby 语言,写起 Ruby 整个人感觉各种舒服,其优雅的特性深深被折服,还记得之前刚接触 Java Web,其中的XML写起来了各种恶心!
chaucerling
2015-05-13 12:31:49 +08:00
ruby-china和v2ex反响大相庭径
v2exer人更注重运行效率和语言熟悉程度,ruby-china更注重rails哲学
useyes
2015-05-13 12:53:34 +08:00
创业初期不要太考虑运行效率

"make it work, make it clean, make it fast."

有些人比较喜欢倒着来..

哪种熟悉哪种来,所以我用rails。
yyw
2015-05-13 13:00:16 +08:00
现在已经晚了。
so898
2015-05-13 13:09:27 +08:00
Github那叫挺过攻击依然坚挺?
防火墙把那货玩坏之前,12306的某个刷票js也把Github玩坏过的吧
Github简直可以作为Rails的反面教材了……还依然坚挺……
some0ne
2015-05-13 13:14:31 +08:00
@so898 那请问有什么语言或者框架能够挺过ddos吗?
metrue
2015-05-13 13:15:36 +08:00
经历了那么多语言,Ruby 仍然是我最喜欢的语言。
Sinatra 和 Rails 分不同的场景交叉使用着。

其他语言,其他框架能模仿复制 Ruby, Rails 的某些特性,但是 Matz, DHH 等社区领导者的才是 Ruby, Rails 社区区别于其他社区的原因。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/190633

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX