Ruby on rails 我应该为基于web的CRM应用程序选择哪种体系结构?

Ruby on rails 我应该为基于web的CRM应用程序选择哪种体系结构?,ruby-on-rails,architecture,web-applications,Ruby On Rails,Architecture,Web Applications,我正在计划一个基于web的CRM应用程序 目标用户将是拥有几百个客户的小公司。我计划使用Rails框架和Rackspace云服务器/Amazon EC2进行托管 由于数据将是保密的,我不希望对所有用户使用单一数据库。这是否意味着我必须为每个客户端启动一个rails应用程序的新实例,每个应用程序都绑定到一个子域,每个客户端都有单独的数据库?还是有解决办法 另一个问题。如果我必须为每个客户端创建一个rails应用程序的新实例,那么一个大小合适的EC2实例(大约2GB RAM,2GHz CPU)可以支

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

目标用户将是拥有几百个客户的小公司。我计划使用Rails框架和Rackspace云服务器/Amazon EC2进行托管

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


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

首先,对于一个框架来说,使用任何能让你的生活变得简单的东西,对我来说Rails就是最好的选择

我不建议为每个客户端创建单独的数据库/rails实例。有了良好的授权,正如我所期望的那样,像你描述的那样,你可以不费吹灰之力地阻止所有对非正统项目的访问

同时,运行许多Rails实例会“阻塞”您的系统,导致大部分资源浪费


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

首先,就框架而言,使用任何让你的生活更简单的东西,对我来说,Rails就是门票

我不建议为每个客户端创建单独的数据库/rails实例。有了良好的授权,正如我所期望的那样,像你描述的那样,你可以不费吹灰之力地阻止所有对非正统项目的访问

同时,运行许多Rails实例会“阻塞”您的系统,导致大部分资源浪费


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

这不是Rails特有的,但您确实应该仔细阅读,这是我为您的应用程序推荐的模式。您不需要为每个客户机维护一个代码实例,而是维护一个知道它支持多个客户机的实例。我还没有看过,但我找到了一个关于在Ruby/Rails中编写多租户应用程序的方法。您可能会在这个问题的答案中找到更多信息:

这不是Rails特有的,但您确实应该仔细阅读,这是我为您的应用程序推荐的模式。您不需要为每个客户机维护一个代码实例,而是维护一个知道它支持多个客户机的实例。我还没有看过,但我找到了一个关于在Ruby/Rails中编写多租户应用程序的方法。您可能会在这个问题的答案中找到更多信息:

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

不过,我还建议您看看Postgresql模式。使用模式可以将单个数据库“拆分”为多个具有受控访问权限的唯一模式

更多详细信息请参见:

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


我的投票肯定是支持单一应用。

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

不过,我还建议您看看Postgresql模式。使用模式可以将单个数据库“拆分”为多个具有受控访问权限的唯一模式

更多详细信息请参见:

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


我的投票肯定只支持一个应用程序。

在这种情况下,数据库故障将影响所有客户端。不需要这样做。首先,您可以使用在线备份克隆数据库。其次,如果你没有备份/备用,你仍然会有一个愤怒的客户端。在这种情况下,数据库故障将影响所有客户端。不需要。首先,您可以使用在线备份克隆数据库。其次,如果你没有备份/备用,你仍然会有一个愤怒的客户。