【问题标题】:Which architecture should I select for a web based CRM app?我应该为基于 Web 的 CRM 应用程序选择哪种架构?
【发布时间】:2010-06-27 10:18:17
【问题描述】:

我正在计划一个基于 Web 的 CRM 应用程序。

目标用户将是拥有数百名客户的小公司。我打算使用 Rails 框架和 Rackspace Cloud Server/Amazon EC2 进行托管。

由于数据是机密的,我不希望所有用户都使用一个数据库。这是否意味着我必须为每个客户端启动一个带有单独数据库的 Rails 应用程序的新实例,每个应用程序都绑定到一个子域?或者有解决方法吗?

另一个问题。如果我必须为每个客户端创建一个新的 rails 应用程序实例,一个体面大小的 EC2 实例 [大约 2GB RAM,2GHz CPU] 可以支持多少个实例? [每个实例每天 100 次读/写操作]。

【问题讨论】:

    标签: ruby-on-rails architecture web-applications


    【解决方案1】:

    这不是 Rails 特有的,但您确实应该阅读multitenancy,这是我为您的应用程序推荐的模式。您无需为每个客户端维护一个代码实例,而是维护一个知道它支持多个客户端的实例。我还没有看过它,但我找到了conference talk 在 Ruby/Rails 中编写多租户应用程序。您可能会在此问题的答案中找到更多信息:Any thoughts on Multi-tenant versus Multi-database apps in Rails

    【讨论】:

      【解决方案2】:

      SAAS 世界中的大多数多租户应用程序似乎都在使用唯一标识符(客户端或帐户 ID)的单个数据库上运行以保持数据分离。编写代码非常简单,并且可以正常工作。您可以为部署过程创建测试和审核,以确保数据保持私密。

      但是,我还建议您查看 Postgresql 模式。使用模式可以让您将单个数据库“拆分”为多个具有受控访问权限的独特模式。

      更多详情请点击此处:Should I use multiple databases?

      至于关于实例数量的问题的第二部分 - 这实际上取决于应用程序本身以及它使用了多少 RAM。每天 100 次读/写操作小到无关紧要,因此 RAM 是操作因素。 “平均”Rails 应用程序将使用每个实例 20-100mb 的大小,因此 2GB 的服务器应该能够运行不少。当然,您的部署将变得相当复杂,因为您需要在虚拟主机环境中运行才能有效地进行此设置。

      我的投票肯定会投给一个应用程序。

      【讨论】:

        【解决方案3】:

        首先,就框架而言,使用对你来说最简单的东西,对我来说,Rails 就是门票。

        建议为每个客户端创建单独的数据库/rails 实例。有了良好的授权,正如我所期望的那样,您描述的应用程序具有良好的授权,您可以轻松地阻止所有对未正交化项目的访问。

        同时运行多个 Rails 实例会“堵塞”您的系统,大部分资源都是浪费的。

        一个大小合适的 EC2 应该能够支持您的应用程序,但这实际上取决于您的代码运行成本(以 cpu 时间计)以及查询的成本。这不是我们可以提供真正准确估计的东西。

        【讨论】:

        • 在这种情况下,数据库故障将影响所有客户端。
        • 不需要。首先,您可以使用在线备用克隆您的数据库。其次,如果你没有备份/备用,你仍然会有一个愤怒的客户。
        猜你喜欢
        • 2015-07-25
        • 1970-01-01
        • 2011-03-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-30
        • 2012-05-28
        相关资源
        最近更新 更多