DevOps相比敏捷更专注软件交付的全流程,从需求产生到上线发布,DevOps贯穿始终。敏捷、精益、DevOps都关注客户/用户价值,《DevOps 实践指南》^[1]^一书中提出了“流动 - 反馈 - 持续学习和实验”这一经典的DevOps三步工作法,其中流动这一步,通过使用价值流图(VSM)对软件交付过程进行建模,使整个过程可视化,从而识别出交付的瓶颈和各个环节之间的依赖关系。

++VSM从价值中来,到价值中去,应当是我们开展DevOps落地实践的第一步。++

VSM是第一步首先就要说清楚什么是价值。简单来说,价值就是那些带给企业生存发展的核心资源,比如生产力、盈利能力、市场份额、用户满意度等。VSM的关键要素包括:前置时间(LT)(需求前置时间、开发前置时间)、增值活动时间(PT)和不增值活动时间、完成度和准确度(%C/A)。

为什么 VSM 会是企业 DevOps 转型的第一步呢?VSM可以帮助我们看见全貌,进而识别问题(识别短板、发现不增值活动等)。VSM的梳理还能够促进价值链上下游团队的沟通,驱动各环节的数据度量,评测并展现真正有价值的活动(PT)。

我们分析下软件交付过程价值流动过程,绘制价值流图找到软件交付过程的瓶颈。示例如下图所示^[2]^。

image.png

其中,前置时间(Lead Time,LT)是指一个需求从提出的时间点开始,一直到最终上线交付给用户为止的时间周期。处理时间(Process Time,PT)是指的是这个步骤的处理时长。完整度与准确度百分比(the Percent Complete and Accurate,%C/A)这个指标用来表明工作的质量,也就是有多少工作因为质量不符合要求而被下游打回。这里面蕴含了大量的沟通和返工成本,从精益的视角来看,也是一种浪费。

关于增值时间和不增值时间,也可以划分为两个层面。

首先是从全局的维度统计等待时间,如果你已经用了电子看板工具,那么一个任务从开始到结束的周期内,有多长时间处于等待状态,比如待开发,待测试,待发布,那这些都是典型的不增值时间。

其次,从微观角度,深入到各个环节内容,比如开发环节,统计那些除了真正写代码之外的活动时长,比如构建打包,比如提测任务,比如没人评审的提交,比如审批活动,这些理论上都是不增值的时间,可以尽量优化掉。至于说开发本身的效率高低,这个不方便度量,但我相信,只要外部这些不增值的时间被优化掉,其实就能解决大头的问题。

关于完成度和准确率,完成度最简单的就是统计迭代周期内的任务,有多少按时完成了,有多少延期了,比如按时提测率,虽然刚开始的时候对于任务的工作估计会有很大偏差,但随着团队磨合以及对于业务的理解,这个估计会被不断地矫正,更加贴近于真实情况。准确率方面,可以重点考察被下游打回的流程,比如研发提测后,测试发现自测不达标打回研发,可以统计提测打回率,根据团队情况也可能是缺陷数量,需求被打回的数量等,再比如上线发布后,发现有问题出现回滚,那就是上线失败率,也可以进行统计。

关键点是,指标贵精不贵多,预期一次性度量10个指标,不如把一个关注点的指标做透,直到改进流程影响行为。

++具体如何开展VSM梳理工作呢?++

1、我们可以开展一次内部价值流程梳理的工作坊或者会议,可以选取改进项目对象中某个核心的业务模块,参加会议的人员需要覆盖软件交付的所有环节,参会人员要尽量是相对资深的,因为他们对自身所负责的业务和上下游都有比较深刻的理解,比较容易识别出问题背后的根本原因。

2、也可以是内部人员走访。可以成立由DevOps领域专家组成专门的工作组,对软件交付的各个环节的团队进行走访,询问被走访人职责、上下游团队、价值活动占比、使用的关键系统、有无等待、是否有打回上游交付的工作等问题,逐步绘制出VSM。

++结语++

除了VSM价值流图作为我们实践DevOps的第一步,我们似乎还有很多选择,比如,建设CI/CD工具链加速软件交付、设置质量门禁保障产品质量、根据DevOps成熟度模型识别差距项逐一补齐,或许,这些也都是不错的“DevOps落地起手式”。

其实,这些方法笔者也都尝试过,根据我们在企业中实践DevOps的经验来看,建设CI/CD、质量门禁或者补齐成熟度,虽然很值得做,但是每一项实施周期都会相对比较长,建设过程中看不到效果,很容易让高层失去耐心,而且也有可能跌入“局部优化而非全局优化”的陷阱。

++可以依然拿VSM价值流图作为第一步,拿到一些瓶颈数据,之后攻克第一瓶颈,数据也会告诉我们取得了成功,高层也会更有信心,在这个过程中再去建设CI/CD工具链、质量门禁、自动化测试体系等,稳扎稳打,用一个个小成功,引领我们走向真正的DevOps持续改进之路。++

参考:

[1] https://book.douban.com/subject/30186150/

[2] https://book.douban.com/subject/35103584/