2010-06-27 90 views
0

我正在规划一个基于Web的CRM应用程序。我应该选择哪种体系结构用于基于Web的CRM应用程序?

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

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

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

回答

1

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

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

更多细节在这里:Should I use multiple databases?

至于你的问题的有关实例数量的第二部分 - 它是真的要取决于应用程序本身,有多少RAM它正在使用。每天100次读/写操作太小而无关紧要,因此RAM是操作因素。一个“平均”Rails应用程序将使用每个实例20-100MB的任何内容,因此2GB服务器应该可以运行不少。当然,您的部署将变得非常复杂,因为您需要在虚拟主机环境中运行以有效地进行此设置。

我的投票肯定是一个单一的应用程序。

1

首先,尽可能的框架去,随便用使生活最简单的你,对我来说Rails是罚单。

我会不是推荐为每个客户端创建单独的数据库/ rails实例。通过良好的授权,正如我期望的应用程序一样,您可以避免所有访问未归类的项目,而不会造成太大麻烦。

而且运转轨道许多情况下,将“堵塞”了你的系统大部分被浪费的资源。

一个大小合适的EC2应该能够支持您的应用程序,但它真的可以归结为你的代码是多么昂贵的运行(CPU时间),以及如何昂贵你的查询都是。这不是我们可以提供真正准确的估计。

+0

感谢您的回复:-) – Jagira 2010-06-27 11:15:12

+0

在这种情况下,数据库故障将影响所有的客户端。 – Jagira 2010-06-27 11:18:16

+0

它不需要。首先,您可以使用在线备件克隆数据库。第二,如果你没有备份/备用,你仍然会有一个愤怒的客户端。 – thomasfedb 2010-06-28 09:01:41

2

这是不特定于Rails的,但你真的应该multitenancy,这是我会建议为你的应用彭定康阅读起来。您不必为每个客户端维护一个代码实例,而是维护一个知道它支持多个客户端的实例。我没有看过它,但是我在Ruby/Rails编写多租户应用程序时能够找到conference talk。您可能会在以下问题的答案中找到更多信息:Any thoughts on Multi-tenant versus Multi-database apps in Rails

+0

这可能有帮助。谢谢 :-) – Jagira 2010-06-27 11:16:32

相关问题