什么是发布策略

  发布策略是不是发布方案、发布计划、发布方法?我们常听到的蓝绿发布、滚动发布、灰度发布是不是就是发布策略呢?下面我们就一起看一下。

  发布

  关于“发布”的含义,我们先看下它在整个软件开发生命周期中的位置,如图所示,发布是软件开发全生命周期中的最后一环,直接面向最终用户。

  图1 软件研发流程

  为了更好的理解交付,我们将各个环节逐一来看一下。

  持续集成是开发人员提交了新代码之后,就对整个应用进行构建,目的是让正在开发的软件始终处于可工作状态;

  持续交付是持续集成的延伸,将集成后的代码部署到类生产环境,确保可以以可持续的方式快速向客户发布新的更改;

  持续部署是在持续交付的基础上,将代码尽早部署到生产环境,以确保可以小批次发布。持续部署是把部署到生产环境的过程自动化;

  持续发布是把一个/组特性提供给(部分或全部)客户的过程,在对用户可见的这个过程称为发布。持续发布是以持续部署为基础。

  持续测试是贯穿整个研发流程始终的,从持续集成到持续部署,都有自动化测试的存在。

  更多相关的内容可以点击​ ​持续交付与持续部署概念解读 ​​进行学习。

  策略

  根据百度百科,“策略”是为了实现某一个目标,首先预先根据可能出现的问题制定的若干对应的方案,并且,在实现目标的过程中,根据形势的发展和变化来制定出新的方案,或者根据形势的发展和变化来选择相应的方案,最终实现目标。简单来说,策略就是解决问题。详细的说,策略就是为企业实现商业目标提供问题解决方案。

  我们看几个关键词:目标、方案、形式的发展变化,即策略是动态变化的,一直以实现目标为核心。

  发布策略

  基于上面的解释,在制定发布策略时,首先需要有目标。敏捷软件开发理念的核心是敏捷宣言和敏捷原则,其中可以用来指导发布的有2条原则:

  a) 我们最重要的目标,是通过及早和持续不断地交付有价值的软件使客户满意。

  b) 经常地交付可工作的软件,相隔几星期或一两个月,倾向于采取较短的周期。

  从大方向上来讲,所有企业的发布都是为了创造价值,也就是对应到上面敏捷原则a)中的最重要目标——尽早交付可工作的软件。“尽早交付”就是要缩短周期,减少时间,关于周期的长度,在敏捷原则b)中指出可以相隔几星期或者一两个月;“可工作”需要保证发布的质量,做好发布的风险控制。由此可见,发布策略的具体化目标应该是实现产品的高频低风险的发布。郑州心理疾病医院http://www.hyde8871.com/

  其次,发布策略不是在即将发布的时候才制定,应该是项目计划阶段的一部分。由产品从研发到上线过程中的所有相关团队负责人共同讨论制定,内容是整个产品生命周期中的发布相关事宜,包括发布前、发布中和发布后三个阶段。发布前最重要的是发布计划,发布过程中监控和日志管理、问题应对方案,发布后的维护方案,整个内容要形成一份文档记录下来。

  最后,在整个生命周期中,随着需求的变化,发布策略也会动态的随着项目同时改变,文档要做好同步进行更新和维护。

  高频低风险的发布

  理解了发布策略之后,下面我们主要介绍实现高频低风险发布目标的核心要素,发布分支和发布方法。

  发布分支的选择

  使用合适的发布分支,可以减少执行发布所需的时间,是高频发布的前提。团队要根据产品的类型、业务的发布周期要求、企业的自动化程度和团队的能力及特点来选择不同的分支策略。发布分支主要有主干发布和分支发布两种。

  主干发布

  主干发布就是用主干代码进行软件发布,所有新特性的开发,都提交到主干上,当需要发布的时候,直接把主干上的代码部署到生产环境。这样可以一直保持主干代码处于随时可发布的状态。

  基于主干发布,团队可以选择主干开发和分支开发两种对应的模式。不论是那种开发模式,都要做到两点:一是早提交,要将代码尽早提交到主干,缩短开发分支的生存周期。因为分支周期越长,积累的代码数量就越多,在提交到主干分支的时候产生冲突的机会就越大,这样就会增加合并的时间。关于开发分支生存周期多短算是合适,业界说法不统一,在《持续交付2.0》中给出的意见是控制在3天以下,可以结合自己的业务情况做参考。实现短周期需要在最初需求拆分的时候做好规划,控制好需求的颗粒度;二是早同步,每个开发分支在工作过程中,要及时和主干代码进行同步,至少每天1次,这样可以减少最后合并过程中的代码冲突问题。

  分支发布

  分支发布是专门从主干上拉出一个发布分支,用于对外发布。这样可以在发布的同时,主干持续进行开发,不会受到版本发布的影响。新版本发布后出现缺陷,可以在发布分支修改后同步到主干,也可以在主干上修改后合并到发布分支。

  使用分支发布的时候也要注意两点:一个是分支的存在周期不要过长,如果在发布分支上修改了缺陷,要及时同步到主干分支;二是不要从发布分支创建新的分支,所有的分支都应该来源于主干分支,保证代码源的唯一性。

  综上所述,我们看到不论是主干发布还是分支发布,如果想实现高频低风险,重要的就是要做好三个控制:

  一是控制分支数,越少越好,最好只有主干分支。

  二是控制分支生存周期,越短越好。

  三是控制发布周期,越短越好。软件发布频率越高,发布周期就越短。当达到了一定的发布频率时,就不需要发布分支了,主干发布即可。

posted @ 2021-11-30 13:27  顾延笙  阅读(456)  评论(0编辑  收藏  举报