2012-12-03 45 views
-1

我不清楚如何cloudControl MySQLd插件的作品。 我对MySQLd的理解是,它是一个MySQL服务器,可以/将使用无限的应用程序。使用相同的cloudControl MySQLd插件与多个应用程序

但是,由于所有插件仅基于应用程序,这也意味着我无法在多个应用程序上使用相同的MySQLd服务器。

任何人都可以请帮我理解一个MySQLd实例是否可以与cloudControl上托管的多个应用程序一起使用?

回答

2

cloudControl PaaS有两个概念。应用程序和部署。应用程序基本上是将开发人员和部署组合在一起。每个部署都是与匹配部署名称的分支不同的正在运行的应用程序版本。有关这方面的更多详细信息,请参阅Apps, Users and Deployments documentation

所有插件都是每次部署。我们这样做是因为这样我们可以提供所有凭据作为运行时环境的一部分。这意味着您不必在版本控制文件中拥有凭证。当分支合并时,这是一个巨大的好处,因为您不会冒险无意中与来自dev部署的实时数据库。附加组件凭据随时可以由附加组件提供商自行决定更改。

由于这个原因,部署之间的分离很有意义。例如,通常您的开发部署也不需要与生产部署相同的数据库功能。因此,您可以轻松使用较小的计划,甚至可以使用共享数据库(例如MySQL)进行开发。您可以在Add-on documentation的代码中详细了解如何使用此功能。

同样如前所述,附加凭证始终作为运行时环境的一部分提供。现在,凭证可随时由附加组件提供商自行决定更改。这些更改将在环境中自动提供,并且应用程序进程将重新启动。如果您对第二个应用程序所需的凭据进行了硬编码,则这意味着该应用程序可能会遇到停机时间。

最后但并非最不重要的是,从不同存储库中的两个不同代码库连接到同一个数据库通常是非常糟糕的做法,这将是获得第二个应用程序的原因。这会导致各种潜在的冲突和依赖性,导致代码更改和数据库迁移极其难以维护。推荐的方法是仅拥有一个代码库所拥有的数据,并提供一个API来访问第二个代码库中的数据。

所有这一切都表明,从技术上来说,将多个部署甚至应用程序连接到相同的附件(数据库或其他任何东西),但强烈建议不要。

如果您有充分理由将两个应用程序/部署连接到同一个数据库,我建议您在亚马逊上手动启动RDS实例(MySQLd基于RDS)并通过自定义配置附件提供凭据到你的两个应用程序/部署。

我希望这能回答你的问题,并解释原因。

+0

关于从cloudcontrol直接连接到RDS,您可以请回答以下问题:http://stackoverflow.com/questions/13687835/access-our-own-aws-rds-instance-from-cloudcontrol-apps 我不希望我们的RDS实例公开可用。使用安全组帐户ID和名称从EC2服务器访问RDS实例有更好的方法。您能否帮助我在AWS控制台中插入所需的信息,以便cloudcontrol中只有服务器可以访问我的RDS实例? – Risul

+0

我不会说从多个应用程序使用自己的数据库连接到相同的数据库服务器是不好的做法。我们正在开发一个SaaS应用程序,其中所有租户都将拥有自己的数据库,这实际上是一个非常好的做法,而不是使用prefix/sufix(wordpress方式)制作大量表格,或者仅在每个表格中添加租户列。 将有一个前端(为我们的客户客户)和一个后端(为我们的客户)。因此我们将使用相同的数据库部署两个应用程序。 – Risul

+0

我回答了不同的问题。我知道你希望有一个客户面对前端和后端来管理客户关系。我不认为在不同的应用程序中拥有这个功能是很有价值的。您可以轻松地将内部管理员安装在sudbomain或子目录中,并通过某些访问控制手段保护内部管理员,但仍将代码保存在同一个存储库中。我同意多个客户的多个数据库方法。这很好。 – pst

相关问题