devops实战读书笔记

基础理论 + 落地实践

Posted by DanteYu on December 24, 2019

敏捷加快开发速度,并不是加速编码速度而是节省了大量不必要的浪费和返工。

Devops的价值

  1. 高效的软件交付方式
  2. 激发团队的创造力

实施 DevOps,一方面可以通过种种流程优化和自动化能力,改善软件开发团队的工作节奏,另一方面,也可以让大家关注同一个目标,彼此信任,高效协作,调动员工的积极性和创新能力,从而让整个团队进入一种积极创造价值的状态,而这所带来的影响远非建设一两个工具平台可比拟的

高效率和高质量是 DevOps 的核心价值,而工具和自动化就是提升效率最直接的手段,让一切都自动化可以说是 DevOps 的行为准则。一切软件交付过程中的手动环节,都是未来可以尝试进行优化的方向

DevOps三支柱

人(People)、流程(Process)和平台(Platform)

人 + 流程 = 文化 流程 + 平台 = 工具 平台 + 人 = 培训赋能

DevOps 的 4 个结果指标

  • 部署频率:指应用和服务向生产环境部署代码的频率。
  • 变更前置时间:指代码从提交到成功运行在生产环境的时长。
  • 服务恢复时间:指线上应用和服务出现故障到恢复运行的时长。
  • 变更失败率:指应用和服务在生产环境部署失败或者部署后导致服务降级的比例。

每年,这个报告都会基于这 4 个核心指标统计行业内高效能团队和低效能团队之间的差距。代表了软件交付的两个最重要的方面,也就是交付效率和交付质量

DevOps 三步工作法

高度抽象的“三步工作法”,概括了 DevOps 的通用实施路径。

  • 第一步:流动。通过工作可视化,限制在制品数量,并注入一系列的工程实践,从而加速从开发到运营的流动过程,实现低风险的发布。
  • 第二步:反馈。通过注入流动各个过程的反馈能力,使缺陷在第一时间被发现,用户和运营数据第一时间展示,从而提升组织的响应能力。
  • 第三步:持续学习和试验。没有任何文化和流程是天生完美的,通过团队激励学习分享,将持续改进注入日常工作,使组织不断进步。

VSM

要说清楚 VSM,首先就要说清楚什么是价值。简单来说,价值就是那些带给企业生存发展的核心资源,比如生产力、盈利能力、市场份额、用户满意度等。

VSM 是 Value Stream Mapping 的缩写,也就是我们常说的价值流图。它起源于传统制造业的精益思想,用于分析和管理一个产品交付给用户所经历的业务流、信息流,以及各个阶段的移交过程。

说白了,VSM 就是要说清楚在需求提出后,怎么一步步地加工原材料,进行层层的质量检查,最终将产品交付给用户的过程。通过观察完整流程中各个环节的流动效率和交付质量,识别不合理的、低效率的环节,进行优化,从而实现整体效率的提升。

关键要素
  1. 前置时间(Lead Time,简称 LT)。前置时间在 DevOps 中是一项非常重要的指标。具体来说,它是指一个需求从提出(典型的就是创建一个需求任务)的时间点开始,一直到最终上线交付给用户为止的时间周期。这部分时间直接体现了软件开发团队的交付速率,并且可以用来计算交付吞吐量。DevOps 的核心使命之一就是优化这段时长。

需求前置时间:从需求提出(创建任务),到完成开发、测试、上线,最终验收通过的时间周期,考查的是团队整体的交付能力,也是用户核心感知的周期。

开发前置时间:从需求开始开发(进入开发中状态),到完成开发、测试、上线,最终验收通过的时间周期,考查的是团队的开发能力和工程能力。

  1. 增值活动时间和不增值活动时间(Value Added Time/Non-Value Added Time,简称 VAT/NVAT)。在精益思想中,最重要的就是消除浪费,也就是说最大化流程中那些增值活动的时长,降低不增值活动的时长。在软件开发行业中,典型的不增值活动有很多,比如无意义的会议、需求的反复变更、开发的缺陷流向下游带来的返工等。
  2. 完成度和准确度(% Complete/Accurate,简称 %C/A)。这个指标用来表明工作的质量,也就是有多少工作因为质量不符合要求而被下游打回。这里面蕴含了大量的沟通和返工成本,从精益的视角来看,也是一种浪费。

为什么 VSM 会是企业 DevOps 转型的第一步呢? 看见全貌、识别问题、促进沟通、驱动度量和价值展现

如何开展一次成功的 VSM 活动呢? 1.召开一次企业内部价值流程梳理的工作坊或者会议。 2.内部人员走访。

产品需求管理的核心思想

  1. 开发更少的功能
  2. 聚焦用户价值
  3. 持续快速验证。

关于需求分析,比较常见的方法就是影响地图。影响地图是通过简单的“Why-Who-How-What”分析方法,实现业务目标和产品功能之间的映射关系。

需求优先级

在面对一大堆业务需求的时候,首先要进行识别和分类。使用Kano Model 卡诺模型将产品需求划分为五种类型:

  • 兴奋型
  • 期望型
  • 必备型
  • 无差别型
  • 反向型

优先规划期望型和必备型需求 识别无差别型和反向型需求 追求兴奋型需求

需求价值

可以理解为需求价值的度量,分为客观指标和主观 2 个方面。

  1. 客观指标:也就是客观数据能够表明的指标,比如对电商行业来说,可以从购买流程角度,识别商品到达率、详情到达率、加入购物车率、完成订单率等等;
  2. 主观指标:也就是用户体验、用户满意度、用户推荐率等等,无法直接度量,只能通过侧面数据关联得出。

DevOps 的关注点要从研发环节继续向上游延伸,一直把业务团队包括进来。也就是说,IT 部门不仅仅是被动的按照业务需求交付功能,还要更加快速地提供业务数据反馈,辅助业务决策。同时,交付能力的提升也进一步降低了业务的试错成本,而业务的敏捷性也决定了研发交付的需求价值和交付节奏,通过影响地图进行需求分析,再通过卡诺模型分析需求属性和优先级,通过用户故事和整个团队达成共识,通过持续快速验证,帮助产品在正确的道路上发展前进。