使用MagLev for Ruby能否构建生产级Web应用程序?

14

我是Rails和ruby的粉丝,可能会开始为金融机构建立企业应用程序。我真的很喜欢Maglev的想法,并想知道它是否值得考虑。我还没有找到有关Maglev是否在野外生产中使用,更别提用于高安全目的的信息。

是否有人成功地使用MagLev部署了关键任务的应用程序?如果是这样,您可以提供有关您的经验的详细信息,并可能命名该应用程序吗?

1个回答

24

简而言之:我们即将在MagLev上发布生产应用程序。你应该等待。

很抱歉,文章有点长;我还有很多杂乱的想法需要整理。

我的团队即将在MagLev上发布第一个生产应用程序。虽然经历了一些波折,但我们相信最终这将是正确的决定。我今年在几个会议上分享了我们的经验,很高兴更详细地和大家聊聊,以下是(长篇)概述。

正如你可能已经知道的,GemStone有着支持金融行业公司的悠久历史。我们主要使用Ruby进行开发金融应用。我们非常关心我们的数据,所以对我们来说,GemStone是一个显而易见的选择。MagLev允许我们利用现有的Ruby知识和大部分代码,并将数据存储在GemStone中。这似乎是完美的结合。

我们选择从一个小型应用程序开始,这个应用程序对于我们的用户是新的,也是移动最轻松、最低风险的选择。我们选择了我们的发票呈现应用程序,它与我们的托管结账平台紧密结合。能够简单地持久化对象而不必担心映射或转换,使得开发非常快速和令人愉悦,并且我们避免了许多与ORM和持久性一般相关的问题。我们计划继续将我们现有的所有应用程序移植到MagLev上。

也就是说,除非以下条件全部成立,否则你应该等待:

  1. 你(或你的同事)是熟悉Ruby语言及其实现的专家,能够调查和修复很多使用Smalltalk编写的细节问题。

  2. 你(或你的同事)理解在Smalltalk环境下工作的技巧,以及基于图像的环境的一般特点。

  3. 你能够熟悉GemStone/S平台、语言、部署机制和工具。

  • 如果你遇到了困境,你会毫不犹豫地放弃一切,重写你的应用程序,改用Smalltalk。 (我承认:有时我希望MagLev完全失效,只是为了找个借口。)

  • 以下是我们持续遇到的一些问题。因为对我们来说以上全部都是真实存在的,所以我们选择使用MagLev。我们通常要经常处理以下每个“问题”,有时甚至是每天。

    1. 回溯栈(backtraces)几乎无法单独阅读。当你遇到许多异常时,你需要从GemStone Smalltalk中使用命令行调试器。这里有相当大的学习曲线。

    2. Ruby库的兼容性...不如你所希望的那样好。基本上,你可以指望大部分纯Ruby编写的东西正常运作。但是使用C扩展而没有ffi的东西都不能够使用。这是一个惊人数量的事情。过度使用元编程的库会使MagLev混淆。例如Rails。

    3. 代码重新加载和迁移是手动的。当你更改了磁盘上持久化对象的类定义时,你必须手动管理加载新代码并迁移现有的持久化实例。

    尽管如此,最帮助我们的东西是我和在GemStone公司了解MagLev的大多数(或全部?)人都是朋友。他们对我们非常好。HPI的学生也在修复错误和帮助我们解决问题方面非常有价值。

    关于我的团队,因为拥有这样的一个团队才让这一切成为可能。我们是四名开发人员。我们每个人都有十年以上的经验(我认为我们实际上都超过12-15年)。我们中的一些人(至少是我)有超过十年的Ruby编程经验。虽然我们中没有人曾在制造收益的生产应用程序上使用Smalltalk,但我们各自具有不同程度的Smalltalk编程经验。我活跃在Ruby和Smalltalk社区中(并且正在从前者向后者转变)。

    我们的经验有点崎岖,但大多数情况下还是愉快的。如果我当时知道现在所知道的,我会再次选择这样做。我希望我们在这方面的工作将来可以帮助他人做到同样的事情。我认为MagLev将成为未来一种有价值的工具。


    2
    这正是我在寻找的信息。非常感谢您抽出时间。尽管问题被关闭的原因,我认为这非常有用。 - aceofspades
    在未来,以直接的问题结束可能会有所帮助。你使用了“有任何评论吗?”如果你说“MagLev准备好投入生产了吗?”或者更加直接的话可能会更有帮助。这里的管理员可能喜欢炫耀他们的实力。 - Steven R. Baker
    我已经修改了问题,以防有人想投票重新开放。很快就有很多投票,所以看起来这很受关注。 - aceofspades

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接