你知道连续交货吗?
连续交付到底是什么意思,它的定义是什么?在《持续交付:发布可靠软件的系统方法》一书中,“持续交付”被定义为:
持续交付是软件开发人员尽快向用户交付好想法的一种方法。
听起来是不是有点抽象?其实就像问100个哲学家“哲学”的定义是什么,你会得到101个答案。就像马丁·福勒在2006年提出“持续集成”的概念一样,我们可以将“持续交付”定义为“一套软件工程方法论和许多最佳实践的集合”。
但即使你熟悉了定义和方法论,还是像海市蜃楼,因为大家贡献的最佳实践才是持续交付理论的核心。只有在工作中实施和使用这些实用工具,才能实现持续交付的真正意义和功能。
持续集成、持续交付和持续部署之间的关系
了解了持续交付,你可能会说“持续集成”和“持续部署”是什么意思。
和“连续配送”有什么关系?那我给你简单解释一下。
我们通常将软件R&D作品拆开,分成不同的模块或不同的团队,然后编码。编码后,我们构建并测试它。这种从编码到构建再到测试的重复而连续的过程叫做“持续集成”。
“持续集成”一旦完成,就意味着产品处于可交付状态,但并不意味着是最优状态,需要根据外部用户的反馈逐步优化。当然,这里的用户不一定是真正的用户,也有测试人员、产品人员、用户体验工程师、安全工程师、企业领导等等。
持续集成之后,通过持续集成获取外部对软件的反馈并进行优化的过程称为持续交付,是持续集成的自然延续。
什么是「持续部署」?软件的发布和部署通常是最困难的一步。
传统安装软件需要现场调试,用户购买,难度可想而知。即使是最易访问的互联网应用,由于生产环境的多样性。),架构的复杂性,影响的广泛性,即使产品处于待交付状态,要真正达到用户可用的标准,还有很多问题需要解决。
而“持续部署”是一套快速、安全地向用户交付可交付产品的方法和系统,是“持续交付”的最后“一英里”。
可见,“持续交付”是一个承上启下的过程,使“持续集成”具有实际的商业价值,形成闭环,为未来实现“持续部署”的高级目标铺平了道路。
虽然你可以从概念上理解这一点,但是从实践和我多年的个人经验来看,往往是从“持续部署”到推动“持续交付”,这是首选路径。我将在下面的文章中详细介绍这一部分。
持续交付的明确价值
持续交付通常用“发布管道”的方式来解释,即从开发、测试、部署,最后向最终用户交付产品的过程。如下图:
虽然持续交付侧重于发布管道,但其目标是在“最终用户”和“R&D团队”之间建立一个紧密的反馈回路:通过持续交付新的软件版本,验证新想法和软件变更的正确性,并衡量这些变更对软件价值的影响。
这里所说的“软件价值”就是简单的收入、日常活动、GMV等KPI指标。
通常在实施持续交付后,可以在保证交付质量的前提下,加快交付速度,从而更快地获得市场反馈,引领产品方向,最终达到扩大收入的目的。
在互联网应用普及、速度为王的今天,持续交付的价值凸显。持续交付能力正成为评价互联网公司R&D能力的重要指标。
持续交付的隐含价值
除了以上你一眼就能看出来的价值观,如果把连续交付后的变化看成不同的角色,从不同的角度来看,你还会发现一些其他隐藏的价值观,有些甚至远远超出你的预期。
或者可以说,通过引入持续交付的隐性价值,希望你能明白,无论是什么企业,什么岗位,你都可以或者应该尝试持续交付,一定会让你觉得物有所值。
如果你是首席技术官或大型R&D团队的经理,
1.你经常担心技术选择吗?
技术选择最大的困难是影响大,难以验证。造成这些困难的原因大部分是因为没有合适的测试环境,比如由于环境差异导致测试数据缺乏说服力,缺少隔离环境导致服务冲突等。这就是持续交付的由来。
持续交付的实施将全面改善测试环境的管理方法,使环境管理更加合理和自由。下面几章我也会介绍如何做好环境管理。
2.你是否经常为既定标准难以落地而头疼?
标准、规范、流程的落地需要载体,最好的载体是平台工具。持续交付是一整套平台工具的落地,几乎涵盖了R&D的整个生命周期,是一种天然的最佳载体。
此外,持续交付的实施伴随着各种标准、规范和流程的制定和实施。可以说两者是相互依存的,对于管理理念的实施是一个非常好的解决方案。
3.你经常考虑如何提高跨部门协作的效率吗?
我看到的每一个持续交付实施团队,可以说是最强大的“破壁旅”,是R&D各个协作部门之间的“隔离墙”。
持续交付可以向各协作部门输出统一的标准、流程和工具,提高沟通效率;并通过大量自动化,进一步提高各部门的工作效率;它还可以快速集成,各种分散的团队,无论是横向业务R&D团队还是纵向技术框架团队,都可以紧密联系在一起,共同进退。
4.你担心“黑天鹅”的到来吗?
既然叫“黑天鹅”,说明它有一定的必然性。古语有云“福非祸,祸不可免”。既然无法避免,那就解决吧。其实任何过错都有一个天敌,叫做:快速恢复。
假设3分钟内所有故障都能恢复,你觉得自己无敌吗?从失败中恢复最快最有效的方法是什么?当然,这是回滚,这是连续交付包含和关注的功能之一。
如果你是团队领导,
1.你一定希望团队的知识能够传承下去。
互联网公司人才的频繁流动,已经远远超出你的想象。人来人往,如何传承知识?事实上,在这方面,持续交付也可以为团队提供很多帮助。
首先,持续交付固化了团队所依赖的工作流程;其次,使用代码静态检查等工具,可以很好的继承团队多年的代码规范,并自动作为检查项目进行检查;第三,自动化测试的脚本也是团队经验的产物。
2.你一定希望团队专注于业务,而不是工程。
目前,越来越多的公司或R&D组织认识到,连续交付系统,像中间件一样,可以从日常业务中抽象出来R&D工作。唯一的区别是中间件解决架构问题,而持续交付解决工程问题。这样,R&D团队就可以完全满足业务的需求,而不是不断地在一些烦人又耗时的工程问题上奔波,比如安装测试机器、准备编译服务器等等。
3.你一定希望保持稳定的工作节奏。
虽然在实施持续交付的初始阶段,为了适应新的流程和工具,团队的效率会有一定程度的下降,但在自动化的帮助下,团队的效率会得到明显的提高,并逐渐稳定下来。
持续交付是为了通过坚实的流程、自动化的工具和开放真实的数据,避免在发布前容易发生的“死亡行军”开发阶段。
如果你是产品经理,
1.你应该是产品真正的第一用户。
持续交付不仅可以保证每一个变更都能得到及时的测试和反馈,还可以解决测试和实际发布的差异问题。产品人员将不再陷入“为什么客户端运行的结果与测试环境不一致”的困境,真正成为第一个用户而不是最后一个QA。
2.你要充分意识到目前的进度和质量。
作为一个产品人,你是否总有这样的感觉,R&D团队总有一道墙,程序员似乎不愿意把项目的真相告诉产品人员;最后总是有理由拖延,产品人员往往无话可说。然后,持续交付可以实时反映当前的发展情况,从而帮助产品人员做出决策和调整。
3.你的产品应该随时发布。
计划永远跟不上变化,任何产品人员都希望自己的产品可以随时发布。这样,我们就可以灵活地交付完成的功能,以满足市场或业务的需求。本质上,在线代码和在线业务的解耦和分离是持续交付方法论所强调的一个关键点。
如果你是程序员,
1.通过学习连续交付,您可以进一步增强对整个软件工程的理解。
持续交付涵盖了软件交付的整个端到端周期,不仅包括编码,还包括设计、测试、部署、运维、运营等等。
如果你对自己的发展有更高的要求,那么你要学习持续交付的内容,这样可以让你看到更多其他与编码相关的东西,比如不同的编码方式;它也让你从更高的角度看待你的工作:R&D效率的提高往往不是个人能力的提高,而是集体协同效率的提高。
2.您可以使用持续交付的工具或最佳实践来提高您的工作效率和质量。
随着持续交付的流行,其支持实践和工具层出不穷。如果你玩过乒乓结对编程,你会发现编程这么简单有趣,这种TDD方法也保证了代码质量。
3.您可以参与持续交付的实施,并享受为其他程序员提供高效工具的挑战和乐趣。
想象一下,如果你是出租车司机,你的乘客是舒马赫,你会有多大的驾驶压力。其实参与持续交付的实现也是一样的,因为你是在用程序员的方式转化程序员的工作习惯,为程序员提供工具。
虽然挑战和压力巨大,但是很有意思的是,你会从另一个高度去看你之前的作品,你不想试试吗?
如何评价持续交付的价值
我已经给你讲了这么多关于持续交付的价值,那么如何评价呢?这是一个很难回答的问题,我每年在绩效考核中都问自己这个问题:我应该怎么向老板汇报?我可以量化持续交付的价值吗?
首先你要说,我可以衡量产品的发货速度是不是越来越快了。但是现实中影响产品投放速度的因素太多了。虽然一定要知道连续分娩有积极作用,但比例是多少?好像很模糊,很难回答。
那么,你认为我们可以衡量每个自动化过程的速度是否越来越快,比如编译速度、发布速度、回滚速度、自动测试速度等等。没错,这些指标确实很好的体现了持续交付的价值,但总觉得这些还不是全部。持续交付的标准化、实施的新流程和改革后的环境治理结构似乎没有得到反映。
那么应该如何评价持续交付的价值呢?在这里和大家分享一下我在携程是如何解决这个问题的。
我不仅会评价一些常规的KPI,还会有不同的想法。既然连续交付的价值很难量化,那我们就设想一下,在整个项目生命周期中,有多少问题受到了开发者的批评,或者阻碍了开发者的自我处理,也就是“不可持续点”:
开发一个不能按需产生隔离的测试环境;
生产代码回滚后,代码分支要手工处理;
对于发布前测试,发布前流量应自动分离。
在携程中,我们会记录并分解所有“不可持续点”,以消除这些点为目标,以分解后的可操作点为关键结果,以此方式完成绩效评估。
虽然有些“不可持续点”已经超出了传统的可持续交付的概念,甚至有些已经超出了纯技术改进的范围,但可持续交付将始终专注于消除这些“不可持续点”。
那又怎样,我们只是想不断地传递我们的价值!
摘要
接下来,我为大家提炼一下今天内容的要点。
持续交付的价值不仅限于简单地提高产品交付的效率,还通过统一标准、标准化流程、工具化、自动化等方式影响整个R&D生命周期。
持续交付的最终任务是打破所有影响R&D的“障碍墙”,并赋予软件R&D工作本身权力。无论你是持续交付的老朋友还是新朋友,无论你是公司的经理还是普通的R&D员工,持续交付都会对你的工作产生积极的影响。
最后留个问题,请大家思考一下。你的团队最希望通过持续交付解决哪些实际问题?
如果你想订阅我的专栏,请扫描海报中的二维码订阅
1.《持续交付 持续交付到底有什么价值?》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。
2.《持续交付 持续交付到底有什么价值?》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/junshi/1737190.html