12要素网络应用开发方法(三)设置(转载)

[复制链接]
查看11 | 回复0 | 2021-1-11 03:38:52 | 显示全部楼层 |阅读模式
  将设置存储在环境中
  应用的设置包括所有在不同的部署(例如,预备站点,正式上线站点,开发环境等)中会发生变化的所有东西。一般包括:
  - 数据库、Memcached、以及其他后援服务的资源访问控制。
  - 外部服务(例如Amazon S3或Twitter)的认证。
  - 针对每个部署本身的一些值,例如本次部署的正规主机名。
  ------应用性能管理APM专家DrXray http://blog.sina.com.cn/xrayonapm------
  应用有时会把设置当做常量写在代码里面。这是违背12要素法的原则的,12要素法要求严格地区分代码和设置。设置随部署不同而多变,而代码不变。
  要知道应用是否正确地将设置从代码中提取出来可以用一个简单测试:看看是否在任何时候都能把codebase变成开源,而不会泄露任何公司的认证信息。
  ------應用性能管理APM專家DrXray http://blog.sina.com.cn/xrayonapm------
  需要注意的是这里所说的设置并不包括应用的内部设置,例如Rail中的config/routes.rb,再如Spring中的代码模块链接设置。这种设置不会因不同的部署而改变,所以在代码中设置。
  另外一种设置方式是使用不签入版本控制系统的设置文件,例如Rail中的config/database.yml。这相对于在签入到代码存储库中的常量设置法已经是巨大的进步了,但还是有它的弱点:非常容易误将设置文件签入到存储库中;而且各种不同格式的设置文件会弄的到处都是,非常难以统一查看及管理。而且,这些格式都是针对特定的语言或平台的。
  ------应用性能管理APM專家DrXrayhttp://blog.sina.com.cn/xrayonapm------
  12要素应用将设置保存在环境变量中。环境变量在不同的部署中可以方便地修改,而不需要改代码;不像设置文件,也基本不可能把环境变量误签入存储库;不像自定义设置文件,或如Java系统属性的其他设置方法,这种设置也是不依赖于语言和操作系统的标准。
  ------應用性能管理APM专家 DrXray
http://blog.sina.com.cn/xrayonapm------
  设置管理的另外一个方面是分组。有时应用将设置批处理到以特定部署命名的分组(一般称为环境),例如Rail中的development,test,production等环境。这种方法不能干净地扩大规模:创建新部署的时候,就需要新的环境名,例如staging,qa等。当项目变大时,开发者会加上自己的特殊环境变量比如joes-staging,这就会造成设置连锁爆炸,让应用部署非常容易出错。
  ------应用性能管理APM 专家 DrXray http://blog.sina.com.cn/xrayonapm------
  在12要素应用中,环境变量是最底层的控制,它们相互之间都是独立的。不将它们分组,而是针对同部署进行管理。这种模型让应用在整个生命周期内都可以无缝地扩展到更大规模下更多新的部署。
  转载请注明出处
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行