线上配置文件管理是谁的事情?是开发 or 运维
要回答这个问题,首先要明确配置文件存在的目的:配置文件本质是程序的一部分,是程序外部变量的集合,由开发人员创建、使用;同时配置文件作为特殊的"外挂"程序,其加载方式、以及日常维护,涉及到运维的工作范围。
如何分工、考量配置文件的管理?
从角色和使用方式上总结出如下规则:
- 由开发定义:如何使用配置文件和加载方式。
- 由运维定义:如何管理配置文件和加载方式。
如上总结的原因:
开发人员了解配置文件中变量的含义以及对程序运行起到的作用,使用什么技术、有多少种途径能够读取配置文件;而运维人员关注程序整体的可用性、安全性、维护的便利性。所以开发人员侧重使用,运维侧重管理。
所以如何管理配置文件的问题,变成了如何定义读取配置文件的方式。
如何定义读取配置文件,总结为两种方式
-
嵌入配置
从自身项目中读取配置文件,配置文件与程序一起打包发布
-
从外部引入
共享配置文件,程序运行时,由外部链接读入配置文件
具体如何选择读取配置文件的方式?
其中一个思路是:根据公司业务以及系统特点选择:
-
项目小、量多的情况,可以通过嵌入方式。通过程序本身实现自管理模式。
优势:程序运行主要由开发者自主维护,能够灵活应对众多情况。(运维大量的小项目,在实践操作上可能很难)
缺点:遇到开发文档不完善,难以维护。
-
项目大而重的情况,可以通过共享管理的配置。
优势:这类项目,一般是公司重点项目,能够做到精准管理,把配置文件的更新与程序的发布解耦。运维也有精力维护。(也值得维护)
缺点:共享配置文件搞错了,造成整体瘫痪。
以上是关于项目中如何管理配置文件的思考以及方案。
最后从工作性质角度总结一下:
- 运维关注点在整体:考虑整体的可用性、安全性、维护的便利性。
- 开发关注点在程序内部:变量可维护性以及维护便利性。