星期三,2010 年 3 月 24 日

Rails 和企业

发布人:Matt Aimonetti

如果你刚加入 Rails 社区不久,你很可能会注意到社区所表现出来的爱恨交织的关系,即 Rails 与企业。有些人讨厌企业,并且公开表示去它的(49:39),另一方面,这些人也很自豪地提到该行业的一些主要组织使用 Ruby 和 Rails。

事实是,尽管 Ruby 和 Rails 还可以更加适合企业应用,但它已经是一个极好的组合,大公司今天就可以开始使用,而且许多公司已经在使用了!我们来看看 Rails 与企业的状态。

那么我们现在在什么位置?

  • 最重要的是,Rails 不是为了企业或企业的需求而设计的。它是从一个成功的创业项目中提取出来的,并且随着每天使用 Rails 的人们的贡献而发展起来的。但是,Rails 也基于 Ruby,Ruby 变得非常流行,并开始在不同的场合使用,例如,在 NASA。
  • 37signals仍然不需要“企业级功能”,因此不要指望 37signals 的工程师为 ActiveResource 编写 Oracle 适配器或 SOAP 层并推动它们的采用。
  • Rails 远远不止 37signals 使用的框架。它是一个开源项目,其他项目中的人每天都在贡献代码。大部分代码对 37signals 没有直接好处。
  • 企业正在发展:经济危机、新一代开发人员、新的管理层和疯狂的截止日期。对于企业来说,Ruby 和 Rails 已迅速变得非常有吸引力,并且拥有像创业公司一样行事的大公司通常是许多管理人员梦寐以求的事情。事实上,以下是索尼计算机娱乐美国总裁兼首席执行官杰克·特雷顿的一句话:“外部像一家价值数十亿美元的公司,内部像一家创业公司一样行事”。这种变化需要一段时间,因为企业是一头庞然大物(或在此处插入你最喜欢的另一个体型巨大、启动缓慢的动物),但正在发生。
  • 在大公司内/与大公司沟通与在需要外部关注并不断发展壮大的初创公司中同初创公司的沟通是完全不同的,后者不具备公共关系部门的所有繁文缛节。以下是一个简单的示例:我在 索尼 Playstation 工作。我的工作说明提到 RedisMongoDBEventMachine 和许多其他我不知道的索尼正在生产环境中使用的技术。我并未意识到我的默认生产堆栈将基于 Ruby 1.9,如果你是大公司的一员,沟通会比作为 5 名工程师组成的团队展开一项很酷的项目时更具挑战性,因此许多人不知道公司 X 或公司 Y 使用何种技术。
  • Rails 被许多大公司所采用。这可能并不明显,你可能需要关注职位,但是 AT&T、索尼和许多其他公司总在寻找才华横溢的 Ruby 开发人员。而且,虽然 Java 和 .NET 仍主宰着企业领域,但是动态语言正在稳步赶超。Rubyist 正在攀升社交阶梯,现在处于力推他们所爱语言的位置。

了解企业的需求

“企业的需求”有些难以界定,但是我可以证明所谓的“企业应用程序”的需求和要求与你为初创应用程序工作时遇到的需求和要求略有不同。

企业的需求/愿望

  • 可靠性
  • 支持
  • 性能
  • 优于竞争对手的优势
  • 集成与转换路径

可靠性

我认为事实已经证明,只要你知道你在做什么,那么 Rails 就可以扩展,并可以非常可靠。我们不再讨论刚刚实现并由酷孩子们把玩的新鲜框架,而应该将 Rails 视为已为部分最流行的网络应用程序所使用的稳定平台。

支持

对于这一点,Rails 社区完全可以为此感到自豪。我们拥有许多论坛、博客、书籍、当地会议、会议... 是的,Rails 是开源的,你无法从核心团队购买年度支持,但是你将找到你需要的所有帮助。(如果你无法获得帮助,请联系我,我会帮你找到可以提供帮助的人员,如果你对 Rails 比较陌生,请访问 http://railsbridge.org/

性能

基于我的经验,我们的 Ruby 和 Rails 性能水平远超企业世界需要。由于 Ruby 1.9 极大提高了性能,Rails3 也优化了这一点,尤其如此。如果确实需要让部分代码像 C 代码一样快速运行,为 Ruby 编写一个 C 扩展实际上相当简单,并且能解决你的速度问题。

与竞争对手的优势

Rails 自带特定方法和惯例,让你在更短的时间内启动并运行。Ruby 作为一种语言自然、直观且易于维护。通过为你的项目选择合适的工具,你必定能在更短的时间内完成更多任务,并更快提高业务价值。别忘了社区中测试的高价值,它会推动你的团队编写经过测试的代码,并极有可能提高产品整体的代码质量。

集成和过渡路径

这大概是你生活在企业环境并打算使用 Ruby 和 Rails 时面临的最具挑战性的部分。我最近与一位谷歌员工交谈,他在加入这家位于山景城的公司之前做了很多 Ruby 工作。我们谈到了他如何喜爱 Ruby,但在集成现有企业解决方案时遇到了很大困难。他提到,糟糕的 XML 工具、差劲/复杂的 SOAP 库等因素让他感到沮丧,还有一些我记不起来的问题。事实上,在我朋友使用 Ruby 的时候,上述内容都是真的。REXML 和 Soap4r 很实用,但可能表现不佳。幸运的是,随着社区发展,新的工具不断涌现,如今 Nokogiri(由 AT&T 工程师 Aaron Patterson 开发和维护)可以轻松取代 REXML,已知许多库比 Soap4r 更好,例如 savonhandsoap 等。另一个好消息是,诸如 AppleMicrosoftSun(RIP) 等主要 IT 公司已采用 Ruby,你现可以用 Ruby 编写代码,并使用其他语言的本地库,如 Java.NETObjective-C。不必完全重写就可以顺利完成过渡路径。

就数据库而言,由于有了 Oracle ActiveRecord 适配器(来自 R.Simanovskis),Oracle 仍然是 Rails 开发人员可行的选择。注意,DBA 可能会因为你不使用绑定变量和所有 Oracle 魔法咒语而优化查询而诅咒你,在这种情况下,你可以使用 Sequel,它是支持 Oracle 和一些其独特功能的出色 ORM。

在部署方面,您可以部署在 IIS、Tomcat、Glassfish、Apache、Nginx 或您已在使用的几乎任何主流应用程序上。使用 Passenger,部署就像部署 PHP 应用程序一样容易而且您还获得了一系列出色的工具,例如 CapistranoVlad 等...

因此,从根本上来说,这多亏了为“老板”工作的充满激情的 Ruby 用户,例如 Aaron Patterson、Raimonds Simanovskis 等,在企业中使用 Ruby 变得更加容易。Ruby 和 Rails 最初并非针对企业而设计,但随着时间的推移,集成变得更加顺畅,双方现在都可以享受互惠互利的好处。