当DevOps落地实施撞上技术债务,如何量化债务突破困局


                                                                                                                                                <p style="color:#303030; margin-left:0; margin-right:0; text-align:start">大家好,我是陈哥。</p> 

想必不少朋友在推进 DevOps 落地时,都或多或少遇到过技术债的问题。我们该如何有效解决这个问题呢?

今天,我邀请了禅道专栏作者李斌,和我们分享一下 DevOps 实践中量化技术债的方法。希望通过这些实操经验能给大家带来启发,帮助大家更好地应对技术债的挑战。


多年前,我在一个工作坊上,听到老师问“你们通常在什么时机进行代码重构?”的问题。台下沉默良久后,有人答“空闲时才做重构”,也有人称“代码编写完成后再开展重构”。此时,一句“重构应贯穿始终”的响亮回答,如闪电般打破了现场的沉寂。

在当今快速迭代的软件开发环境中,DevOps 已成为加速交付和提高软件质量的关键实践。然而,随着交付速度的提升,技术债问题往往被忽视或低估。技术债不仅影响代码质量,更对 DevOps 流程产生深远影响。

开头的例子,是无数个团队或组织的缩影,由于早期有意或无意的开发编码习惯引入了技术债务,以至于多年之后“债务缠身”。

举这个例子,是想说部分团队或企业并没有真正理解 DevOps 的逻辑。DevOps 的核心目标之一是实现更快速、更高质量的交付,企业引入 DevOps 也是出于这一初衷。但在实际落地过程中,技术债务却成为其顺利实施的阻碍。

本文将从 DevOps 实施的前、中、后三个阶段,结合我的个人经验,阐述如何通过量化债务实现破局。

一、什么是技术债务?

1992 年,著名计算机程序员沃德・坎宁安首次将软件系统内部的混乱问题喻为一种负债。比喻为“为快速交付而采取的捷径,未来需要偿还的额外工作”。

主要类型包括:

  • 代码债务:低质量、难以维护的代码;

  • 设计债务:架构层面的妥协决策;

  • 测试债务:不足或缺失的自动化测试;

  • 文档债务:不完整或过时的文档;

  • 基础设施债务:配置不当的部署环境。

而从广义来看,技术债务往往是由流程管理、组织架构等问题引发的系统性缺陷,潜藏于组织深处。具体包括流程债(缺乏标准化交付流程或流程繁琐无序)、创新债(疲于应对交付任务,架构演进缓慢)等。

个人认为,唯有从狭义与广义双重视角理解技术债务,才能在后续破局过程中,制定出契合实际的 DevOps 实施策略与路线图。

二、如何量化债务突破困局

1.诊脉:快速定位“看得见的”技术债务

DevOps 强调开发与运维的协作,通过持续集成(CI)、持续交付(CD)和自动化监控实现快速、可靠的软件交付。典型流程包括:

  • 代码提交与版本控制;

  • 自动化构建与测试;

  • 持续集成与交付;

  • 监控与反馈循环。

在 DevOps 实施初期,可通过面谈或调研,梳理出明显的技术债务对 DevOps 造成的影响。切忌初期便空谈流程与架构,特别是作为外部咨询或者新加入这个组织的成员,很容易引起内部的反感,甚至抵触。因为,这些话题短期内难以清晰阐述或量化证明。精准定位团队共识的技术债务,以低成本快速启动工作才是第一步要做的。

通过调研和面谈,一般可以优先识别共性问题,这里列举了一些技术债对 DevOps 的影响场景。

(1)对 CI/CD 流水线效率的影响,往往表现在构建失败率上升,部署频率下降等。

  • 诊断工具:CI/CD 工具;

  • 关键指标:构建失败率、构建频率、部署频率。

(2)对团队生产力的影响,往往表现在代码腐化、代码复杂度高,或者代码难以理解、协作成本升高等。

  • 诊断工具:缺陷,代码检查工具;

  • 关键指标:扫描问题数。

(3)对系统可靠性的影响,例如生产环境故障增加、平均恢复时间(MTTR)延长等。

  • 诊断工具:监控工具;

  • 关键指标:问题恢复时长。

若初期数据无法实现客观量化,可借助团队成员主观反馈的信息进行粗略识别(例如:多久构建一次?经常哪些问题引起部署失败?),尤其要关注那些普遍反映的问题。

 

2.破局:从最小可行动作到体系化治理

下一步,通过技术债的影响分析,进一步梳理其可能的引入阶段,将受影响阶段与 DevOps 链路建立映射关系,同时评估修复/治理成本。

如下表仅为简单示例,实际情况可能更为复杂深入。

通过上述表格,大致可以得到出如下的关系图,初步建立“领域-研发阶段-研发活动-工具能力-数据”的映射关系图。

接着,开始搭建工具链时,要明确建立数据量化指标体系(量化原则:可观测、可追踪、与业务目标对齐),制定“短-中-长期的 DevOps 建设目标”,借助工具从无到有地实现客观度量,避免主观臆断。

通过整合与补充不同工具,分批分阶段分工具收集数据。遵循“从单点到多点,再串联成线”的思路,依次获取“局部单点、整体全局”数据。同时,记录每个周期的基准数据,为后续对比改进效果提供依据。

对于管理层而言,只有通过量化数据指导业务目标的达成与改善,才能更有力地推动 DevOps 落地及技术债务的解决。

禅道的效能管理模块内置一键分析实验室与丰富统计分析模板,针对禅道核心对象数据,提供多维统计分析与深度数据解读,可以快速整合研发数据,形成可以量化的精准数据。

部分企业仅关注局部量化数据,或未构建全流程追溯体系,导致在实施中后期,难以争取到领导对债务治理工作的持续支持。这里很棘手的问题就在于,工具体系建设与流程规范没有很好的融合。到了这里,其实你已经到了开头提到的“广义的技术债务”,触及到了组织的深处的痛点。

综上,结合技术债类型、DevOps 工具体系,可落地的量化维度和方法,形成具有实操价值的研发治理框架:

3.守城:可视化债务 &行动清单 &债务文化

债务量化 &治理体系的搭建非一朝一夕,可以一边破局,一边守城。谨慎评估技术债务的 ROI(详见上文修复与影响成本),通过小规模试点增强管理层对治理工作的信心。

以代码债为例,可依托采用 SQALE 方法(评估代码质量的方法)的相关工具,从技术与商业双视角分析技术债务,确定不同优先级,明确技术债务偿还的 ROI。

(示例图)

及时向领导层汇报阶段性成果,在获得认可后共同制定行动清单,确保组织上下目标一致。

  • 将技术债指标与业务目标相关联,如某个代码问题引起的质量问题下降 30%;

  • 设定季度改进阈值,如将流水线成功率从 70%提升至 95%以上。

 

此外,在团队层面将技术债管理纳入 DevOps 文化,将债务评估作为常规实践,在组织级层面同步近期改进情况。

  • 定期通过工具生成技术债影响报告;

  • 将技术债治理纳入晋升评估体系;

  • 建立代码质量门禁,在开发周期中预留技术债处理时间;

  • 开展月度“最优雅代码”“最佳啄木鸟”评选活动。

三、需要注意哪些问题

1.量化治理需集中攻坚

技术债的累积会直接降低 DevOps 的「反馈循环效率」,量化是治理的前提。虽说看似简单,但量化与治理实则如同“先有鸡还是先有蛋”的关系。单纯治理如同无源之水,单纯量化也会寸步难行。因此,需像攻城略地般,集中优势资源攻克一个债务目标,稳固成果后,再向另一个债务目标发起进攻。

2.广义债需靠管理重塑

前文提及的广义技术债务,难以仅凭工具在短期内实现量化或解决,需借助管理手段进行诊断(如价值流分析、团队认知评估),进行相应的流程规范改造重塑,且整体修复周期较长(至少 6 个月,甚至需要 1-2 年)。

3.债务修复需把握时机

债务修复时机有时具有偶然性,可能因一项新创新、一次意外事故引发关注,或源于外部考核要求。作为实施者,需提前布局,伺机介入,推动治理工作开展。

 

最后,借用电影《无间道 2》中的台词:“出来混,迟早要还的。”对于企业来说,量化债务,时刻关注自身的债务状况,做到勤借勤还,才能实现持续健康发展。

专栏作者:李斌 DevOps Master、公众号【DevOps 在路上】主理人。 深耕 DevOps 领域多年,专注于提升企业级研发效能与建设自动化工具链,主导/参与了多个企业级 DevOps 平台从 0 到 1 的全流程构建。

                                                                                </div>



Source link

未经允许不得转载:紫竹林-程序员中文网 » 当DevOps落地实施撞上技术债务,如何量化债务突破困局

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
关于我们 免责申明 意见反馈 隐私政策
程序员中文网:公益在线网站,帮助学习者快速成长!
关注微信 技术交流
推荐文章
每天精选资源文章推送
推荐文章
随时随地碎片化学习
推荐文章
发现有趣的