如何为客户提供隔离的数据库并同时保持对代码的控制?

如何为客户提供隔离的数据库并同时保持对代码的控制?

我有一个托管在 AWS EC2 和 RDS 上的 SAAS 应用程序。我们使用 django 和 Postgres 作为堆栈

我们的做法是,使用公共模式保存租户信息,但租户特定数据则保存在同一个数据库的单独模式中

最近我们收到一些请求,一些客户希望在自己的场所托管软件,因为他们希望完全控制数据。

这意味着我们失去了对源代码的控制,而且调试和部署托管在本地而不是云端的代码更加困难。

他们可能同意我们将其部署到他们的 AWS 账户上。所以这是他们的 ec2 和 rds。

这给了我们一个想法。

我们是否可以在我们的 AWS ec2 上部署源代码,并且它们的数据将位于它们的 AWS rds 中?

我们需要实现的是:

  1. 我们无法读取他们的数据
  2. 他们没有办法读取我们的代码
  3. 但我们可以轻松地进行代码更改和架构更改(可能通过 django 迁移)

我们如何使用 AWS 服务实现这一目标?我需要一个粗略的计划。

到目前为止我的想法是

A. 在他们的 rds 中对我们的 ec2 数据进行编码(确保 2 和 3 而不是 1)

B. 在他们的 ec2 上编写代码并在他们的 rds 中存储数据(确保 1 而不是 3&2)

或者是否存在涉及调整 A 或 B 的解决方案?

答案1

如果可以的话,我想问的第一个问题是,我们是否应该允许将此作为​​一项业务,他们所提出的建议违背了软件即服务的目的。

现在,如果你想以 OVA 的形式出售软件版本,类似于GitHub 企业版

您可以设置一个跨账户角色对于 SaaS 软件的部署,您仍然可以控制 EC2 实例上的代码库并授予它们数据库级别的读取权限。

实现一个 AMI,将您的软件部署到他们的账户中,并在AWS 市场

允许他们访问并转储/导出客户数据,以便在现场对数据进行他们想做的事情,例如行动网络或者销售队伍

您可以执行其中任意数量或全部操作,具体取决于它们是否适合您的软件架构和部署以及您想要提供的业务模型。

相关内容