应对 DevOps 中的技术债务:创新与稳定性的微妙平衡

技术性债务在DevOps到底意味着什么?从本质上讲,这是小的开发缺陷的积累,需要不断地返工。它可能由多种原因引起,例如快速交付新功能的压力,这可能会导致团队不得不牺牲代码的整洁和完善。但这些不完整的小代码,如经济上的债务一样,随着时间的推移会产生“利息”,在软件工程里就表现为修改的挑战或添加新功能的困难。

一、技术债务的原因

技术债务的主要原因之一是组织的开发方和业务方之间的脱节。开发团队经常会感到保持高特性速度的压力,有时会以适当的服务规划为代价。例如,不计划服务生命周期的结束可能会导致所谓的“老年服务”。这些服务可能做得不多,但对业务运营至关重要,并且可能在以后产生更多的技术债务。它们可能很难迁移,也可能是未知影子或僵尸API的产物。结果是,开发过程可能会被更高效的工作方式所阻碍,从而招致更多的技术债务。

二、技术债务的症状

没有严格的监控,技术债务可能会减缓整个开发和部署过程,降低产品质量,并限制组织在不断变化的市场中进行创新的能力。技术债务过多的一些迹象可能包括修复技术债务的成本和时间增加,每次发布和部署所需的时间持续增加,以及由于在遗留系统上工作和处理频繁故障带来的挫折,让员工的流动率更高。

三、什么情况下可以忽视技术债务?

虽然技术债务的负面影响是真实存在的,但并不总是需要立即解决,而且这也并不现实。在一些情况下,让债务累积是有意义的。例如,如果解决技术债务的成本在当下大大高于将来,如果债务没有影响短期业务需求,或者有紧急版本发布(如重大安全漏洞修复程序)。在做出正确的权衡时,牢记全局至关重要,管理良好的技术债务是缩短交付周期的有效工具,可以优先考虑重要部署。

这里存在一个关键点:区分“好的”技术债务和“坏的”技术债的上下文。这种分离归结为理解对客户和团队的实际影响。忽略一些技术债务毕竟并没有那么糟糕,只要有有共同的上下文来指导自己的决策就好。

在这里插入图片描述

四、忽视技术债务成为挑战

当技术债务开始阻碍组织有效运作的能力时,忽视技术债务就成了问题。当这种情况发生时,就是需要解决技术债务的明显信号了。如果不加以解决,累积的技术债务可能导致经营业绩不佳和收入损失,从这个本质上来说,技术债务也成为了经济债务。产品和品牌的形象可能会受损,导致失去机会。

五、管理技术债务

管理技术债务需要采取积极主动的协作方法。以下是一些可能有所帮助的策略:

  • 确定债务类型: 所有的技术债务不能等量齐观。区分目前尚可接受的债务和不适合积压的技术债务。
  • 分析和自动化: 分析债务的来源,并寻找方法来收紧工作流或自动化某些测试和流程。这有助于减少常见错误和隐藏的错误,防止它们滚雪球般地变成技术债务。
  • 制定新的规则和标准: 需要明确技术债务在什么情况是可以被接受的,什么情况会造成不可逆转的损失。例如,发布即时安全修补程序可能被认为是可以接受的,而允许最终导致相当长的停机时间的错误则不会被接受。
  • 沟通成本: 决策者和DevOps团队必须了解技术债务对产品质量和开发人员保留的影响。当另一个截止日期到来时,确保这些关键利益相关者意识到风险。如完全了解潜在成本,他们可能更可能调整交付日期或为其他开发商提供资金。

总之,技术债务如果得到有效管理,可以成为短期内优化交付速度和创新的工具。然而,重要的是要保持平衡,不要让它累积到开始降低产品质量、减缓开发速度或损害团队士气的程度。通过主动识别、分析、管理和沟通技术债务,开发运营团队可以在软件开发的这个具有挑战性的方面进行导航,并维护其基础设施的健康。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/236317.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Python进阶必备】一文掌握re库:实战正则表达式

目录 re库初识 re库基础使用方法 compile()函数 基本用法 正则表达式常用规则字符 match与search方法 match search match/search findall与finditer方法 使用findall()返回所有匹配项 使用findall()提取多个组的匹配 使用finditer()逐个返回Match对象 使用findi…

Realm Management Extension领域管理扩展之系统架构

RME不仅仅是一组处理器功能,为了充分利用RME引入的功能,系统的其余部分需要提供支持。 下图显示了一个示例系统以及引入RME后受到影响的组件: 主存储器保护 RME启用的系统包括内存加密和可能的完整性。基线加密要求支持对外部内存进行加密,使用每个PA空间的单独加密密钥或…

3. SPSS数据文件的基本加工和处理

如何获取SPSS自带的案例数据文件? 首先找到SPSS的安装目录,然后找到Samples文件夹 可以看到有不同语言版本,选择简体中文 就能看到很多.sav文件 数据文件的整理 个案排序 单值排序 例:对于下面的数据集,将工资按…

访问学者申请需要注意什么?

访问学者申请是一项复杂而重要的过程,需要申请人在准备材料和过程中注意一些关键事项,以确保顺利完成申请并提高成功率。以下是知识人网小编的一些建议,希望对你的访问学者申请有所帮助。 1. 详细了解目标学术机构: 在申请访问学…

使用curl命令在Linux上进行HTTP请求

在Linux系统中,curl是一个非常强大的命令行工具,用于发送各种类型的HTTP请求。通过简单的命令,你可以发送GET、POST、PUT、DELETE等请求,以及设置请求头、处理响应等。以下是一些使用curl进行HTTP请求的常见用法和示例。 1. 发送…

二极管选型怎么选?常用参数要熟练~

同学们大家好,今天我们继续学习杨欣的《电子设计从零开始》,这本书从基本原理出发,知识点遍及无线电通讯、仪器设计、三极管电路、集成电路、传感器、数字电路基础、单片机及应用实例,可以说是全面系统地介绍了电子设计所需的知识…

Visual Studio 2019 ctrl+f 呼出查找和替换窗口

有时候 ctrlshiftf 呼出查找和替换窗口不起作用,可能和其它程序的快捷键冲突,解决方案: ------------英文版本------------ 依次点击VS菜单栏中的 Tools - Options - Environment - Keyboard: 1. 在右侧的 Show commands containing: 文本框输…

实战使用工具appuploader上线发布苹果商店

实战使用工具appuploader上线发布苹果商店 我们发布ios应用的时候,步骤繁琐,非常耗时,appuploader工具就是解决一站式从上传到发布到appstore应用商店的,当我们开发完app后,需要将ipa/apk提交给测试人员测试&#xff0…

软件测试进阶自动化测试流程

如果想让测试在公司的项目中发挥出它最大的价值,并不是招两个测试技术高手,或引入几个测试技术,而是测试技术对项目流程的渗透,以及测试流程的改进与完善。虽然,当然测试行业前景乐观,许多中小企业也都在引…

【算法Hot100系列】有效的数独

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老导航 檀越剑指大厂系列:全面总结 jav…

解决数据库事务问题的Java神奇之道: 构建高效、可靠和灵活的事务管理系统

目录 1、前言 2、数据库事务基础知识 2.1 事务的定义与特性 2.2 数据库事务隔离级别 2.3 事务的并发控制与恢复 2.4 事务管理的重要性 3、传统的事务管理方式 3.1 基于JDBC的事务管理 3.1.1 基本概念和API介绍 3.1.2 事务的隔离级别控制 3.1.3 事务的异常处理与回滚…

MySQL 8查询语句之查询所有字段、特定字段、去除重复字段、Where判断条件

《MySQL 8创建数据库、数据表、插入数据并且查询数据》里边有我使用到的数据。 再使用下方的语句补充一些数据: insert into Bookbought.bookuser(id,username,userphone,userage,sex,userpassword) values (11,Book Break,22245678911,18,male,good#111); insert…

Simpy简介:python仿真模拟库-03/5

一、说明 在过去的两篇文章中,我们了解了 simpy 的基础知识、声明变量和处理表达式。值得注意的例子包括评估导数和积分。现在,让我们继续使用函数。 二、SymPy — 函数类 SymPy 包包含 sympy.core.function 模块中的 Function 类。该类作为各种数学函数…

计算机网络面试八股复习:常见的Http状态码

前言 面试被问到过一次。自己最近使用Gin框架,在Response的时候有时候也会用到一个自定义的状态码。因此归纳一下这方面,供自己日后面试复习以及开发时候参考。 HTTP 全名“超文本传输协议”(我也不懂为什么面试官问这个…) 属…

关于自动化测试用例失败重试的一些思考

动化测试用例失败重跑有助于提高自动化用例的稳定性,那我们来看一下,python和java生态里都有哪些具体做法? 怎么做 如果是在python生态里,用pytest做测试驱动,那么可以通过pytest的插件pytest-rerunfailures来实现失…

2023年全球软件质量效能大会(QECon上海站):核心内容与学习收获(附大会核心PPT下载)

会议聚焦于软件质量和效能的提升。在智能时代,随着数字化的深入人心,软件正在随着云计算、移动互联网、物联网等的发展而不断进化,软件对企业的发展愈加重要,大家对软件的质量要求也在从传统功能、性能、安全这些基础层面向着用户…

水产冷链物流行业零下25℃库架一体 海格里斯HEGERLS四向穿梭式冷藏冷库智能密集仓

随着国内外仓储物流整体规模和低温产品消费需求的稳步增长,冷链市场应用潜力不断释放。在传统“货架叉车”的方式下,货物、人员及机械设备不断进出,容易造成温度波动,导致冷量流失。立体冷库则以更高密度、更具成本效益的方式&…

Unity URP下阴影锯齿

1.概述 在Unity开发的URP项目中出现阴影有明显锯齿。如下图所示: 并且在主光源的Shadow Type已经是Soft Shadows模式了。 2.URP Asset 阴影出现锯齿说明阴影质量不高,所以要先找到URP Asset文件进行阴影质量参数的设置。 1.打开PlayerSetting找到Graph…

对于软件测试的认识和了解

对软件测试的认识: 软件测试要求开发人员避免测试自己开发的程序。从心理学角度讲,这是很有道理的。特别是一个相对复杂的系统,开发人员在刚刚开发完成的时候,尚沉浸于对自己设计的回味之中。此时去测试的话往往会侧重于程序本身的…

【设计模式-6】建造者模式的实现与框架中的应用

建造者模式又被成为生成器模式,是一种使用频率比较低,相对复杂的创建型模式,在很多源码框架中可以看到建造者的使用场景,稍后我们会在本文末尾展示几个框架的使用案例。  建造者模式所构造的对象通常是比较复杂而且庞大的&#x…