您如何构建复杂的Rails系统

时间:2010-06-09 17:16:59

标签: ruby-on-rails ruby ruby-on-rails-3 rest

我们有以下系统(以及更多)我们将数据从一个应用程序推送到另一个应用程序:

  • 托管CRM(InsideSales.com)
  • Asterisk电话系统(内部)
  • 横幅广告系统(openx,我们托管)
  • 潜在客户生成系统(自产自销)
  • 电子商务商店(狂欢,我们主持)
  • 工作板(自产自销)
  • 许多作业网站抓取+入站作业供稿
  • 电子邮件递送系统(如Mailchimp,自产自销)
  • 事件管理系统(如eventbrite,自行开发)
  • 仪表板系统(许多图表和报告从所有其他系统中提取信息)

随着Rails 3即将推出,我真的想要实现一个微应用策略,但是我想确定是否应该通过REST HTTP API进行应用程序谈话,或者因为我控制它们,我应该做些什么就像代码中的共享模型一样,它简化了但也允许东西更容易泄漏到边界......

我听说37signals有很多小应用程序,我很好奇这些应用程序是如何相互通信的......或者如果你有自己的多应用程序体验的任何建议。

谢谢!我曾经在我的博客http://rywalker.com/chaos-2010上试过这个问题。

4 个答案:

答案 0 :(得分:5)

我确实收到了DHH的电子邮件回复......

  

我们使用两者的组合,但我们默认为REST集成。我们使用直接数据库集成的唯一地方是37signals ID用户数据库。因为它需要这么快。 REST更加清醒。从那里开始,然后在需要时进行优化。

答案 1 :(得分:4)

上次我不得不疯狂地粘合一堆小应用程序,我使用了一个简单的REST API。

奖励积分:它允许与使用其他语言编写的服务/应用程序集成。

如果你有一个喜欢在没有警告的情况下转向技术的疯狂热爱话筒经理,也会有所帮助。

答案 2 :(得分:3)

我有一个加号:我不得不和一些不完全是HTTP准备好的守护进程交谈。所以我遵循以下模式: REST API使用XML / JSON交换数据并使用memcache交换短消息。 (你定义了一些你将在memcache和另一个软件中更新的键,只需拉动memcache寻找那些键)

作为安全措施,我使用数字证书添加了API KEY或HTTP客户端身份验证。

答案 3 :(得分:0)

另一种选择是AMQP消息传递(通过rabbitmq或其他方式)。