还是先做个广告 http://hisea.me
之前在网上看过很多讨论,围绕 rails 适不适合企业级开发。
很多观点认为 rails 在国内的应用不如 XXXX 语言广泛,不如 XXXX 框架牛因为 rails 不适合企业级的开发。
我不太认同这些观点,因为很多 rails 不适合企业级开发的原因根本不是 rails 的问题。
所以其实这篇文章跟 Rails 关系不大,讨论的主要是企业级。
我们先看看一些 rails 不适合企业级的一些看法
我觉得不一定,很多"非企业级"的应用对高并发性的要求更高,比如 Facebook 要同时支持上亿用户,很多大公司也就几万员工,哥在一个市场营销公司开发一个 ERP 的系统,调度一万来个销售人员。 总共用户也就这么一万来个。这种用户规模的应用,无论什么语言开发,都没理由不能胜任。 更何矿在一个服务器比程序员便宜的时代。高可用性跟框架/语言选择关系已经不大了。
我觉的 Ruby/Rails 是可以解决复杂的业务问题的,我觉得任何语言都可以解决复杂的问题。
一个活生生的例子就是哥在公司一起开发的系统,其中一部分有一个内部部门之间的报价系统,以多层级调查问卷形式生成服务报价,价格发到一个部门,部门同意,财务同意,服务内容跟其中包含的任务发到另一个部门,任务分配到人,任务开始,具体办事人员可以纪录总共工作时间,什么的。 大概这样。
我觉得企业中的开发可能比这个复杂,可能比这个简单。
任何高级计算机语言,配合一个比较与时俱进的框架,是可以坚决这类问题的,Ruby/Rails 可以,Python 可以,Java 可以,.Net 可以。
我在网上看到的最无奈的一个理由就是 Rails 不支持 JSR 168/286所以不适合企业级的开发。 Rails 为什么要支持其他语言的标准?Rails/Ruby 有自己的解决方案。不支持其他的或者企业现有的框架标准,都不是 Rails 不适合企业级开发的标准。
这个也是不一定的,很多企业级的架构并没有说要用什么语言什么框架,你可以用 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 安全部门,所有公司发的电脑,硬盘都是加密的,操作系统都是 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 多年没写过代码了。