Pivotal Cloud Foundry - 托管服务与用户定义服务

Pivotal Cloud Foundry - Managed vs User Defined Service

过去 2-3 个月我一直在使用 Cloud Foundry,遇到过用户定义和托管服务。我的理解是,如果托管服务伴随着服务代理所需的实施,而如果是用户定义的服务,则定义服务的人必须负责实施。我想了解使用托管/用户定义的服务比在应用程序中定义连接详细信息(或在 属性 文件中将其外部化)有什么优势

我相信使用服务绑定方法的总体优势是应用程序不必为每个可能的环境部署多个配置文件。

具体来说,如果您有 Dev、Test、Stage 和 Prod 环境,您可能会有一组反映每个环境的自定义 URL/IP/Ports/credentials 的配置。您还需要一些方法来触发使用正确的环境配置。在 Spring 引导方法中,您通常使用 Spring 配置文件来定义和激活这些配置。但是,这通常意味着您的应用程序已提前与所有必需的配置文件配置捆绑在一起。

使用 Cloud Foundry,connection/service 绑定细节是通过部署的云平台本身注入的。这意味着您实际上只需要定义一个 "cloud" 配置文件,它适用于您必须支持的所有环境。

这种方法可以说有一些好处:

  • 您可以适应新的环境,而不必 rebuild/reconfigure 应用程序本身。例如,如果您有 short-term 对 Test2 的需求,您可以轻松创建和定义新的 space 和服务绑定,而无需重新构建应用程序。从技术上讲,您可以通过其他方式实现这一目标——正如您通过外部化配置所建议的那样。我对 CF 的理解是,这并不是真正值得鼓励的做法(并且可能不容易实现,除非您将所有内容外化为独立的环境变量)。

  • 您不必在应用程序配置中存储凭据。这可以说是一种安全优势,因为应用程序开发人员永远不必知道他们绑定到本地环境之外的任何服务的连接详细信息。这对您来说可能重要也可能不重要。

  • 您可以跨环境使用不同的支持服务实现(可能是为了避免 non-prod 中的高许可成本?)。我不喜欢这种方法,所以我真的不认为它有什么好处。

希望更多接触 Cloud Foundry 的其他人可以插话,如果我遗漏了其他潜在的好处。

另外,我会查看这个项目:http://cloud.spring.io/spring-cloud-connectors/ 更仔细地看看您是否可以通过该方法获得任何额外的好处。