当前位置: 首页 > 科技观察

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

时间:2023-03-14 21:06:25 科技观察

【.com快言】云原生计算可以汇集行业领域驱动设计、GitOps和其他现代软件最佳实践,如果实施得当,可以减少企业的技术债务。云原生计算是企业IT的一种新范式,它涉及现代技术的各个方面,从应用程序开发到软件架构,再到保持一切运行的底层基础设施。云原生为企业提供了清理技术债务的机会。例如,使用像Kubernetes这样的“扫帚”来扫除现有技术的一些尘土飞扬的角落。因此,假设云原生最终将消除多年来积累的技术债务是合乎逻辑的。这可能合乎逻辑,但并不现实。我们都知道技术债务会一直存在。此外,对于任何CIO来说,IT预算都宁愿花在新技术和新事物上,也不愿浪费在清理前任留下的烂摊子上。然而,有理由对云原生充满希望。虽然云原生并不是一把神奇的“扫帚”,但其核心实践确实可以帮助企业减少技术债务并交付新的软件功能,而不会产生更多的债务,至少不会像过去那样多。债务。让企业清理技术债务从而永远不会产生新的债务当然是难题的一部分,但更紧迫的问题是如何偿还现有的遗留技术债务。这些年来,便捷的捷径、笨拙的编码、基础设施中的各种接口,已经形成了乱七八糟的局面。对于这个棘手的问题,可能需要采用“快速切入”的方法。云原生计算就是这样一把锋利的刀:基于领域驱动设计的架构重构。领域驱动设计需要将复杂的企业软件挑战分解为单独的业务领域,每个领域都有一个“限界上下文”。限界上下文可以受业务需求的限制,以解决诸如“客户”或“发票”之类的业务。例如,一家大型企业的不同部门可能有不同(并且可能重叠)的客户概念。每个都代表一个限界上下文。早期对微服务架构的探索导致了互连微服务的激增,其复杂性限制了它们的可扩展性并很快变得明显。通过限界上下文组织它们是管理这种复杂性和大规模交付基于微服务的解决方案的关键。因此,领域驱动设计已成为云原生计算的一部分,而且它告诉我们如何根据这种新范式对遗留资产进行现代化改造。解决具有高技术债务的遗留软件挑战的第一步是应用架构重构,将遗留架构转换为具有有限上下文的模块化元素。换句话说,企业必须在业务驱动的限界上下文之后引入模块化,以引领减少技术债务的道路。细节决定成败。根据业务需求和企业面临的遗留挑战,可以通过多种方式利用这种架构重构:您可能会发现限界上下文中的现有代码根本无法满足当今的需求。在这种情况下,该代码可以重写为微服务。遗留业务逻辑仍然有价值,然后将其迁移到微服务。遗留模块可以作为API公开,因为它们已经有一个有用的API,或者因为遗留代码已更新为通过API公开它。可以使用机器人过程自动化(RPA)程序编写与遗留模块的交互脚本。值得注意的是,由于先前将遗留软件重组和模块化到有界上下文中,上述四种方法中的每一种都比其他方法更简单。此外,由于采用“分而治之”的方法来划分技术债务,未来的重构(如有必要)将更加直接。例如,随着时间的推移,与偿还一大笔技术债务相比,企业更容易偿还四笔较小的技术债务。这种方法也是减少机器人过程自动化(RPA)漏洞的最佳方法之一。如果没有限界上下文驱动的架构重构,应用程序环境中任何地方的任何更改都会破坏此类机器人。通过适当的分区,此类故障将更易于管理和修复。防止新的技术债务防止新的技术债务就像要求保持房间整洁,也许一会儿,但稍后会变得一团糟。需要的是更多结构,对吗?至少在云原生的情况下,这种结构确实有帮助。云原生计算提供了一组广泛的最佳实践,描述了如何以最佳方式构建软件、配置基础架构、创建和部署应用程序以及管理生产中的一切。当然,如果您遵循所有这些建议,您就不太可能承担新的技术债务,或者至少不会那么快。“基础架构即代码”(IaC)原则是一个关键示例。IaC原则指出,工作人员不应在生产环境中干扰服务器。IaC原则当然可以限制生产中的额外技术债务,因为它提供了解决生产问题的主动方法。那么只有一个问题:IaC做得不够。IaC的问题是必须编写各种程序。然后必须像任何其他程序一样对这些程序进行测试、管理和版本控制——这意味着技术债务可能会像任何其他软件一样蔓延。幸运的是,云原生计算已经超越了IaC,每一步都是对前一步的改进。第1步:通过声明式配置来表示基础设施,它指定了基础设施应该如何配置,而不是应该如何实现这样的配置。与IaC相比,声明式方法减少了技术债务,因为没有太多的捷径空间,但表示(通常在YAML文件或其他基于JSON的格式中)仍然非常类似于代码,特别是对于复杂的动态基础设施配置。第二步:GitOps。GitOps将以Git为中心的实践和流程引入到软件发布和管理中。GitOps在许多方面补充了基础设施配置的声明性方法,因为它采用声明性方法进行软件部署。GitOps更进一步,为其流程提供更多结构,结构越多,技术债务蔓延的可能性就越小。第三步是当前最先进的技术:基于意图的计算.基于意图的计算由三部分组成:以技术策略的形式对相关软件(基础设施、应用程序代码等)进行声明性表示。这种技术策略的抽象,例如表示底层配置的业务意图的业务策略。一种确保底层软件符合此业务意图的机制,从而消除策略应用中的策略漂移。换句话说,基于意图的计算采用声明式方法进行配置和GitOps,并添加额外的结构,从本质上确保整个云原生环境随着时间的推移与业务意图相匹配。这种合规性是斩断技术债务烂摊子的最好的利刀。文章标题:云原生计算能否消除技术债务?,作者:JasonBloomberg