写点什么

提升软件交付效能——初探“按需发布”

  • 2021-04-07
  • 本文字数:2828 字

    阅读完需:约 9 分钟

提升软件交付效能——初探“按需发布”

在精益思想的指导下,团队寻找开发流程中的阻碍点,并从各个层面做出调整策略。在业务侧,分析哪些需求可以做到按需发布,哪些需求无法做到,设定适合团队的按需发布标准,并调整迭代工作量。在开发侧,考虑数据的兼容性,部署方式,以及高频率部署所带来的环境准备问题。在测试侧,提高自动化测试的运行速度和主流程的覆盖范围,并利用平台自身的自动化测试覆盖率统计功能,查缺补漏。


按需发布可以有效缩短变更前置时间,提高部署频率,进而产生强有力的业务影响,同时也是《The 2019 Accelerate State of DevOps : Elite performance , productivity , and scaling》中推荐的提高软件交付效能的实践之一。精英效能组织已将按需发布作为一项基础能力,例如: CapitalOne 每天部署 50 次,或者例如 Amazon、Google 以及 Netflix 每天部署几千次。尽早的将业务推向市场,不仅可以抢占先机,也可以充分发挥调研的价值。


本文中的 DevOps 持续交付流水线平台项目,已经经过 3 年多的持续演进,功能逐步完善,当前平台为 1000 多个团队提供状态可视化和即时反馈。团队希望借助按需发布,尽早推出新功能,更快的为客户带来价值。


在之前 3 年多的演进过程中,平台以 2 周为一个迭代进行交付。在一个迭代中,大部分同学进行本迭代的功能开发,小部分同学梳理新需求,为下个迭代做准备。平台以蓝绿部署策略进行上线,在上线前准备预生产环境,为 QA 同学提供与生产环境相似的环境进行测试。在上线中,进行环境的切换,每次切换需要 10-30 分钟的维护时间。这段时间内,团队需要进行数据迁移、消息迁移、切换流量等动作。这样的交付节奏持续了两年的时间,有效的保证了平台的代码质量和迭代的平稳推进。

流水线平台蓝绿部署示意图

动力来源

  1. 随着平台功能的逐步趋于稳定、用户数量逐渐增加,项目的关注点也有所转移,团队希望缩短从需求确认到上线的时间,做到按需发布;

  2. 恰巧公司内部也在进行研发效能的治理;

  3. 团队也希望借此机会,提高平台自身的软件交付效能,随后将研发效能的度量集成在本平台,对外提供服务;

实践探索

借助精益思想,我们团队开始寻找从需求确认到上线过程中所有阻碍用户的环节。希望从各个层面上消除浪费,来提升整体的价值流动效率,助力需求的顺畅交付。


首先,我们使用“影响地图”对按需发布这个目标进行分析,发现问题,并找出对应的解决方案。然后,根据这个分析结果,制定了团队的 OKR(Objectives and Key Results)。



影响地图



团队 OKR

为了实现按需发布,团队分别从业务侧,开发侧和测试侧做了如下调整。


业务侧,BA 针对需求分析,做了如下调整:

1、识别可以独立交付的功能

  • 除日常两周一次上线外,分析需要按需交付的功能,和团队同学(TL/QA)一起确认这些功能是否能做到独立交付;


2、迭代计划中考虑按需发布的工作量

  • 将能独立交付的部分功能,拆分为单独的故事卡,打上标签,并放入迭代计划中一起考虑(主要考虑额外产生的工作量)。理想情况可以分别制定按需交付和按迭代交付两种计划,但由于目前能做到按需交付的功能有限,还不够成熟,暂时未分开;


技术侧,团队针对现有的开发和部署策略,做了如下调整:

  • Feature Branch 开发:对于需要按需发布的代码,单独一个 feature 分支进行开发,在上线前合并到 release 分支,在预生产环境进行测试。上线成功后,合并回 master 分支。后续 DevOps 流水线平台也会支持一条流水线多分支自动构建,自动 merge 分支等功能,保证 feature 分支的持续集成和持续交付。

  • 数据库兼容性:团队采用向后兼容的方式。对于新增表和字段等操作,可以直接增加。而对于修改,重命名等操作,团队内部也讨论一套数据库变更规则。规则如下表所示


数据库向后兼容方案

  • 预生产环境自动化准备:自动化部署脚本,一键准备预生产环境,准备时间从原来需要 2 位同学花费 1 天,缩短到 1 位同学 2 个小时。

  • 部署策略:团队利用 OpenShift 滚动部署功能,进行应用的部署。修改原有生产环境流水线,构建镜像。完善平台的部署脚本,实现一键部署到生产环境。

  • 流量异常处理:采用 OpenShift 的滚动部署方式,当部分旧实例关闭后,仍然在线的旧实例,将会需要承载更多的流量。设置合适 maxUnavailable 和 maxSurge 参数可以逐步的关停旧实例,以保证在线实例数量,避免部分应用瞬时流量过大。

  • 服务优雅停:团队采用了优雅停的方式,避免旧实例直接停止,所带来的数据不一致的问题。

  • 回滚策略:对于回滚,团队采用了与部署相似的方式,以滚动发布的方式一键回滚。


测试侧,测试同学对于需要按需发布的功能,有了以下实践

1、需求 review

  • 在需求进入开发前,对其进行 review 和补充。着重考量需求的独立性,以及其影响范围,以此判定回归测试的范围。如果需求独立且影响范围可控,那么进一步思考测试工作的难易程度,是否容易获取稳定的测试数据,功能是否有涉及第三方依赖等。


2、功能快速验证

  • 需求进入开发后,同步开发自动化测试,以便在结卡时,以部分自动化测试进行验收。测试过程中,除了进行常规测试和探索性测试,还需要上线前完成相关功能的自动化测试,用于回归。


3、依托自动化方式的回归测试

平台功能不断增加,团队就更加依赖于反馈迅速和覆盖全面的自动化测试,以快速验证按需发布的功能,并且验证原有功能不受影响。

  • 反馈迅速:在自动化测试用例相互独立的前提下,利用自动化测试框架特性和流水线的并行功能,并行运行测试用例,加快自动化测试的速度,迅速获取反馈。

  • 覆盖全面:在快速反馈的前提下,尽可能的提高自动化测试覆盖率。依托平台自动化测试覆盖率统计功能,根据覆盖率补充、完善自动化测试。随着业务的扩展和测试用例的增加,后续可考虑部分精准测试以提高反馈速度。


当前,流水线项目只对部分可独立交付的业务需求,做到了按需发布。平台从一个迭代发布一次,演变为一个迭代发布 N 次。其中 N-1 次是按需发布,剩余的 1 次为按迭代交付。对于涉及开发人数较多的,模块较大的需求,团队仍以迭代进行交付。逐步扩大按需交付的范围,也是团队今后努力的方向。

经验总结

在精益思想的指导下,团队寻找开发流程中的阻碍点,并从各个层面做出调整策略。在业务侧,分析哪些需求可以做到按需发布,哪些需求无法做到,设定适合团队的按需发布标准,并调整迭代工作量。在开发侧,考虑数据的兼容性,部署方式,以及高频率部署所带来的环境准备问题。在测试侧,提高自动化测试的运行速度和主流程的覆盖范围,并利用平台自身的自动化测试覆盖率统计功能,查缺补漏。

对于初创团队,可以将按需发布作为目标,但建议还是以正常迭代节奏进行交付,待团队成熟后再进行按需发布。


为此,可以在以下几点做准备:

  • 发布流程自动化:使用 Jenkins 或者其他 CI/CD 平台搭建流水线,做到持续集成和持续交付。

  • 保证无状态服务:避免实例在本地存储持久化的数据。

  • 准备不停机部署策略:调研所使用发布平台的发布策略,是否支持不停机发布和回滚。

  • 测试快速验证反馈:建立回归测试,项目初期搭建自动化的回归测试,优先覆盖主流程,逐渐增加测试覆盖率。


本文转载自:ThoughtWorks 洞见(ID:TW-Insights)

原文链接:提升软件交付效能——初探“按需发布”

2021-04-07 13:002253

评论

发布
暂无评论
发现更多内容

​KubeEdge社区2025年需求征集

华为云原生团队

云计算 容器 云原生

测试用例管理必备:15款系统全方位评测

易成研发中心

测试用例管理工具

CAD捕捉不到点是什么原因?怎么解决?

在路上

cad cad看图 CAD看图软件 CAD看图王

下载超快!2小时下完DeepSeek !还送算力券!!

天翼云开发者社区

AI CDN加速 DeepSeek

镜舟数据库:3倍性能重构零售“人、事、物”数据体系

镜舟科技

大数据 数据分析 StarRocks 镜舟数据库

腾讯云发布TencentOS AI加速版,助力DeepSeek私有化场景推理提速100%

TencentOS

Linux 操作系统 DeepSeek TencentOS

企业 AI 之痛:使用DeepSeek 碰壁,Folib 制品库 “救场”

BoCloud博云

博云 制品库 DeepSeek

MaxCompute x Dataworks × DeepSeek,实现使用自定义数据集微调DeepSeek-R1蒸馏模型

阿里云大数据AI技术

人工智能 MaxCompute Dataworks PAI DeepSeek

三款国产远控软件流畅度对比:向日葵胜出

科技热闻

不愧是腾讯,面试的质量太高了

王中阳Go

Go 腾讯 后端

Tommy John智能订货系统上线:重新定义内衣供应链管理

第七在线

爱回收查询项目IDAPi接口(爱回收API系列)

tbapi

爱回收 爱回收API接口 爱回收商品详情数据接口 爱回收数据采集

人工智能 | 社交与AI的碰撞:小红书与DeepSeek能否撼动百度江山?

测试人

一键生成CAD图块,轻松入库,告别繁琐操作!

在路上

cad cad看图 cad软件 CAD看图王

启信宝发布文旅产业洞察报告,商业查询技术洞察经济新增长极

合合技术团队

人工智能 大数据 数智文旅

Deepseek让中国软件像哪吒一样渡劫

深清秋

软件 DeepSeek

一文看懂6种常见的DDoS攻击类型

国科云

提升软件交付效能——初探“按需发布”_架构_张凯峰_InfoQ精选文章