paperbot · PL 论文追踪

全部论文 待读 收藏

P2 CARGO: AI-Guided Dependency Analysis for Migrating Monolithic Applications to Microservices Architecture

CARGO:AI 引导的依赖分析用于将单体应用迁移至微服务架构
ASE Proceedings of the 37th IEEE/ACM International Conference on Automated Software Engineering2022匹配度 3/10 · 论文结合了上下文/流敏感依赖图与半监督标签传播,属于程序分析与机器学习的交叉,但其应用场景是单体到微服务架构迁移,并非用户关注的 PL→AI(ML/Agentic程序静态分析)、AI→PL(LLM/Agent改进静态分析)、浮点程序分析或贝叶斯程序分析。引用 37 inbox
Vikram Nitin, Shubhi Asthana, Baishakhi Ray, Rahul Krishna
crossref: 2026-09-12

AI 速览

一句话:提出 CARGO,用上下文/流敏感依赖图与半监督标签传播细化微服务划分,减少分布式事务并提升性能。

将单体应用拆分为微服务常依赖自动划分,但现有方法受程序表示表达力限制,且无法建模对数据库等关键外部资源的依赖,易产生分布式单体或被迫使用分布式事务。CARGO(Context-sensitive lAbel pRopaGatiOn)利用单体应用的上下文与流敏感系统依赖图,进行无监督/半监督的划分细化,以增强现有划分算法的质量。作者将 CARGO 增强四个先进微服务划分技术(1个工业工具、3个开源项目),并在五个 Java EE 应用(1个专有、4个开源)上评估。结果显示,CARGO 可提升所有划分技术的划分质量,显著减少分布式事务;在基准应用不同负载下,平均降低端到端延迟 11%、提升吞吐量 120%。

问题
现有单体到微服务自动划分方法受限于程序表示表达力,且忽略对数据库等外部资源的依赖,导致划分方案形成分布式单体或依赖分布式事务。
方法
CARGO 基于上下文和流敏感的系统依赖图,采用无监督/半监督标签传播进行划分细化,以增强现有划分算法。
评估
在四个先进划分技术和五个 Java EE 应用上评估划分质量、分布式事务数量,并通过基准应用的真实负载测试测量延迟与吞吐量。
原文摘要(Abstract)

Microservices Architecture (MSA) has become a de-facto standard for designing cloud-native enterprise applications due to its efficient infrastructure setup, service availability, elastic scalability, dependability, and better security. Existing (monolithic) systems must be decomposed into microservices to harness these characteristics. Since manual decomposition of large scale applications can be laborious and error-prone, AI-based systems to decompose applications are gaining popularity. However, the usefulness of these approaches is limited by the expressiveness of the program representation and their inability to model the application’s dependency on critical external resources such as databases. Consequently, partitioning recommendations offered by current tools result in architectures that result in (a) distributed monoliths, and/or (b) force the use of (often criticized) distributed transactions. This work attempts to overcome these challenges by introducing CARGO (short for Context-sensitive lAbel pRopaGatiOn)—a novel un-/semi-supervised partition refinement technique that uses a context- and flow-sensitive system dependency graph of the monolithic application to refine and thereby enrich the partitioning quality of the current state-of-the-art algorithms. CARGO was used to augment four state-of-the-art microservice partitioning techniques (comprised of 1 industrial tool and 3 open-source projects). These were applied on five Java EE applications (comprised of 1 proprietary and 4 open source projects). Experiments show that CARGO is capable of improving the partition quality of all four partitioning techniques. Further, CARGO substantially reduces distributed transactions, and a real-world performance evaluation of a benchmark application (deployed under varying loads) shows that CARGO also lowers the overall the latency of the deployed microservice application by 11% and increases throughput by 120% on average.

链接与引用

DOI 原文 · PDF(开放获取) ·

BibTeX
@inproceedings{paperbot7364,
  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},
  booktitle = {ASE},
  year = {2022},
  doi = {10.1145/3551349.3556960}
}