持续集成和持续部署流程的CMDB模型设计和应用

前言

我们知道,目前CMDB一般用于管理IT基础资源和应用相关资源,所管理的都是实体对象,如IDC、机柜、服务器、网络设备、IP地址、应用、集群、域名等等。当然,单纯的记录这些信息是没有多大意义的,我们的目标是要利用这些元数据来满足运维的业务场景,在此基础上实现例如持续部署、监控、变更、生命周期管理等各种操作和流程。而对于DevOps实践来说,持续集成和持续部署则是其最重要的流程。

在现有的各种CMDB方案中,很少有对流程进行深入讨论的。一方面是对于服务管理类流程已经有ITIL、ITSM等一套方法论来描述,所以不会着太多笔墨;另一方面对于持续集成和持续部署流程,有一种情况是直接被交给其他工具或平台来完成了,比如Jenkins pipeline,没有和CMDB紧密结合,所以也基本不需要讨论。

Jenkins Pipeline方案

目前一种比较流行的持续集成和部署方案是通过Jenkins的Pipeline来实现。Jenkins本质上是一个构建工具,它提供了非常多的插件,通过这些插件来执行像是拉取代码、编译、打包、邮件通知等操作,来完成构建任务。而Pipeline则能将这些操作组装成流水线,自动地完成从构建到部署整个流程。

看上去很美对不对?但是,这种方案有有一个很大的不足,就是无法很好地控制各个步骤的进行,而且也很难做到“一次构建、到处运行”。举个实际的例子,一个新版本部署的时候肯定是先部署到测试环境,测试没问题了才能部署到生产环境,那测试通过后如何部署到生产环境?是要重新构建吗?还是改jenkins脚本?所以说,想要把流控控制在手里就必须自己设计流程模型,自己实现流程。当然,流程中的具体步骤可交给专门的工具来做,但绝不能把整个流程拱手相让。

流程分析

在实际的运维场景中,我们需要知道这个流程进行到哪一步,是成功还是失败、如何增加审批功能等等,因此,我们需要将这个流程用模型把它描述出来,识别出它的每一个步骤,以及相应的状态变化,从而能够掌握并控制整个流程并在此基础上增加一些高级功能例如对整个持续集成、持续部署进行可视化。

首先我们来梳理一下这个过程:

image

上图描述了持续集成和部署的最简单流程。开发人员提交代码到代码仓库,触发构建工具进行构建(相比于普遍的自动触发做法,我觉得此处手动触发更实用),构建完成后,将应用包部署到测试环境,然后测试人员对版本进行测试,测试通过后,再部署到生产环境并验证。

模型设计

根据上面的梳理和分析,应将一个版本从构建到部署当做一次完整的流程,即同一版本的代码只构建一次,就能根据实际结果决定部署到测试或生产环境。
首先,每次提交代码都会产生一个版本,用Version(版本)模型来描述。
其次,将持续集成和部署过程抽象为一个广义的Deploy(部署)模型。Deploy模型继承自Version模型,与Version模型是一对一的系。Deploy模型用于管理Version的整个生命周期。

Version模型主要包含以下字段:

  • 项目
  • 版本号,指定的版本标识
  • 包路径,该版本构建出来的制品的路径
  • 版本修改说明
  • 状态,描述该版本所处的环境/名字空间
    其中状态有以下值:
  • 开发,版本处于开发状态,默认值
  • 测试,版本处于测试状态
  • 挂起,版本发布到测试环境后,又有新版本发布到测试环境,那么该版本就处于挂起状态
  • 中止,当有版本部署到生产环境时,处于挂起状态的老版本会变成中止状态。
  • 上线,版本部署到生产环境后就处于上线状态
  • 下线,上线的版本被新的版本上线代替后,变成下线状态

开发作为Version模型生命周期的开始,中止、上线及下线三个状态作为Version模型生命周期的结束
Deploy模型主要包含以下字段:

  • 步骤/阶段,当前版本的部署流程处哪个阶段
  • 各阶段的时间戳
    步骤/阶段有以下取值:
  • 提测,
  • 构建
  • 部署测试
  • 测试
  • 部署生产
  • 验收

模型应用

有了上述模型,我们可以很容易获知:

  • 某个项目/应用的所有版本状态
  • 所有部署的当前进度
    根据该模型的设计,实现的某个项目/应用实例的版本信息展示:


    image

    部署实例展示:


    image

    进一步,可以对研发工作效率和质量进行评估:
  • 评估某个版本的需求效果。比如某个版本部署到测试环境后很久都不上线,那我们有理由怀疑这个新版本的需求是无用的。
  • 通过分析Deploy每个阶段的时间戳,可以评估开发/测试人员的工作效率
  • 对可能影响重大的步骤进行人工审批,比如部署生产环境的步骤。
  • 分析所有未结束生命周期的Deploy实例(处于中止和挂起状态的实例)的数量,来评估开发人员的工作质量。
  • 对持续集成和持续部署进行可视化,多少处于测试状态、多少处于挂起状态,一目了然。

总结

本文重点讨论了持续集成和持续部署流程在CMDB模型中的设计和应用,识别出了其中最重要的两个模型Version和Deploy,并详细定义了这两个模型的字段信息,特别是定义了Version模型的状态和Deploy模型的步骤/阶段两个重要字段。该设计能够灵活地控制流程的各个步骤,并能准确地反映流程和状态之间的作用关系。最终,能够方便地将持续集成和持续部署流程进行可视化,将相关数据进行分析后还可用于评估研发人员工作质量和效率,甚至验证产品需求等。

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

推荐阅读更多精彩内容