当前位置: 首页 > news >正文

云原生计算能消除技术债务吗?

云原生计算可以将行业领域驱动的设计、GitOps和其他现代软件最佳实践汇总起来,如果企业实施得当,可以减少技术债务。

云原生计算是企业IT的一种新范式,它涉及现代技术的方方面面,从应用程序开发到软件架构,再到保持一切运转的底层基础设施。
在这里插入图片描述
云原生为企业提供了清理技术债务的机会。例如通过Kubernetes这样的“扫帚”,扫除现有技术的一些积满尘土的角落。因此,假设云原生最终会消除多年来累积的技术债务是合乎逻辑的。

这也许合乎逻辑,但并不现实。众所周知,技术债务将长期存在。此外,对于任何一位首席信息官来说,宁愿将IT预算花在新技术和新事物上,也不愿将其浪费在清理前任留下的烂摊子上。

然而人们也有理由对云原生抱有希望。虽然云原生不是一把神奇的“扫帚”,但其核心实践确实可以帮助企业减少技术债务,并提供新的软件功能,而不会产生更多的债务,至少不会像以往那样产生更多的债务。

让企业清除技术债务以便永远不会产生新债务,当然是难题的一部分,但更直接的问题是如何偿还现有的遗留技术债务。

多年来,便利的快捷方式、笨拙的编码,以及基础设施中各种各样的接口,已经形成了一团乱麻。而对于这个难以解决的问题,可能需要采用“快刀斩乱麻”的措施。

云原生计算就是这样的一把快刀:基于领域驱动设计的架构重构。领域驱动设计要求将复杂的企业软件挑战分解为单独的业务领域,每个领域都有一个“限界上下文”。

限界上下文可以根据业务需求限制上下文来解决诸如“客户”或“发票”之类的业务。例如,大型企业的不同部门可能对客户有不同(可能有所重叠)的概念。每一个都代表一个单独的限界上下文。

早期对微服务架构的探索导致了互联微服务的激增,其复杂性限制了其可扩展性,并且很快显现出来。而通过限界上下文组织它们是管理这种复杂性以及大规模交付基于微服务的解决方案的关键。

因此,领域驱动设计已经成为云原生计算的一部分,此外,它告诉人们必须如何按照这种新范式来实现遗留资产的现代化。

解决具有高技术债务的遗留软件挑战的第一步是应用架构重构,从而将遗留架构转换为具有限界上下文的模块化元素。换句话说,企业必须遵循业务驱动的限界上下文引入模块化,以便引导减少技术债务的路径。

而魔鬼在细节中。根据企业面临的业务需求和遗留挑战,可以通过以下几种方式来利用这种架构重构:

可能会发现限界上下文中的现有代码根本不符合当今的要求。在这种情况下,可以将该代码重写为微服务。
遗留业务逻辑仍然具有价值,然后将其迁移到微服务。
可以将遗留模块作为API公开,因为它们已经具有有用的API,或者因为更新了遗留代码以通过API公开它。
可以使用机器人流程自动化(RPA)程序编写与旧模块交互的脚本。
需要注意的是,由于之前已将遗留软件重新组织和模块化为限界上下文,因此上述四种方法中的每一种都比其他方法更加简单。

此外,如果有必要的话,未来的重构也会更加直接,因为采用了“分而治之”的方法来划分技术债务。例如,随着时间的推移,企业还清四笔较小的技术债务比一笔大的技术债务更加轻松。

这种方法也是减少机器人流程自动化(RPA)脆弱性的最佳方法之一。如果没有限界上下文驱动的架构重构,那么应用程序环境中的任何地方发生任何变化,此类机器人程序就会崩溃。通过适当的划分,此类故障将更易于管理且更易于修复。

防止新的技术债务

防止新的技术债务就像要求保持房间整洁一样,虽然也许会保持一段时间,但到后来将会变得一团糟。

需要的是更多的结构,对吗?至少在云原生的情况下,这种结构确实有帮助。

云原生计算提供了一系列广泛的最佳实践,描述了如何最好地构建软件、配置基础设施、创建和部署应用程序以及管理生产中的一切。

当然,如果遵循所有这些建议,就不太可能背负新的技术债务,或者至少不会那么快地出现技术债务。

“基础设施即代码”(IaC)原则就是一个关键示例。IaC原则指出,工作人员不应在生产中弄乱服务器。 IaC原则当然可以限制生产中的额外技术债务,因为它提供了一种解决生产问题的主动方法。那么只有一个问题:IaC做得还不够。

IaC的问题在于必须编写各种程序。然后,必须像任何其他程序一样对这些程序进行测试、管理和版本控制——这意味着技术债务可能会像任何其他软件一样蔓延。

幸运的是,云原生计算已经超越了IaC,其中每一步都比之前的一步有所改进。

第一步:通过声明性配置来表示基础设施,它指定应该如何配置基础设施,而不指定如何实现此类配置。
与IaC相比,声明式方法减少了技术债务,因为没有太多的空间来使用快捷方式,但这些表示(通常出现在YAML文件或其他基于JSON的格式中)仍然非常像代码,尤其是对于复杂的动态基础设施配置。

第二步:GitOps。GitOps为软件发布和管理带来了以Git为中心的实践和流程。
GitOps在许多方面补充了基础设施配置的声明式方法,因为它采用声明式方法进行软件部署。GitOps通过为其流程提供更多结构而更进一步,而结构越多,技术债务蔓延的机会就越少。

第三步是当前最先进的技术:基于意图的计算。

基于意图的计算包含三个部分

以技术策略的形式对相关软件(基础设施、应用程序代码等)的声明性表示。
这种技术策略的抽象,如表示底层配置的业务意图的业务策略。
确保底层软件符合这一业务意图的一种机制,从而在策略应用中消除策略漂移。
换句话说,基于意图的计算采用声明式配置方法和GitOps,并添加额外的结构,从本质上确保整个云原生环境随着时间的推移符合业务意图。这样的合规性才是一把斩断技术债务这团乱麻的最好的快刀。

相关文章:

云原生计算能消除技术债务吗?

云原生计算可以将行业领域驱动的设计、GitOps和其他现代软件最佳实践汇总起来,如果企业实施得当,可以减少技术债务。 云原生计算是企业IT的一种新范式,它涉及现代技术的方方面面,从应用程序开发到软件架构,再到保持一…...

9. 回文数

题目 给你一个整数 xxx ,如果 xxx 是一个回文整数,返回 truetruetrue ;否则,返回 falsefalsefalse 。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 例子 输入&am…...

[SV]SystemVerilog线程之fork...join专题

SystemVerilog线程之fork...join专题 Q:fork-join_none开辟的线程在外部任务退出后也会结束吗? A:后台线程不会结束,任何由fork开辟的线程(join、join_any、join_none),无论其外部任务&#xff…...

你看这个spring的aop它又大又宽

aop🚓AOP 分类AspectJ | 高级但是难用Spring AOP | 易用但仅支持方法aop 原理明月几时有,把酒问青天。——唐代李白《将进酒》 AOP 分类 在 Spring Boot 中,AOP 的实现主要有以下几种: 基于 AspectJ 的 AOP:这是一种基…...

设计模式-创建-单例模式

4.1.1 模式介绍 定义 单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一,此模式保证某个类在运行期间,只有一个实例对外提供服务,而这个类被称为单例类。 作用 保证一个类只有一个实例为该实例提供一个全…...

使用mybatis-plus-generator配置一套适合你的CRUD

1、maven引入 mybatis-plus-generator 和模板引擎&#xff0c;你也可以使用freemarker之类的&#xff0c;看个人 <!-- mybatisplus代码生成器 --><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-generator</artifactI…...

MATLAB实现各种离散概率密度函数(概率密度/分布/逆概率分布函数)

MATLAB实现各种离散概率密度函数(概率密度/分布/逆概率分布函数) 1 常见离散概率分布的基本信息2 常见离散概率分布计算及MATLAB实现2.1 二项分布(Binomial Distribution)2.1.1 常用函数2.2 负二项分布(Negative Binomial Distribution)2.2.1 常用函数2.3 几何分布(Geom…...

指针的基本知识

我们不会用bit去表达一个数据&#xff0c;因为只能放0和1&#xff0c;能表达的数据太少了&#xff0c;内存地址最小单位是字节 11111111 0x0011 1字节8bit,8bit才算作一个地址&#xff0c;地址是以字节为最小单位&#…...

当你的IDE装上GPT

文章目录前言下载安装使用步骤前言 我们可能要从“CV”工程师变成“KL工程师了&#xff0c;为什么叫”KL“工程师呢&#xff0c; 因为只要K和L两个指令就可以直接生成代码、修改代码&#xff0c;哪行代码不会点哪里&#xff0c;他都给你解释得明明白白。 提示&#xff1a;以下…...

一图看懂 pathlib 模块:面向对象的文件系统路径, 资料整理+笔记(大全)

本文由 大侠(AhcaoZhu)原创&#xff0c;转载请声明。 链接: https://blog.csdn.net/Ahcao2008 一图看懂 pathlib 模块&#xff1a;面向对象的文件系统路径, 资料整理笔记&#xff08;大全&#xff09;摘要模块图类关系图模块全展开【pathlib】统计常量intbooltuple模块9 fnmatc…...

前端如何将node.js 和mongodb部署到linux服务器上

本文首发自掘金。 记录了我第一次成功部署node.js 和mongodb到linux服务器上了&#xff0c;期间也遇到一些小坑&#xff0c;但是网上各位大佬记录的文章帮了大忙&#xff0c;所以我也将过程记录了下来。 安装Node 使用nvm linux上安装node&#xff0c;肯定首选nvm&#xff…...

mysql数据迁移

背景&#xff1a;随着时间的推移&#xff0c;交易系统中的订单表越来越大&#xff0c;目前达到500w数据。为了防止数据量过大导致的查询性能问题&#xff0c;现将订单表进行拆分&#xff0c;分为实时库和历史库。实时库保留近6个月的数据&#xff0c;用于退款业务需求&#xff…...

【4.3蓝桥备战】小朋友崇拜圈、正则问题

文章目录小朋友崇拜圈正则问题小朋友崇拜圈 小朋友崇拜圈 - 蓝桥云课 (lanqiao.cn) 拿到这道题要先把题目读懂。 下面的一行是表示&#xff1a;编号为i的小朋友&#xff0c;崇拜的对象为编号为path[i]的小朋友。 本题应该使用DFS&#xff0c;深度优先遍历找到可以成环的崇拜圈…...

MySQL读写分离中间件

1.什么是读写分离中间件&#xff1f; 就是实现当[写]的时候转发到主库&#xff0c;当[读]的时候转发到从库的工具。 很类似学习过的proxy,比如nginx proxy做动静分离. 2.为什么要实现读写分离&#xff1f; 1&#xff09;让主库专注于写&#xff0c;因为读可以有很多从库可以干…...

【Spring源码设计模式】单例模式外带设计模式的单例模式

Bean的概念 是Spring框架在运行时管理的对象&#xff0c;是任何引用程序的基本构建块。 Bean的属性 id属性&#xff1a;Bean的唯一标志名&#xff0c;必须以字母开头且不包含特殊字符 class属性&#xff1a;用来定义类的全限定名&#xff08;包名 类名&#xff09; name属性…...

go并发编程 —— singleflight设计模式

什么是singleflight singleflight是一种并发编程设计模式&#xff0c;将同一时刻的多个并发请求合并成一个请求&#xff0c;以减少对下游服务的压力 为什么叫singleflight fly可以理解为请求数&#xff0c;singleflight就是单个请求 使用场景 该模式主要用于防止缓存击穿 …...

【LeetCode】二叉树的中序遍历(递归,迭代,Morris遍历)

目录 题目要求&#xff1a;给定一个二叉树的根节点 root &#xff0c;返回 它的 中序 遍历 。 方法一&#xff1a;递归 方法二&#xff1a;迭代 思路分析&#xff1a; 复杂度分析 代码展示&#xff1a; 方法三&#xff1a;Morris 遍历 思路分析&#xff1a; 复杂度分析…...

银行数字化转型导师坚鹏:数字化转型背景下的银行柜员提升之道

数字化转型背景下的银行柜员提升之道 课程背景&#xff1a; 很多银行都在开展银行数字化运营工作&#xff0c;目前存在以下问题急需解决&#xff1a; l 不清楚银行数字化运营包括哪些关键工作&#xff1f; l 不清楚银行数字化运营工作的核心方法论&#xff1f; l 不清楚银行数字…...

ChatGPT的平替来了?一文总结 ChatGPT 的开源平替,你值得拥有

文章目录【AIGC精选】总结 ChatGPT 的开源平替&#xff0c;你值得拥有1.斯坦福发布 Alpaca 7B&#xff0c;性能匹敌 GPT-3.52.弥补斯坦福 Alpaca 中文短板&#xff0c;中文大模型 BELLE 开源3.国产AI大模型 ChatGLM-6B 开启内测4.中文 Alpaca 模型 Luotuo 开源5. ChatGPT 最强竞…...

关于数据同步工具DataX部署

1.DataX简介 1.1 DataX概述 DataX 是阿里巴巴开源的一个异构数据源离线同步工具&#xff0c;致力于实现包括关系型数据库(MySQL、Oracle等)、HDFS、Hive、ODPS、HBase、FTP等各种异构数据源之间稳定高效的数据同步功能。 源码地址&#xff1a;GitHub - alibaba/DataX: DataX是…...

XCTF-web-easyupload

试了试php&#xff0c;php7&#xff0c;pht&#xff0c;phtml等&#xff0c;都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接&#xff0c;得到flag...

超短脉冲激光自聚焦效应

前言与目录 强激光引起自聚焦效应机理 超短脉冲激光在脆性材料内部加工时引起的自聚焦效应&#xff0c;这是一种非线性光学现象&#xff0c;主要涉及光学克尔效应和材料的非线性光学特性。 自聚焦效应可以产生局部的强光场&#xff0c;对材料产生非线性响应&#xff0c;可能…...

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器

——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的​​一体化测试平台​​&#xff0c;覆盖应用全生命周期测试需求&#xff0c;主要提供五大核心能力&#xff1a; ​​测试类型​​​​检测目标​​​​关键指标​​功能体验基…...

[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...

WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)

一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解&#xff0c;适合用作学习或写简历项目背景说明。 &#x1f9e0; 一、概念简介&#xff1a;Solidity 合约开发 Solidity 是一种专门为 以太坊&#xff08;Ethereum&#xff09;平台编写智能合约的高级编…...

大模型多显卡多服务器并行计算方法与实践指南

一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...

拉力测试cuda pytorch 把 4070显卡拉满

import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试&#xff0c;通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小&#xff0c;增大可提高计算复杂度duration: 测试持续时间&#xff08;秒&…...

CMake控制VS2022项目文件分组

我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...

代理篇12|深入理解 Vite中的Proxy接口代理配置

在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...

STM32HAL库USART源代码解析及应用

STM32HAL库USART源代码解析 前言STM32CubeIDE配置串口USART和UART的选择使用模式参数设置GPIO配置DMA配置中断配置硬件流控制使能生成代码解析和使用方法串口初始化__UART_HandleTypeDef结构体浅析HAL库代码实际使用方法使用轮询方式发送使用轮询方式接收使用中断方式发送使用中…...