产品每次上线不是延期就是线上BUG不断,怎么办?
  Z8zL9hqmxVXj 2023年11月02日 26 0

“提效”,是一个永恒的话题,过去是、现在是、未来更是。从管理学角度来讲,效率是指在特定时间内,组织的各种收入与产出之间的比率关系。效率与投入成反比,与产出成正比。随着互联网的出现,研发效能也逐渐被大家重视起来。

企业进行研发效能的最终目标,是增加单位时间产能,但许多时候,很多措施与方法实施下去,却发现南辕北辙,弄得大家疲惫不堪。 “产品每次上线都延期,上线之后 Bug 不断”、“研发辛辛苦苦搞定的项目,上线之后效果很差”、“产品与研发相互推诿扯皮,互相背锅”等现象也层出不穷。

借用列夫托尔斯泰《安娜·卡列尼娜》的那句经典——幸福的家庭都是相似的,不幸的家庭各有各的不同,那么,在研发效能领域是否存在相似的结论呢?或许有、或许没有。“有”是因为很多团队的效率非常高,“没有”是因为大家的情况各不相同,有些“硬件条件”改变起来较难。但是,即便这样,也不改变大家持续探索的脚步。

依稀记得,在去年 ArchSummit 全球架构师峰会(深圳站)的晚场上,大家以研发效能度量为话题,沟通了两个多小时,气氛热烈且深刻。今年 7 月 15-16 日,深圳站 ArchSummit 架构师峰会特别策划了【研发效率提升】专题,以此为大家提供更多的实践案例,希望对你有帮助。

为了让本次专题更加有含金量,我们邀请了阿里巴巴效能专家何勉担任本次专题出品人,他是阿里云云效解决方案的负责人,当然,他也是国内最早的精益产品开发实践者之一,著有《精益产品开发:原则、方法与实施》一书。

此次专题,何勉也将亲自带来 《产品研发的数字化转型和研发效能提升实践》分享话题,通过大量成功和失败的案例,分别从业务、技术和数据这三个维度讲述 BizDevOps 体系和产品研发的数字化转型实践方法。

此外,我们还邀请了腾讯课堂研发效能负责人董峤术,他将以 《腾讯课堂面向协作的 DevOps 流程设计与实践》话题展开分享,通过此次话题分享,你可以了解到腾讯课堂 DevOps 实践,与此同时,也可以学习腾讯课堂研发效能的度量、ChatOps 推进方法。

随着企业业务对软件系统日益依赖,IT管理与研发模式也随之对“敏态”模式产生了需求,也就是今天时常提起的DevOps。提升效率,是DevOps实践的核心内容之一。就让我们来一起从软件生命周期的业务流与作业流,探讨DevOps实践效率提升的方向与方法吧。

 

 

一、DevOps之“流”分析

 

 

软件工程将软件的生命周期定义为问题定义、需求分析、软件设计、程序编码、软件测试、运行维护等过程,无论是对于传统模式、敏捷模式还是DevOps模式,软件生命周期过程基本一致,如下图所示。

 

产品每次上线不是延期就是线上BUG不断,怎么办?_数据

 

软件生命周期

软件生命周期各个过程也组成了软件工程的“业务流”,而在不同团队采用相应地开发模式中,具体执行的开发及相关的活动,我们则成为“作业流”。

DevOps实践中,最主要改进的内容,就是对于这些 “作业流”的活动进行“关停并转”,从而实现整体与局部上对于效率的提升。

这些作业,也就是需要开展的活动,可以分为以下几类:

 

 ① 人与人的互动

 这类活动交互的双方均为自然人,如业务需求收集,活动的特点是具备高度的不规则与不规律性。

 

 ② 人与机的互动

 这类活动交互的一方为自然人,一方为依托于计算机的程序,如编码活动、人工审核/审批等,活动的特点是人的活动必须依循计算机相关主题的规则,部分活动可以抽取为规范化的过程。

 

③ 机与机的互动

这类活动的特点是交互的双方都是依托于计算机的程序,如编译构建、自动化测试,活动的过程高度规范化。

不同的作业类型,在效率提升的优化中,需要采用的方法各有不同。

 

 

二、 DevOps效率提升之协作

 协作的本质是在不同的主体之间进行快速、有效的信息共享,从而进一步协调各主体进行步调一致、有序的工作执行,实现整体上的一致性与顺畅性,协作是DevOps实践中效率提升的重要方向和内容之一。

 DevOps实践中的协作更多需要是从软件生命周期整体系统化考虑与设计,协作设计上面主要包括以下两个方面。

 

01. 信息共享

 传统的模式中,相关业务信息仅共享于各阶段内部,而在DevOps实践中,则更强调信息的跨阶段共享,面向产品的全生命周期,共享信息包括:

 

① 业务类信息

 即业务目标、业务背景、业务需求、业务限制等信息。

 

② 执行类信息

 即软件开发、编译、测试、部署等执行的相关信息,如开始时间、结束时间、执行时长、执行操作记录等。

 

③ 反馈类信息 

即各步骤、阶段执行的信息反馈,如需求拆分反馈、任务执行反馈、代码扫描结果、测试结果、发布验证结果等。

 

 

DevOps时间的信息共享,需为以上信息提供统一的信息管理与分析平台。对于代码编写之前的阶段提供如敏捷协同的工作协同管理模块,以记录需求、任务分配、需求完成进展等信息,对于代码编写之后的阶段,则提供相对完整的执行记录信息以及必要的通知信息,以构建及时的反馈。


02. 协作调度


协作调度是DevOps协作实践中另外一项关键内容。通过工具平台的驱动,实现对于“机与机的活动”全自动协作调度,对于“人与机的活动”简化协作调度,对于“人与人的活动”事件驱动协作调度,进而实现优化协作调度的效率,提升协作效果。


① 全自动协作调度

 

全自动的协作调度主要是通过DevOps平台的流水线引擎实现,通过流水线编排的实现指定作业流自动执行,执行过程中自动完成不同阶段的信息交互,过程无需人工参与。


② 简化的协作调度


简化的协作调度也是通过DevOps平台的流水线引擎实现,在流水线作业流中编排需要人工干预的节点,但仅需要人工给出通过/终止等简单的指令型信息即可。

 

③ 基于事件的协作调度


基于事件驱动的协作调度,主要是用于“人与人的活动”,也可以用于“人与机的活动”,其通过通知、待办等事件方式,实现精准的信息共享与推送,驱动协作的下游方快速接受和推进事务工作。


DevOps实践中的协作调度的效果可以通过研发效能来进行初步的评估与衡量,通过衡量,我们可以较为清晰的获知哪个阶段的协调调度是关键阻碍点或可以进一步优化。


三、DevOps效率提升之自动化


自动化是DevOps的核心理念,也是效率提升的最重要手段。通过DevOps工具平台,实现软件过程自动化以及软件过程的支撑工作自动化。

 

产品每次上线不是延期就是线上BUG不断,怎么办?_作业流_02

 

01. 软件过程自动化


软件过程自动化是指在软件的开发、测试、部署等过程中,引入自动化的手段,从而实现快速的软件质量检查,以及软件应用发布。


① 开发过程自动化


开发过程的自动化主要针对源代码扫描、编译构建、制品归档、报告归档等环节实现自动化。

源代码扫描包括采用商用/开源工具,从代码的规范、缺陷、复杂度、重复率等方面进行扫描和质量检测。

编译构建包括针对服务器端、移动端等不同编译构建类型的支持,如Maven、Gradle、Node.js等编译构建方式支持。

制品/报告归档包括对于二进制包、文档、镜像的归档和存储支持。

通过流水线引擎,实现以上内容的自由、可视化编排,以及按需执行。


② 测试过程自动化

测试过程的自动化主要针对软件测试中的单元测试、接口测试、稳定功能的UI测试、测试数据自动生成和清理等过程。

包括测试任务的组织、测试脚本的执行、执行结果的自动统计等。

  

③ 部署过程自动化

部署自动化是指针对软件的部署发布过程,包括数据库更新、应用部署、灰度/滚动发布、回滚等过程。

 

 

02. 过程支撑自动化

软件过程支撑主要是指面向软件工程过程的支撑,实现自动化包括:

 

 ① 编译构建环境自动化

编译构建环境包括基于DevOps平台的自管理编译构建环境,按需生成编译构建环境,编译构建完成后自动销毁,以及特定编译构建环境的快速接入等。

 

② 测试环境自动化

测试环境自动化是指自动化测试执行所需的能力环境,如接口/UI测试脚本所需的执行环境,可以根据测试任务的需要,实现测试环境的弹性伸缩自管理。

 

③ 环境部署自动化

环境部署自动化是指对于开发、测试、生产等所需要的基础环境,可以根据流水线自动完成环境的使用前的生成、使用后的回收等,实现资源即代码,无需人工参与。


在DevOps实践中,通过大量的过程及支撑自动化,可以极大的减少开发、测试、运维等工作的人工参与时间,降低人工成本,并能实现人工无法完成的工作,例如快速对10000台服务器上的应用进行更新。但前期的建设需要涉及的技术点较多,成本也较为巨大,如何建设落地自动化,除了考虑效率之外,还需着重考虑DevOps平台的自主可控与可持续发展等方面。

 

 

四、DevOps效率提升之持续优化

持续优化,是DevOps效率提升的第三个主要方面,也是践行DevOps理念的重要实践。持续优化需要解决优化什么、如何优化等问题。这些问题的解决,需要应用DevOps精益分析的理念实践。

精益分析,本质就是对数据的统计、分析与挖掘。


01. 数据获取

精益分析所涉及的数据应从需求提出到用户访问形成一个端到端闭环。数据的获取需要从业务系统本身以及支撑业务系统的DevOps平台两个方向获取。早期可以以DevOps平台相关数据的获取为主要来源,后续可持续集成非DevOps平台以及来自业务系统埋点获取的数据。在整个过程中,需要做到数据的及时性、准确性与完整性。

 

 

02. 数据分析 

数据分析需要有明确的目标和针对性,如针对业务需求提出到上线的平均周期、开发返工趋势等,通过数据分析,可以快速找到当前影响效率的关键点,从而实现针对性的改善。

 

产品每次上线不是延期就是线上BUG不断,怎么办?_生命周期_03

 

03. 数据呈现 

数据呈现即为数据应用,数据呈现可以采用两种方式进行。

 

① 协同管理

将数据获取/分析的结果,在DevOps的协同管理平台实时的反馈和呈现,从而推动PO/开发团队/干系人等根据反馈信息快速推进效率优化,通过量变引发质变,通过团队内自我优化的方式实现效率的提升。

 

② 度量分析

针对于与效率相关的重点指标,通过可视化大屏等方式,进行专项的度量分析,并在管理与项目团队共享指标信息以及指标的变化趋势,通过全局监督的方式推进效率的提升。

 

 

五、结论

文化上的协同打破了流程与部门的屏障,共享了信息,协作了调度;过程中的自动化消除了重复性的工作,降低人为风险;业务系统与DevOps平台的数据支持精准提供优化的方向。DevOps之所以能为企业提升效率在于DevOps的实践实现软件生命周期的业务流与作业流的一致与顺畅。

 

 

 



【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  SBowDWXjb0NT   2023年11月30日   22   0   0 redis线程池数据
Z8zL9hqmxVXj
最新推荐 更多