配置文件特定属性与环境变量

cha*_*ny1 4 spring development-environment config 12factor spring-boot

使用Spring-boot,我们可以在Profile特定属性文件中存储不同环境的配置参数,但是这会使配置成为12因素原则不推荐的代码的一部分.

相反,12 -factor建议在环境中存储配置(这里,配置专门表示其值在不同环境中变化的参数).

在环境Vs特定于配置文件的属性文件中存储配置的优缺点是什么?

Dan*_*ski 8

在代码中配置

优点:

  1. 单点,因为所有属性都在一个位置,您的团队中的每个人都可以轻松访问.当所有配置都在一个地方时,比较不同的环境会更容易.
  2. 版本控制系统跟踪对环境属性的所有更改.您可以在提交消息中描述更改的原因.
  3. 您可以使用自动化测试在构建过程中验证属性的正确性,并避免使用无效配置启动应用程序.

缺点:

  1. 更改配置(即使是单个环境)也需要重建整个应用程序.
  2. 版本控制系统可用于存储敏感的认证信息,例如数据库密码.即使加密形式保留这些值也可能存在风险.
  3. 如果您的组织限制对常规开发人员的生产环境的访问,并且有一个专门负责此角色的特殊操作团队,那么开发团队可能不会将所有必需的配置详细信息放入代码存储库中.

在环境中配置

优点:

  1. 更改配置不需要额外的应用程序重建.
  2. 敏感信息不存储在版本控制系统中.
  3. 可以实现运行时配置更新.

缺点:

  1. 应用程序启动时必须验证配置.如果部署不是自动化的,并且由开发团队之外的人员执行,则尤为重要.
  2. 配置更改的历史记录可能不如使用版本控制系统那样清晰.代码和配置更改之间的连接丢失.
  3. 如果在问题发生时不知道应用程序的确切配置,则可能无法再现错误.跟踪外部配置更改是一项更复杂的任务.

没有什么是黑白的,你可以随时使用折衷的解决方案,混合两种方法.您的配置的一部分可能适合与源代码保持一致,而另一部分可能保留在外部.与编程一样,它取决于您的需求.