【问题标题】:How are SaaS applications organized?SaaS 应用程序是如何组织的?
【发布时间】:2011-02-12 17:57:15
【问题描述】:

考虑将多个客户端的 Web(MVC,例如 Rails)应用程序作为服务。

如何设计?

  • 每个客户端一个应用程序实例? (+ 每个客户端一个数据库)

  • 一个实例用于所有客户端(+一个数据库用于所有客户端)

前一个很简单,但是……“效率低下”。后者怎么样? (最佳实践、设计模式)如何分离客户端数据?例如:客户端“1”的工作人员“A”有两个文档,客户端“2”的工作人员“B”有三个文档。如何建立模型关联来保护其他用户(和客户端)数据?我认为使用 Client 模型加入每个查询并不是一个好的解决方案。

【问题讨论】:

  • 理想情况下,您的模型都会天生就知道客户端性。
  • 我想说这并不那么容易。有很多可能性,但这实际上取决于用例什么是可取的。我建议你看看 Heroku 是如何工作的,有一些采访,比如 InfoQ。

标签: ruby-on-rails ruby design-patterns saas


【解决方案1】:

我建议查看earlier response on multi-tenant apps in Ruby on Rails

这实际上取决于您的用例,但处理此问题的最简单方法是使用单个数据库,并将范围限定为特定应用程序。您可以根据您的要求/预算从那里前往。

我是该链接中详细介绍的 postgresql 模式系统的忠实粉丝:P

【讨论】:

    【解决方案2】:

    这篇MSDN 文章很好地解释了多租户数据架构。

    可能很明显,但我还是会注意到它; Rails 实例的默认配置是在客户端将会话信息存储在 cookie 中,这有助于让所有应用程序实例都能平等地为请求提供服务。

    该系列中的Another article 在识别共享服务(例如您需要的监控)方面也提供了丰富的信息。

    【讨论】:

      猜你喜欢
      • 2016-04-24
      • 2011-05-19
      • 2010-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-03
      • 2011-10-20
      • 1970-01-01
      相关资源
      最近更新 更多