首页 > 其他分享 >如何建立变更管控流水线

如何建立变更管控流水线

时间:2024-07-30 14:55:56浏览次数:9  
标签:风险 管控 线上 测试 流水线 变更

星球有同学问了这样一个问题:研发过程中,事前变更管控流水线该怎么建设?

将这个问题进行拆解,可以得到三个重要的点:事前变更、变更管控、流水线建设。

其中事前变更属于研发过程计划内的操作,即可预料的变更。对变更进行管控的目的在于风险可控,而建设流水线的好处则在于将手工操作转化为机器自动执行,降低手动误操作带来的不可控风险。

下面的内容,我会结合自己的实践经验,就这三点分享一些我的思考。

 

事前变更

从软件工程的角度来说,一次软件版本迭代的生命周期,大致要经过需求-设计-编码-测试-运维-交付六个阶段,其中每个阶段的流转都涉及到大量的变更。比如:

  • 编码:研发完成编码并自测通过,要将代码发布到开发环境进行联调。
  • 测试:冒烟测试通过后,研发提测,将最新分支代码发布到测试环境。
  • 线上发布:回归和验收测试通过,质量符合线上要求,运维同学线上发布。

上述几个环节,无一不涉及到变更。典型的有:DDL表结构变更、环境参数配置变更、注册配置中心相关变更、数据库基础数据同步以及部分线上业务开关

这些变更,都是软件研发交付过程中必要的操作,即可预料的事前变更。

但只要是变更,就可能会存在隐藏的风险,这些风险会对最终的交付质量产生重大的影响。因此各种研发规范和测试流程就应运而生,与之对应的则是每个环节都要进行的评审。

无论是研发规范和测试流程,还是各种评审,做这些动作的原因在于:每个人的工作习惯、技术栈、沟通方式都不同。

流程规范是为了将团队中不同的人划入同一个大的方向中,并告诉大家前进的目标以及关键的节点。

评审是为了尽早的发现需求、方案、代码、用例中可能存在的风险,并及时处理。而测试的执行动作,更多的是检查代码实现的需求是否在各个方面符合预期的目标。

 

变更管控

据不完全数据统计,大部分线上问题,最直接的原因都是变更导致。变更并不是简单的代码发布,还包含配置变更/服务器变更/DDL变更甚至业务活动的开关等变更,理论上所有变更都会对线上质量造成影响,因此变更管控很重要。

对变更进行管控的目的:一方面是通过不同的角色参与,从不同的角度进行review,查漏补缺;另一方面通过check和审批的方式落实责任,这样才能提高团队所有成员对于变更的风险认知和质量保障意识。

在变更review和double check时候,需要变更申请人说明变更内容/影响范围/异常情况的解决方案等,这样即使变更出问题,也可以及时修复,将风险控制在合理范围内。

虽然说搞各种流程规范和管控会无形中增加管理和沟通成本,但在实际的工作场景中,我们不能把对线上质量的期望,放在团队每个人都具有高度的专业素养和极强的技术能力之上。

流程只是引导,在软件开发这种技术工程领域,强制的技术手段,严格的检查和完善的监控告警机制,可信度更胜于人的主观行动

 

流水线建设

聊完了是事前变更和变更管控的目的,接下来聊聊变更管控流水线的建设思路。

  1. 通过评审评估出变更范围,影响范围,及各种依赖项。
  2. 针对变更范围和影响到的范围,梳理出用例集并全量验证。
  3. 针对各项常见变更沉淀为变更手册,并将变更尽可能转变为自动执行。
  4. 变更分级,重大变更审批,测试做好double check,准备好可能的风险预案。
  5. 风险预案需要通过验收,且执行变更时要有人值守,做好监控观测和应急响应。
  6. 做好权限管理,细分到环境和变更操作类型(如禁止研发的线上发布权限,由QA/运维或者专门的线上配置管理员进行发布变更操作)。

从我的角度来理解,变更管控和流水线建设都是预防机制,更进一步可以通过质量内建和测试左移右移来提升交付质量。

每个阶段都有风险,那就通过质量门禁在每个环节设定准入准出标准,降低风险流转到下一环节带来的影响。

参与项目的每个人技术能力、工作习惯、理解能力各不相同,那就推动质量内建在团队中落地,通过流程规范和卡点确保工作在执行过程中的满足标准。

测试环境不稳定,设计和编码阶段存在风险,通过测试左移来推动单元测试、code review、分支管理更好的执行

打包部署线上发布存在不足,那就通过测试右移完善监控体系,制定线上巡检和防资损机制,主导复盘和持续迭代优化

最终形成质量交付闭环。

 

标签:风险,管控,线上,测试,流水线,变更
From: https://www.cnblogs.com/imyalost/p/18332417

相关文章

  • 守护数字世界:网络准入控制与终端安全管控解决方案
    网络准入控制与终端安全管控解决方案在当今这个数字化时代,网络安全已成为企业运营和社会发展的基石。随着网络攻击手段的不断演进,如何确保网络环境的安全性、稳定性和高效性,成为了每一个组织必须面对的重要课题。上海安秉信息技术有限公司,作为信息安全领域的佼佼者,凭借其先进......
  • 带你学习通过GitHub Actions如何快速构建和部署你自己的项目,打造一条属于自己的流水线
    本文主要讲解通过github的actions来对我们项目进行ci/cd一、actions简介GitHubActions是一种持续集成和持续交付(CI/CD)平台,可用于自动执行生成、测试和部署管道。您可以创建工作流程来构建和测试存储库的每个拉取请求,或将合并的拉取请求部署到生产环境。GitHubActions......
  • CBR云备份与恢复管控简介
    本文分享自天翼云开发者社区《CBR云备份与恢复管控简介》,作者:c****n1.CBR云备份与恢复介绍CBR(CloudBackup&Restore)是一般云厂商提供的备份与恢复服务。用户可以在云端对数据进行备份和恢复,保证数据的安全性和可靠性。使用CBR,用户可以方便地随时随地备份和恢复数据。采用......
  • 如何自动化地实现,对外发文件全生命周期的管控?
    在全球化商业环境中,企业间的合作与交流日益频繁,文件外发成为日常工作中不可或缺的一环。然而,随着文件在外部网络中的流动,外发文件过程存在的数据泄露风险,也随之增加。如何有效管控外发文件的安全,防止敏感信息泄露,成为企业信息安全管理的重要课题。企业间文件传输是保证业务正常......
  • 使用iptables管控docker容器
    docker与iptables说明某些项目考虑到安全问题,需要启用iptables来进行加固。根据官方文档介绍(https://dockerdocs.cn/network/iptables/):在Linux上,Docker操纵iptables规则以提供网络隔离。尽管这是实现的详细信息,并且您不应修改Docker在iptables策略中插入的规则,但是如果您想要......
  • 216java jsp SSM公司企业人事人力资源管理系统员工考勤休假申请人事变更考核标准结果
     项目技术:SSM+Maven+Vue等等组成,B/S模式+Maven管理等等。环境需要1.运行环境:最好是javajdk1.8,我们在这个平台上运行的。其他版本理论上也可以。2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;3.tomcat环境:Tomcat7.x,8.x,9.x版本均可4.硬件环境:windows7/8/1......
  • 云原生周刊:Kubernetes v1.31 中的移除和主要变更|2024.7.22
    开源项目ArgoRolloutsArgoRollouts是一个Kubernetes控制器和一组自定义资源定义(CRDs),提供高级部署功能,例如蓝绿部署、金丝雀部署、金丝雀分析、实验以及渐进式交付功能给Kubernetes。ArgoRollouts可选地集成了Ingress控制器和服务网格,利用它们的流量塑形能力,在更新期......
  • 最详细的Verilog阻塞,非阻塞赋值语句介绍--数码管控制段选信号代码
    目录前言一、结构语句1、initial语句2、always语句二、赋值语句1.阻塞赋值2.非阻塞赋值3.总结三、条件语句1if_else语句2.case语句前言本文笔者将为大家详细的介绍Verilog的三种语句介绍,包括结构语句,赋值语句和条件语句一、结构语句1、initial语句initi......
  • 研发管理案例-项目管理平台-需求任务变更历史分析
    研发管理过程案例分析-项目管理平台-需求任务变更历史分析背景    软件项目管理平台在研发过程中扮演着至关重要的角色,其意义主要体现在以下几个方面:提高效率:通过自动化工具和流程管理,减少手动操作和重复工作,从而提高研发团队的工作效率。确保质量:通过严格的测试管理、代码审......
  • 园区道路车辆智能管控视频解决方案,打造安全畅通的园区交通环境
    一、背景需求分析随着企业园区的快速发展和扩张,道路车辆管理成为了保障园区秩序、提升运营效率及确保员工安全的重要任务。针对这一需求,旭帆科技TSINGSEE青犀提出了一种企业园区道路车辆管控的解决方案,通过整合视频监控、智能识别等技术,实现园区内车辆的有序管理,提升安全管理水平......