《持续交付》- 配置管理

一 什么是配置管理


配置管理是一个过程,通过该过程,所有与项目相关的产物,以及它们之间的关系都将会被唯一的定义、存储、检索和修改。

这也就意味着我们应该有一些良好的配置管理策略去对项目中的配置进行管理,这样做的好处也是显而易见的,比如:

  • 我们可以完全再现所需要的任何环境(OS 的版本及其补丁、网络配置以及部署在其上的软件应用和及其配置)
  • 我们可以很轻松的对这些配置进行修改,并可以将这些修改部署到任意一种环境中
  • 我们可以很容易的看到已被部署到某个具体环境中的某次修改,并可以追溯到修改源,谁做的修改,什么是做的修改。

二 使用版本控制


版本控制系统是保存文件多个版本的一种机制。也就是说当我们在修改某个文件之后,我们仍然可以访问该文件之前的任意一个修订的版本。

使用版本控制系统的目的:

  • 保存每个文件的所有版本的历史信息,并使之易于查找。
  • 使得分布式团队可以跟加高效的协作。

为了达到这样的目的,我么可以采纳下列的几条建议

1 对所有的内容进行版本控制

是对所有的内容进行版本控制,而不仅仅只是对源代码进行控制,这也是自己对版本控制的一个误区,在对源代码进行版本控制外,还应该对所开发的软件相关的产物都应该被置于版本控制之下。这些产物可能包含着测试代码、数据库脚本、构建和部署脚本、文档、库文件和应用软件所用的配置等。

只有将上述的所有内容进行版本控制,我们才可以完全享受到从持续集成、自动化部署、自动化测试到一键部署的所有好处。当然了,不是所有的东西都得提交到版本库中,比如说源代码经过编译后的二进制文件。

2 频繁的提交代码到主干

在开发中我们只有频繁的提交代码,才可以享受版本控制所带来的众多好处。一旦将每次的修改提交到版本库,那就意味着团队的所有人都可以看到这些变更,这也会促进内建质量的提高,一旦需到将代码回滚,那么我们也可以回退到离当前版本最近的可用版本,将损失最小化。

3 使用意义明显的提交注释

这样做的好处就是当构建失败的时候,我们可以很轻易的知道是谁破坏了构建,以及他为什么破坏了构建。一个优秀的注释应该包括:

  • 总结性描述
  • 细节性描述
  • 相关问题或者bug的链接

三 依赖管理


在软件开发中,最常见的外部依赖无非就是使用第三方的库文件,而这些库文件一般都是以二进制文件的存在,不会被团队的成员所修改,这也就意味着这些依赖一般不会频繁的更新,所以我们一般也不会将这些二进制文件放入到版本库中,我们最好将其放在统一的一个本地库中。

四 软件配置管理


1 配置与灵活性

在对软件进性配置时,我们一般应该总是先专注与提供具有高价值且可配置程度较低的功能,在真正需要时在添加可配置项。

2 配置的分类

我们一般在构建,部署,测试和发布过程中任何一个阶段引入配置,不建议在构建打包时引入配置,应该保证部署之前所有的包是一样的

3 应用程序的配置管理

  • 获取配置信息
    让所有应用程序通过一个中央服务系统得到他们所需的配置信息
  • 为配置项建模
    一个配置项取决于三个方面
    应用程序
    应用程序的版本
    运行环境(开发,测试,生产)
  • 系统配置的测试
  • 保证外部服务都开启
  • 对与配置项相关的功能进行自动化的冒烟测试

4 管理配置信息的原则

  • 确定注入配置的时机
  • 配置项和配置值分开存储
  • 总是自动化获取配置
  • 每个人应该都能容易的获取当前应用当前版本在当前环境下的配置信息
    命名简单易懂
  • 确保配置信息修改的模块化,改一边不会影响另一边
  • 不要重复定义配置项
  • 最少化配置
  • 避免过分设计
  • 确保对配置操作也有测试

五 环境管理


每一个应用程序都会依赖与硬件、软件、基础设施以及外部系统才能工作,而这些所依赖的东西就被称为是应用程序的环境。环境的配置和应用程序的配置应该是同等重要的。只有我们可以充分的给予了重视,我么才可能:

  • 避免人员离职产生的知识遗忘问题
  • 修复时间往往要耗费很长时间
  • 可以保持各个环境的统一

环境管理需要考虑的配置信息:

  • 操作系统(版本,补丁级别和配置设置)
  • 第三方包(版本,配置)
  • 网络拓扑
  • 所依赖的外部服务(版本,配置)
  • 现有的数据及其他相关信息

当我们在对环境配置进行管理时,我们应该建立一套自动创建的环境,这样可以使得自动创建环境比修复受损的环境要容易的多。

疑问
对软件配置的管理这个概念还不是很清楚。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,723评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,003评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,512评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,825评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,874评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,841评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,812评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,582评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,033评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,309评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,450评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,158评论 5 341
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,789评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,409评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,609评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,440评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,357评论 2 352

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,649评论 18 139
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 46,801评论 6 342
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 172,039评论 25 707
  • 软件配置管理 软件配置管理 (Software Configuration Management, SCM) 问题...
    厲铆兄阅读 8,545评论 2 14
  • 感恩同修王伍强帮忙介绍律师,非常感恩,谢谢你我爱你 感恩健康让我和家人健康快乐的生活不用承受身体痛苦,谢谢你我爱你...
    e61610af7098阅读 47评论 0 0