过去2-3个月我一直在使用云代工厂,并且遇到过用户定义和管理的服务。我的理解是,如果托管服务带有所需的实现服务代理,并且在用户定义服务的情况下,定义服务的人必须负责实现。我想了解使用托管/用户定义服务而不是在应用程序中定义连接细节(或在属性文件中将其外部化)的优势
答案 0 :(得分:2)
我认为使用服务绑定方法的总体优势是应用程序不必为每个可能部署的环境配置多个配置文件。
具体来说,如果您有Dev,Test,Stage和Prod环境,您可能会有一组反映每个环境的自定义URL / IP / Ports /凭证的配置。您还需要一些方法来触发使用正确的环境配置。在Spring Boot方法中,您通常使用Spring Profiles来定义和激活这些配置。但是,这通常意味着您的应用程序会提前与所有必需的配置文件配置捆绑在一起。
借助Cloud Foundry,连接/服务绑定详细信息将通过部署的云平台本身注入。这意味着您只需要定义一个适用于您必须支持的所有环境的“云”配置文件。
这种方法可以说有一些好处:
您可以站起来处理新环境,而无需重建/重新配置应用程序本身。例如,如果您对Test2有短期需求,则可以轻松创建和定义新的空间和服务绑定,而无需重建应用程序。从技术上讲,您可以通过外部化配置来实现其他方式。我对CF的理解是,这实际上并不是一种鼓励的做法(除非你将所有内容外部化为独立的环境变量,否则可能不容易实现)。
您不必在应用程序配置中存储凭据。这可以被认为是一种安全性好处,因为应用程序开发人员永远不必知道它们绑定到本地环境之外的任何服务的连接细节。这可能对你很重要,也可能不重要。
您可以在不同环境中使用不同的支持服务实现(可能是为了避免非产品的高许可成本?)。我不是这种方法的粉丝,所以我并不认为这是一种好处。
如果有其他潜在的好处,我希望其他更多接触Cloud Foundry的人可以加入。
另外,我会仔细研究这个项目:http://cloud.spring.io/spring-cloud-connectors/,看看你是否可以通过这种方法获得任何额外的好处。