《持续交付 2.0》读书笔记
当我们通过“探索环”对最小可行方案达成共识以后,要借助“验证环”的快速运转,才能将其交付到用户(客户)手中,从而得到真实且可靠的反馈,以验证之。
快速验证环的运转速度也由两部分决定:一是探索环中得出的最小可行性解决方案的大小和复杂性,我们在前一章中已经讨论过得到最小可行试验方案的工作方法,二是验证环自身运转的速度。
进入验证环的基本前提是“团队已达成共识,所选的方案是当前所处环境下,验证或解决业务领域问题的最佳方式”。验证环的目标就是借助各种方法与工具,让质量可靠的解决方案以最快的速度到达客户手中,从而收集并分析真实的反馈。
质量与速度是验证环的关键,然而,它们却常常被认为是互斥的,也就是说,要想交付质量好,那么交付速度就会慢,反之亦然。然而,Puppet Labs 发布的 2017 年 DevOps
现状调查报告结果显示,与低绩效 IT
组织相比,高绩效 IT
组织可以同时实现这两个目标,也就是说,发布质量好而且频率高。持续交付 1.0
在这方面发挥了巨大作用,如质量内建、小批量交付、自动化一切重复工作等。
验证环的主要工作内容就是以最可靠的质量和最快的速度,将最小可行性解决方案从描述性语言转换成可运行的软件包,并将其部署到生产环境中运行,准确收集相关数据并呈现,以便团队根据相关数据做出判断和决策。
与探索环一样,它也包含 4 个环节,分别 是构建、运行、监测和决策。
构建环节是将自然语言的描述转换成计算机可执行的软件,即“质量达标的软件包”。这一环节既要求相关人员能对业务问题及试验方案达成共识,又要求能够准确地将团队的意图转换成最终仅由 0 和 1 组成的数字程序。
这一环节的参与角色最多,尤其当开发一个新产品或者产品有重大变更的时候,参与角色如业务人员、产品经理、开发工程师和测试工程师,以及运维工程师。每个角色的背景知识和技能优势各不相同,如何快速将人们头脑中的解决方案变成可以运行的高质量软件包,一直是软件工程领域的一个难题。这是验证环内不确定因素最多的一个环节。
时间盒管理 、 工作任务分解 和 持续验证 是应对这种不确定性的好方法。
这一环节是开发团队与运维团队之间发生冲突最多的环节,也是重复性手工操作最多的环节之一。在这一方面,团队应该不遗余力地进行改进和优化,将人从重复性体力劳动中解放出来。
监测环节收集数据,并统计展现结果、及时发现生产系统问题以及业务指标的异常波动,并做出适当的反应。它也是团队做出决策的最重要数据源之一。
为了能够在第一时间收集到所需数据,团队必须在验证环一开始就讨论并确定验证所需的数据需求,尽早讨论并定义数据需求规范,制订日志记录标准,建立数据日志元数据,并与相对应的功能需求一并同时实现。否则即使相应的功能特性上线,也无法得到相应的数据而耽误决策。
决策是指收到真实的业务数据反馈结果后,根据探索环中已确定的相应衡量指标进行对比分析,从而验证是否符合最初的预期。通过分析其中原因,最终确认原来定义的那些需求假设是否成立,并决定是否坚持原有的产品方向,或者根据得到的信息做出调整。此时,下一步行动既可能是从精炼环节的最小可行方案列表中选择下一个试验方案,也可能是返回到持续交付 “8” 字环的起点,开始新问题的探索。
验证环的工作原则主要包括 质量内建、消除等待、尽量并行、监测一切。很多软件开发方法已为我们提供了诸多优秀实践,消除了其中的浪费。然而,有一些实践可能会超出团队当前的能力,需要团队管理者制订相应的团队能力提升计划。
“质量内建” 就是从生产过程的第一个环节开始,就要注重产出物的质量,并且在每个环节中都要开展质量保障活动,消除因质量问题导致的返工及次品率上升,以此降低最终的质量风险,保障进度。
提升效率的最有效方法也许就是消除各环节的等待。
在软件研发过程中,还有很多重复性的工作,如搭建测试环境、回归测试、应用部署与发布等。在交付频率不高的情况下,这些活动并不会占用很多的工作时间。然而,随着验证环运转速度的提高,意味着在固定的时间周期内,软件的发布频率提高,这种事务性工作的固定成本占比也会越来越大。
我们必须通过优化流程和自动化措施,有效降低这些固定的事务性成本,同时避免不必要的人为操作失误,才能使其具有可持续性。
当软件在生产环境运行之后,我们需要能够及时准确地收集并分析数据。对生产系统的监测有两个目的,一是要确认软件的确在正常运行,一旦发现异常,我们可以及时采取措施,纠正错误,以免影响用户的使用。二是要及时得到有效业务数据,验证我们在探索环中提出的假设。
对于第一个目的的监测,可以称为“应用健康监测”。
对于第二个目的的监测,可以称为“业务健康监测”,其主要是针对业务指标的监测。
验证环以快速高质量交付为主,主要包括 4 个环节,分别是构建、运行、监测和决策。在 “持续交付 2.0” 的“识别并消除一切浪费”理念的指导下,验证环的 4 个工作原则分别是质量内建、消除等待、重复事务自动化和监测一切。
只有坚持这些指导原则,不断发现并消除工作中的浪费,才能够提升验证环的运转效度,加快对最小可行解决方案的验证。