瞎扯淡 Rails 真的不适合企业级开发么?

hisea · 2011年12月14日 · 最后由 cisolarix 回复于 2013年09月13日 · 10903 次阅读

还是先做个广告 http://hisea.me

之前在网上看过很多讨论,围绕 rails 适不适合企业级开发。

很多观点认为 rails 在国内的应用不如 XXXX 语言广泛,不如 XXXX 框架牛因为 rails 不适合企业级的开发。

我不太认同这些观点,因为很多 rails 不适合企业级开发的原因根本不是 rails 的问题。

所以其实这篇文章跟 Rails 关系不大,讨论的主要是企业级

我们先看看一些 rails 不适合企业级的一些看法

  • 企业级的应用是要支持多少百万 pv,支持多少用户同时在线,每秒能响应几千几万个请求。

我觉得不一定,很多"非企业级"的应用对高并发性的要求更高,比如 Facebook 要同时支持上亿用户,很多大公司也就几万员工,哥在一个市场营销公司开发一个 ERP 的系统,调度一万来个销售人员。 总共用户也就这么一万来个。这种用户规模的应用,无论什么语言开发,都没理由不能胜任。 更何矿在一个服务器比程序员便宜的时代。高可用性跟框架/语言选择关系已经不大了。

  • 企业级开发要解决复杂的业务需求,工作流,神马的。

我觉的 Ruby/Rails 是可以解决复杂的业务问题的,我觉得任何语言都可以解决复杂的问题。

一个活生生的例子就是哥在公司一起开发的系统,其中一部分有一个内部部门之间的报价系统,以多层级调查问卷形式生成服务报价,价格发到一个部门,部门同意,财务同意,服务内容跟其中包含的任务发到另一个部门,任务分配到人,任务开始,具体办事人员可以纪录总共工作时间,什么的。 大概这样。

我觉得企业中的开发可能比这个复杂,可能比这个简单。

任何高级计算机语言,配合一个比较与时俱进的框架,是可以坚决这类问题的,Ruby/Rails 可以,Python 可以,Java 可以,.Net 可以。

  • Rails 不支持, JMS, Portlet JSR 168/286(或者类似的.Net 阵营的术语)

我在网上看到的最无奈的一个理由就是 Rails 不支持 JSR 168/286 所以不适合企业级的开发。 Rails 为什么要支持其他语言的标准?Rails/Ruby 有自己的解决方案。不支持其他的或者企业现有的框架标准,都不是 Rails 不适合企业级开发的标准。

  • 或者不支持 EBS 等企业级架构。

这个也是不一定的,很多企业级的架构并没有说要用什么语言什么框架,你可以用 MongoDB 建一个储存,EBS 上面走的数据都是 JSON,应用都是 Rails,node.js 之类的, 没什么不可的。

那到底什么是企业的应用?

我个人认为,能解决企业级的问题的应用,就是企业级的应用。

github 有企业版,装在企业防火墙后面,就是企业级的应用。

淘宝那么多 ruby 的团队,虽然不知道他们在做什么,肯定是解决了淘宝的一些问题。难道他们不是在做企业级的开发么?

那为什么 Rails 企业开发还是比较少呢?

我个人认为有下面这些原因:

  • 企业文化

Rails/Ruby 的特点是小快灵,很多企业的文化就是大慢笨。Ruby 程序员喜欢早上听到需求下午就就做好了,很多公司就是开发什么东西需要层层审批。尽管很多公司已经走敏捷道路,但是其企业结构决定了敏捷的不彻底。我之前所在的一个知名智能手机厂商,900 人的部门,600 人开发团队,分到下面大概 10 个人一个 team,一个 team 一个 scrum,scrum 之上还有 scrum 的 scrum. 人事等级更是超过军队。这种情况下,小的工具可以用 rails 等新的框架。大的系统开发层层审批最后拍板的人可能根本不知道 rails 是什么。

  • 企业 IT 策略。

同是我前雇主,有独立的 IT 部门,还有独立的 IT 安全部门,所有公司发的电脑,硬盘都是加密的,操作系统都是 XP,加密的软件不怎么好用,每个星期大概平均蓝屏 8 次。数据库都是 SQL Server,想找个 Oracle 都难。试想 SQL Server 的数据库,Windows XP 上开发 rails, 这将是多么痛苦的事情。

  • 企业政治

大型的企业,招程序员的一般是中层经理,招人是扩张实力的一种办法。大众技术容易招,就像军队招人。中等或者中等以下水平的人问题也不大,有点灵性找近来也能培养,主要是趁着财年没结束,把财政允许的名额招满了。没有理由选择人难招的语言。ruby/rails 程序员是特种兵,一下子招几十个人的特种兵很难,创业的企业,一个小型特种兵团队。项目就做起来了。

  • 开发运营模式

很少的非 IT 公司喜欢开发自己的运营系统,大多公司喜欢买系统,也有公司喜欢把系统外包给别人。rails 在本来市场占有就少的情况下,参与到这个销售/外包生物链里的就更少了。还有售后,人员的培训,做 Rails 外包的公司即便有,可能也不如一些老牌知名企业案例多,售前,售后,服务等软实力也没有老牌外包公司强。老牌知名企业为什么不用 Rails? 参考上面的几条。

现在我所在的公司,用 Rails 也是近一年的事情,之前是一个.net 开发的系统,10 年了,算是 legacy 系统了。改到 rails 也不是一个自下而上的改变。而是来了一个新的 CIO,喜欢开源技术,相信 Postgresql 不比 SQL Server 差。而且有决心建一个 rails 团队,建一个围绕开源系统的运营团队。除了我们公司的 CIO,大部分 CIO 其实都是比较保守的,不是那么愿意承担风险,毕竟花钱找微软企业级服务比自己的程序员满世界 google 强多了。

由此可见,Rails 适不适合企业级开发,其实 Rails 没太大关系,根技术关系也不太大。XXX 适不适合企业级开发,是一个自上而下的决定,往往做决定的人,n 多年没写过代码了。

我们这儿的 Rails 项目一天 PV 两百多万...嘘 据我了解,实际上 Taobao 里面真正大量用 Ruby 的人没多少,相比之下,还没有 The Plant 那边多。

呵呵,我们一天 pv 目前还不到一万。

恩我也只是听说淘宝招了些人,不知到在研究什么秘密武器。

恩,羡慕中

确实,ruby 很少做企业级开发的。不过要是谁对 ruby 企业级开发的机会有兴趣的话,倒是可以联系我。工作地点:北京。

用事实说话,我们已完成 N 个企业项目。请看:http://agideo.com/products

以前无数次跟人争论这个话题,现在想法变了,我现在这么看这个事情:我接触过的人中,很多人不适合作企业应用,其他剩下的人让他们作啥都靠谱,而国内的的大环境下,企业应用,技术真的重要吗?我推崇用自己喜欢的技术,去作自己觉得好玩的事情,不好意思我跑题了。

纳闷为啥每次都有这个话题呢

#5 楼 @RobinWu 好多产品啊!

我理解的企业级应用 稳定是第一位的,任何影响生产的潜在因素都是危险信号。没有老板愿意看着因为 IT 系统不稳定而生产线天天挂掉。

#5 楼 @RobinWu 居然是温州的。。。

@RobinWu 产品好有爱啊, 诸葛亮 任务, 拜见主公。

觉得所谓的企业级开发都是动辄上百人的开发团队,人数需求较大,人多水平册次不齐,而动态语言会让低水平的开发者更多犯错的机会。

联想到 Zed Shaw 说过的:

"One of the things that's really great about agile languages is they give you the power to do anything. One of the most horrible things about agile languages is they give every other idiot the same power to stab you in the back with a rusty pitchfork."

http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/153380

#6 楼 @lgn21st 同意你的看法,是不是企业开发没传说中那么厉害,还是看人。

#13 楼 @hisea 原因很简单,Rails 在中国有像微软和甲骨文那样的技术支持吗? 先把 MongoDB 收购吧。

#14 楼 @metal 组建个强大的运营团队比购买支持节省成本。关键看企业有没有这个意愿,决心,还有长期投入的打算。

http://torquebox.org/ 这个项目有点意思。。 我觉得 Ruby on Rails 想要真正的进入企业级,真的没法完全抛弃 java。因为现在的情况就是 java 几乎就是企业级和工业化的标准。我觉得 Jruby 还是蛮有前途的。

企业项目,我在我们公司推行 Redmine 这套开源的项目管理系统,没听到用户说不好用(我们还不是 IT 类的企业,是制造业的企业,外企里每天项目不少。用这个他们基本都抛弃了邮件来跟踪任务)

#15 楼 @hisea 人力物力财力对于企业级的应用都不算什么,会有一个很充足的预算。但是一个细节错误的损失是非常严重的。比如很经典的内存溢出。 而且你要组建一个 rails 团队更困难了,你可能还得花时间去培养,培养了如果走了怎么办。难道真的都签 10 年的合同。这些成本算起来伤不起的。 微软甲骨文直接给你方案,包括技术支持甚至培训,还有大把的.net 和 java 程序员。 如果企业对于这些依赖程度不高的话,asp,php 都可以了,算成本的话还更低。 Rails 像这样的话,只有富于冒险和挑战的人才敢选择。 想要在企业上有所为的话,必须有自己的数据库,然后有一套完整的解决方案,还得组建一个技术支持团队。

#18 楼 @metal 你说的我都同意,你说的这些跟我说的差不多,这些跟 rails 关系不大,你也说 “只有富于冒险和挑战的人才敢选择”, 所以看就看企业有没有这么一个人了。

我的另外一层意思是,并不是所有的系统都是 “一个细节错误的损失是非常严重的”。 企业里很多系统是可以坏的,甚至可以几个小时掉线的。很好的例子请看 #17 楼 @rainkcn 这种非关键系统用 rails 可以做到功能上的快速调整。这也是 Rails 优势之一。而可靠性并没有大打折扣。

另外 Rails 也是可以有好的企业解决方案的. 像我原文中举得例子,github,他们企业版之前叫 Github:fi 现在叫 Github Enterprise. 服务很好,不比 IBM,微软或者 Perforce 差,保存代码这么关键的事情,github 企业版在我们公司还没出现过任何一个” 细节错误 “, 而且 github 用户群广,大部分喜欢掌握新技术的程序员都会用。培训上面比 Perforce 之类容易多了。 最后,Github 是个 Rails 开发的企业级应用,说出来不知道你信不信,反正我信了。

Enterprise Application 和 Web 2.0 的针对用户群体和特性都不同,不是简单用个 PV 来衡量的。私下认为没有做5年甚至10年以上 Enterprises 开发的人无法去衡量或者说清楚 Enterprises 的 Scope 和特点。一个帖子是说不清楚的,最好等5年后再谈。即使是 Java 或.net 也是在多少年后才被企业开发认定为标准平台

#20 楼 @gene_wu 呵呵,本人一直在做 Enterprise 开发,最早的公司是开发 软件开发生命周期管理 系统。客户有摩托罗拉,汇丰银行,等。 后来在 RIM(黑莓那个公司)开发内部过程自动化和集成的管理系统,两个公司都是 J2EE,现在在北美最大的市场营销公司开发 ERP,是 Rails,总共加起来正好五年。 我说的这些都是自己这些年工作的想法,很多时候选择 J2EE 不选择 Rails 并不是因为技术。我个人认为的 scope,解决 Enterprise 问题的应用,就是 Enterprise 应用。问题可能大可能小。但是小的 Enterprise 的问题也是 Enterprise 问题。

@hisea @metal 我是一个非技术型的 IT 人员,确切的说是负责 IT 项目的。在公司里,我一直倡导,没有做不到,只有想不到的理念。对于服务于企业内部的用户而言,他们关心的不是用什么技术,而是怎么呈现更好的界面及简单的操作于他们面前,就我在推行 Redmine 的过程中,我就发现,也许从技术的角度来说,它不是最牛的,但的确解决了问题,这就足够了。

所以我认为,与其说不适合企业,不如说企业真正的需求没有被挖掘出来。当然,我们也不能忽视 Rails 作为新的技术在国内的流行度。

#22 楼 @rainkcn 我赞同你关于企业真正需求没有被挖掘出来的观点,当技术门槛上升到了 J2EE 和 Oracle 数据库的时候,很多中小 size 的需求就被忽略了。可是往往很多时候,这些需求也是痛点。

没有什么企业级经验,就我自己的带人经验来说: 在一般的企业中,管理团队难,维护团队难,招人难,怕的就是人才断档。我想这是和企业的导向和氛围有关系,有点个性的程序员一般都认同那些科技型导向的企业,比如 github 和 salesforce,可是这世界上不止是科技型企业啊,是吧?很多企业忙市场忙销售,谁关心技术啊,程序员才不喜欢这样的氛围呐!除非待遇好。以我对 rails 当前的程序员人群的观察(当然,我到现在见过面的会 rails 的,只有一个人,这些只是网上观察),他们绝对呆不下去!这就是我们 ruby 社区的态度啊!年轻人的骄傲!

带人很烦,如果企业选择削减 IT 团队,我是非常能够理解,这涉及了公司重心和政治一系列的问题。不如选择外包,买个 ERP 系统,虽说贵一点,但是毕竟有技术支持。如果老板实在有魄力,可以选择自建团队,但谁在这种情况下都得掂量下,JAVA 和.net 好招人,成本低一些,风险小一些,选择 Rails,我认为风险太大了,当然了,不是不行!只是风险大!毕竟程序员和老板心不是一条道上的,一不顺心人跑了,你就认栽吧。钱花了可以赚回来,人没了你连反悔后去买 ERP 的钱可能都没了。如果有可靠的技术支持公司和充足的人力市场,rails 才有希望。 再说,别的技术有先入的优势,年纪大点的可能都不太了解 rails,为什么选你呢?这点上 rails 有点吃亏,而不是能力不行。在大点的企业,比如淘宝,氛围好,应用多机会多,可能有 rails 强势插入的机会。可那些传统企业,业务很单纯,需求很单一,人家 java 的系统能做的都做好了,很完整,rails 没有机会插入啊!只有业务变化大,需求变化大,才会有 rails 的机会,这是新兴企业的特色,传统企业是大头,这只是小头。RIM 玩花样,能比淘宝花样多吗?

总结下: 先入优势、隐性成本、企业氛围、业务变化

那玩意叫ESB不叫EBS.. .

#10 楼 @wowbeing 我们的产品都是用 rails 开发的

匿名 #27 · 2011年12月15日

为啥一种技术什么都要能做呢, 做他适合的不就挺好了吗

最近不是有统计分析了 3 亿 6 千多万行代码, 发现 Java 企业级代码平均 bug 最多,速度几乎最慢么...

http://arstechnica.com/business/news/2011/12/bad-code-plagues-it-applications-especially-java-ones.ars

#28 楼 @night_song 这种评估意义有限,因为工程师平均水平不同。其实 @lgn21st 说的挺好的,靠谱的人用什么都靠谱,当然他会尽可能选择轻松的实现方式,比如 ruby;不靠谱的人只好在工作中进行限制,ruby 太神器了,不合适使用。这些和企业不企业没关系

@RobinWu 的 CRM 一看就是 fat_free_crm 修改的 。。。还有 redmine,tickmule...等开源项目

@bl0ckme 严重同意。一种语言,不要想什么都能做啊。把 ruby, rails 用在最合适的开发中好了。

除了性能,我什么都不担心。。。。

企业级项目不是企业项目吧?

#26 楼 @RobinWu 你们开发了好多产品啊。。。公司几个人啊?

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册