中文

CARGO: 面向单体应用向微服务架构迁移的AI引导依赖分析

软件工程 2022-10-07 v2

摘要

微服务架构(MSA)因其高效的基础设施配置、服务可用性、弹性可扩展性、可靠性及更好的安全性,已成为设计云原生企业应用的事实标准。现有(单体)系统必须被分解为微服务以利用这些特性。由于大规模应用的手动分解繁琐且易出错,基于AI的检测分解策略系统正日益流行。然而,这些方法的实用性受限于程序表示的表现力及其无法对应用依赖于关键外部资源(如数据库)进行建模。因此,当前工具所提供的划分建议会导致(a)分布式单体,和/或(b)强制使用(常受批评的)分布式事务的架构。本工作试图通过引入CARGO([C]ontext-sensitive l[A]bel p[R]opa[G]ati[O]n的缩写)来克服这些挑战——一种新颖的无/半监督划分精化技术,其利用单体应用的上下文敏感与流敏感系统依赖图来精化并由此丰富当前最先进算法的划分质量。CARGO被用于增强四种最先进的微服务划分技术,这些技术应用于五个Java EE应用(包括一个工业规模专有项目)。实验表明CARGO能改善所有现代微服务划分技术的划分质量。此外,CARGO大幅减少了分布式事务,且对某基准应用(在变化负载下部署)的真实性能评估显示,CARGO还将所部署微服务应用的总体延迟平均降低11%,并将吞吐量平均提高120%。

关键词

引用

@article{arxiv.2207.11784,
  title  = {CARGO: AI-Guided Dependency Analysis for Migrating Monolithic Applications to Microservices Architecture},
  author = {Vikram Nitin and Shubhi Asthana and Baishakhi Ray and Rahul Krishna},
  journal= {arXiv preprint arXiv:2207.11784},
  year   = {2022}
}

备注

ACM Distinguished Paper ASE '22, October 10-14, 2022, Ann Arbor, MI, USA