2015-04-07 125 views
0

我正在设计一个SAAS application,它将托管在AWS上。以前我用Elastic Beanstalk来管理应用程序。我可以设计应用程序,以便所有客户共享单个DB(使用EB应该很容易)。有没有办法为每个客户拥有一个单独的数据库? 我可以使用环境(这似乎不是一个好主意,因为环境并不意味着这一点),或者为每个客户端创建一个单独的beanstalk应用程序(我不确定是否不会更新更麻烦)。 我也可以把EB放在一边,完全使用不同的AWS服务。Elastic Beanstalk上的SaaS应用程序

我的问题是 - 可以EB用于创建一个多租户SAAS应用程序与孤立的数据库,或我锁定共享解决方案(单一应用程序,单个数据库)?

回答

1

如果您的客户“来我的网站,注册,开始使用”,然后使用单个数据库将其构建为单一应用程序。设计您的数据库和应用程序为多租户,通过内置的授权检查来正确隔离数据。

如果你的SaaS架构采用EB环境或数据库根据客户的话:

  1. 你必须支付资源每个客户。这包括EC2实例,RDS实例等。
  2. 当客户注册时,他们需要等待这些资源初始化。这种延迟可能会导致他们去别处而不回来。
  3. 随着您的客户群的增长,您的资源也会随之增长。更新将需要更长时间才能应用。

我不会将多租户数据库架构视为“锁定”。只要设计正确,我认为它是“正确的”。

+0

还有一个问题,如果我可以@Matt。如果我必须实现隔离的数据库体系结构(或者每个客户端甚至有一个db/one应用程序实例),我可以使用'Elastic Beanstalk'实现它,还是应该使用'CloudFormation' /'OpsWorks'(我不熟悉与两者)? 恐怕客户可能不愿意接受完全共享的模型(主要是出于安全原因)。 – Looted

+1

如果你真的必须分开数据库。如何在同一台服务器上分离数据库表?每个客户端也有不同的凭据。更像是'共享主机' –

+1

Elastic Beanstalk在底层使用CloudFormation。如果您需要保持数据库分离,那么它们都可以工作。 –