是否有人使用RoR进行大规模,关键业务的企业应用程序?
是否有其他基于动态语言的轻量级Web框架,人们正在使用这些类型的应用程序?
如果您没有使用这些类型的应用程序框架,那么什么阻止了您?它只是与任何大型IT组织相关的惯性.这些框架的速度和稳定性问题是否足以抵消开发周期时间的改进?
为了考虑Ruby on Rails是否为企业做好准备,您必须考虑"企业"这个术语的含义.根据我的经验,企业意味着"安全".寻求企业解决方案的公司通常会选择大型供应商支持的技术堆栈.通过这种方式,他们知道他们可以获得支持并可能获得咨询以换取花费大量资金.这是整个"没有人因为购买IBM而被解雇"的方法.
另一个需要考虑的因素是无处不在.毫无疑问,现在Ruby仍被视为一种有些异国情调的语言,熟练的Ruby程序员可以反映这一点.从技术上讲,Ruby 是比Java或C#更复杂,在OO纯度方面更接近Smalltalk,在元编程设施方面更接近LISP.可以说,公司将会发现,与Ruby程序员相比,从体育馆购买Java或.NET程序员的速度更快.这不是为了侮辱Java或.NET程序员,而是反映了这样一个事实:有许多雇主仍然认为软件开发是最便宜的竞标者要做的事情,而不是应该做的事情.Java和.NET程序员现在几乎都是商品,因此可以以更低的成本提供.
从技术上讲,Ruby on Rails可以像Java,.NET或PHP等一样扩展.相同的基本原则适用于测量瓶颈所在,调整SQL查询,最小化I/O,可能在适当时对数据库模式进行非规范化并使明智地使用缓存等.如果您确实需要构建下一个eBay或亚马逊,那么您应该手动滚动并手动调整自己的解决方案,就像eBay和亚马逊所做的那样.J2EE在遗留集成方面具有优势,但这不是Rails优化的用例--Rails就是构建新的CRUD应用程序.
毫无疑问,目前的Ruby是表现较慢的语言之一; 在这个领域正在进行大量的投资,因此预计未来几年的情况会有所改善,就像Java首次出现以来一样.在Ruby VMs领域和MRI的替代品(Matz Ruby Interpreter)中有许多有趣的发展.我个人认为JRuby是一个值得关注的人.它得到了Sun的支持(图),因为它是Ruby的Java实现,它可以用来通过现有的JVM基础架构将Ruby引入企业.
我认为Rails还不适合企业,而且在很多方面我希望它永远不会存在.我并不特别希望看到我最喜欢的框架因为在J2EE世界中对我来说很明显的多供应商选择的平庸或混乱而陷入困境.令人高兴的是,DHH似乎已经确定Rails应该继续成为固执己见的软件,而不是试图成为所有公司的所有东西.
我想很多人都对"企业"这个词的含义感到困惑.YelloPages.com和Penny Arcade不是企业应用程序.当然,他们可能拥有大量用户和点击/分钟,但他们是相对简单的应用程序.
企业应用程序是用于运行企业的应用程序 - 通常意味着大型多部门,多地点的公司.SAP是一个企业系统,BaseCamp不是.
您通常会在企业应用中看到的一些特征是:
它们既大又复杂.典型的ERP系统需要处理100个实体类型.
他们经常需要与其他系统集成,并需要为第三方提供集成点.
他们拥有大量不同的用户类型和角色,主要反映了大型组织中不同的工作类型.
要回答你的问题,我会说是的,Rails准备好了.我们目前正在为跨越20个部门的1000多名用户开发一个大型系统财务管理系统.可扩展性对我们来说不是一个大问题,但可靠性和可用性是.无论技术堆栈是什么,解决这个问题都是一样的.
我会重复其他人对熟练开发人员的观点,但这又适用于任何技术堆栈.让一个普通的开发人员在一个非关键的小型系统上工作可能没问题,但是如果你真的想要开发一个关键且在整个企业范围内的应用程序,那么你最好让最聪明的人工作.
由于我的日常工作是关于企业架构,我认为企业这个词现在不是关于规模或规模,而是更多地涉及软件产品的销售方式.
例如,Ruby on Rails不是企业,因为没有供应商会进入您的商店并为开发人员社区重复进行Powerpoint演示.Ruby on Rails没有销售主管带我去高尔夫球场或我最喜欢的餐厅吃午饭.Ruby on Rails也没有被Gartner等行业分析公司深深报道.
在这些事情发生之前,Ruby on Rails永远不会被视为"企业"......
我是IBM的顾问,过去一年我为使用Ruby on Rails的客户构建了几个网站.毫无疑问,Rails"为企业做好了准备".关键是要使用rails来擅长它,并使用J2EE或其他优秀的"企业工具".Rails在任何应用程序的演示结束时都很棒.您可以使用RESTful Web服务而无需大约0个工作,这是与其他"企业"工具的良好集成点.
也许我不会使用rails来构建yahoo.com,但那没关系.从企业到最小的IT商店,您可以使用成千上万的完美壁龛.
IBM,Oracle,Sun和JPMorgan Chase只是使用Ruby on Rails的少数几家公司.它可能不会比那更加企业化.
我们使用Ruby on Rails主要用于"企业"关键业务应用程序.对我们来说,将Ruby与其他"企业"系统集成起来要容易得多,例如:
我们在Oracle数据库之上使用Rails
我们将Rails应用程序与Oracle电子商务套件(ERP和CRM系统)集成
我们将用户身份验证与LDAP目录,NTLM Windows域身份验证,Oracle电子商务套件身份验证相集成
我们构建REST和SOAP Web服务以与其他系统集成
有很多"企业"集成平台应该做这样的事情,但它们通常都很昂贵,而且你经常遇到一些问题,然后你依赖供应商,如果他能解决问题.
使用Ruby和其他开源组件,您始终可以自己解决问题,因为您可以深入了解问题的根源,并且不会隐藏任何内容.
因此,如果你有聪明的开发人员喜欢解决难题,那么Ruby将成为他们的优秀工具.但是如果你有普通的开发人员不想学习任何新东西,并希望供应商能够完成他们的工作,那么Ruby可能不适合他们.但我怀疑普通开发人员能否使用任何工具创建出色的软件.
我对大多数回复的积极态度感到非常惊讶.我是Ruby和Rails的忠实粉丝并且同意所有已经说过的内容,但我感觉社区中有一个普遍的假设:"Rails还没有为黄金时段做好准备." (授予社区通常不如我想象的那样了解本网站的用户)
我认为从技术角度来看,其他人提出的示例表明,事实上,您可以从Java或.Net堆栈中获得Rails的正常运行时间和性能.问题是,你不能用30美元/小时的程序员在Rails中构建那些高性能,可靠的应用程序.Ruby和其他动态语言似乎使优秀的程序员能够变得非常高效和高效,但与此同时,他们只是削弱了那些一般的程序员.考虑到绝大多数大型IT商店已经选择了更高价格的最便宜的代码猴子,我认为他们尝试引入Rails作为Java或.Net的替代品将是一个非常痛苦的过渡.
Twitter的故事似乎传播了"Rails无法扩展"这个词.与此同时,LinkedIn使用Rails创建了一个Facebook应用程序,每月处理1B页面浏览量.
我购买他们所提出的论点,即可扩展性问题不是您使用的语言/平台的产物,而是更多关于如何在该平台内实现的东西.
这是我对此的看法.我的公司(拥有120,000名员工)拥有主要用于内部IT的Java/J2EE堆栈.他们还使用Sharepoint进行文档/知识管理,使用Oracle应用程序进行工作流等.在过去的两年中,我领导了一小组Ruby on Rails/Python-Django/PHP爱好者,积极探讨在企业内部采用这些框架. .我们遇到的通常(通常是无效的)论点
它不会扩展
它对企业来说不够安全
但是,我们设法推出了一些应用程序(Wordpress for blogging,一个定制的Yahoo回答,如内部社交Q&A应用程序和基于Digg风格的Rails的Idea/Innovation mgmt应用程序),事情在很短的时间内发生了变化.现在有一个强烈的支持,因为Rails/Django及其同类产品实际上可能更适合某类企业应用程序,尤其是KM,工作流程等领域的简单轻量级应用程序.
我是一名Web开发人员,我已经为各种公司(从内部网到中等规模的网站)构建了一些Ruby on Rails网站,但我还没有将它用于真正大规模的应用程序.
人们总是指出它很慢,不会扩展,也很难部署."可伸缩性问题"已经不再存在了.它仍然比大多数其他框架慢一点,但我很希望rails 3能解决这个问题.由于Capistrano和mod_rails,它不再难以部署.
在大型项目中我可以看到rails的真正问题:
没有很多人知道Rails.如果您有一个PHP应用程序,您可以确定66%的Web开发人员能够维护它.使用rails并不是同一笔交易.
它仍然较慢,如果速度很关键,那可能是一个问题
它仍然需要更多的电子商务组件等.它已经到了,特别是自shopify以来,但它并没有像Java那样准备好.
除此之外,我认为Rails已做好准备.
通常,这只是为项目找到合适的技术,有时可能是轨道.每种语言/框架都有缺点,因此在某些情况下Rails不是最明智的选择,但在其他情况下它会做得恰到好处.
另外,只需等待Rails 3,它会很棒:)