(图片来源网络,侵删)
持续交付是一种软件工程手法,让软件产品的产出过程在一个短周期内完成,以保证软件可以稳定、持续的保持在随时可以释出的状况本文作者仅希望通过通俗的语言,来分享自己一点关于“持续交付”的认识我们都知道,产品交付,是需求实现的“最后一公里”路,但交付不仅仅只是“将代码部署到测试环境,测试通过后,即可上线”一句话这么简单,交付过程涉及到复杂的流程、团队协作和交付工具等等,任何一点都会影响到产品的整个生命周期一般来说,产品经理极少会参与到最后代码交付过程中去,因为交付主要是由研发、测试和运维等角色在负责,产品经理最多参与进测试阶段事实上,所有的产品团队成员,都应该对我们的产品目标负责一名合格的产品经理,切勿从心理上,就将产品、测试甚至是研发、运维的职责都完全割离开来,从需求的诞生到实现,产品经理应该尽可能的了解和知悉每一个过程,才能让需求实现更加的顺畅,促使自己能够换位思考,掌握全局本文主要来讨论一个概念——持续交付,我并非技术出身的产品经理,仅希望通过通俗的语言来分享自己一点关于“持续交付”的认识持续交付是什么?百度百科上的定义:持续交付是一种软件工程手法,让软件产品的产出过程在一个短周期内完成,以保证软件可以稳定、持续的保持在随时可以释出的状况光看这句话是不是一脸懵逼?关于持续交付的定义,其实早有前人给出了很通俗的解释:持续交付是软件研发人员,如何将一个好点子,以最快的速度交付给用户的方法感觉还是有点抽象?没关系,我们来解读一下这句话:上句中、好点子,就是需求;交付给用户,就是需求上线,这是一个众所周知的过程其实这句话强调的是:最快的速度,也就是说交付过程的重点是效率这和敏捷开发的概念是不是有点类似?什么是敏捷开发呢?提到敏捷开发,不得不提到与之相对的一种开发流程:瀑布流开发——即严格地将开发分隔成各个阶段:需求分析、要件定义、基本设计、详细设计、编码、单体测试、结合测试、系统测试等有点像工厂流水线,前一阶段的完成才能开始下一个阶段的工作,意味着没有回头路,返工代价很大,用户对需求无法反馈,十分不适应这样的开发方式已经无法适应当前的易变、模糊、不确定的互联网环境了就像斯宾塞·约翰逊说过的:唯一不变的,就是变化本身所以敏捷开发方法像净化空气的春雨般出现了,敏捷开发方法的核心是迭代,也就是通过2-4周的迭代时间,不断的交付客户的需求每一次迭代都包含需求分析、设计、实现和测试等多个环节,每一次迭代都可以生成一个稳定和被验证过的软件版本敏捷开发是强调敏捷的软件开发项目管理方式,而持续交付是强调效率和灵活的一种软件工程手法,持续交付就可以定义为敏捷开发管理的一个子集怎么看待持续交付?经过了以上定义,大部分人对持续交付究竟是做什么的,还很茫然接下来将结合其他概念,让大家更深入理解持续交付提到持续交付,不得不提到持续集成、持续部署,也就是我们常说的CI/CD 持续集成:我所理解的持续集成是,在进入开发阶段前,会将研发工作进行拆解,可能是拆分成不同的功能模块,也可能是拆分成若干个任务由不同人员来进行开发拆分之后,就一定需要将代码合并起来,形成完整、有效、正常运行的代码,这个过程叫做集成,反复持续,就叫持续集成持续部署:持续部署是持续交付的最高阶段,代码在经过自动化测试、单元测试或者评审后,自动的部署到正式(目标)环境中,快速安全的交付给用户使用持续交付则是一个承上启下的过程,它是在持续集成后,通过测试、产品的使用和验证和反馈后,不断地对产品进行优化我们再回顾前面提到的定义:产品、测试就是所谓的第一个用户,所以这个定义还是很贴切易懂的持续交付,从业务层面来说,其实是存在着决策的过程的,因为它是在部署到正式环境之前,产品经理或领导者需要做业务判断,判断代码是否可正常交付?是否解决业务问题?是否满足业务需求等等?那么持续交付从技术层面,是怎么实现呢?持续交付的实现方向持续交付的具体实现方式要从配置管理、环境管理、构建集成和测试管理等几个方面入手,仅仅通过一篇文章是无法讲述清楚的,并且更适合由研发人员去研究和实践,感兴趣的话可以阅读《持续交付-发布可靠软件的系统方法》这本专业书籍来具体学习这里我仅仅从宏观的产品角度,来总结持续交付的实现方向:为令人痛苦的手动步骤,建立起可重复、可靠的自动化过程每一次的修改都能够经过一次构建、测试、部署、发布完整高效的自动化验证过程,实现高速频繁验证,快速解决问题的闭环最后的结果就是:小批量/小粒度频繁的进行持续部署或发布,从而得以实现持续交付当然,在前往这个方向的道路上, 一定要有猛药去疴的决心,如:(1)技术层面 改变dev/ops团队在PaaS层面所使用的工具和应用方式;改变系统架构、部署架构等(2)组织层面 优化调整人员结构;打破耗时、完全人工的流程束缚;……产品经理能享受持续交付带来的好处吗?持续交付所带来的收益和价值是能覆盖整个产品团队,而不仅仅是开发人员 产品的灵活交付、发布可控,随时有一个稳定可发布的版本,产品人员身为产品前进方向上的主导者,可以有效把控版本发布节奏而且,计划是赶不上变化的,代码交付、功能点部署,是可以根据业务要求可灵活变换的产品人员是曝光在大众、用户目光底下的人,是出现问题故障,要首当其冲化解内外矛盾的人,产品人员对整个产品上线能否正常运行负有重要责任同时,产品人员还是“产品的第一个用户”,我们可以享有持续交付的保护,因为持续交付可以保证在迭代中的每个阶段或需求变化时,都能够及时测试验证,获得问题反馈因为持续交付,需要持续构建和集成代码,并且及时部署到测试环境去验证,产品经理以此可知悉当前开发的进度和质量,及时决策或调整,避免开发人员无故拖延工期所导致的扯皮现象在实施持续交付后,可以做到在保证交付质量的前提下,加快交付速度,从而更快地得到市场的反馈,产品经理就可以尽快做出判断,更好的引领产品的方向,最终达到扩大收益、提高价值的终极目的本文由 @有馅儿的丸子 原创发布于人人都是产品经理未经许可,禁止转载题图来自 Pexels,基于 CC0 协议
0 评论