论文标题
货物:AI引导的依赖性分析,用于将整体应用迁移到微服务体系结构
CARGO: AI-Guided Dependency Analysis for Migrating Monolithic Applications to Microservices Architecture
论文作者
论文摘要
由于其有效的基础架构设置,服务可用性,弹性可伸缩性,可靠性和更好的安全性,因此微服务体系结构(MSA)已成为设计云本地企业应用程序的事实上的标准。现有(整体)系统必须分解为微服务以利用这些特征。由于大规模应用的手动分解可能是费力且容易出错的,因此基于AI的系统检测分解策略正在越来越受欢迎。但是,这些方法的有用性受到程序表示的表达及其无法建模应用程序对关键外部资源(例如数据库)的依赖性的限制。因此,当前工具提供的分区建议导致架构导致(a)分布式整体,和/或(b)强迫使用(经常批评)分布式交易。这项工作试图通过引入货物({{c short for [c] ontext敏感l [a] bel p [a] bel p [r] opa [g] ati [g] ati [o [o] n}) - 一种新颖的无/半监督分区改进技术,该技术使用上下文和流动性系统依赖的范围来重新启发和流动性系统的依赖,以重新启发该依赖的部分,并以此来重新定位,以重新定位,以重新定位。算法。货物被用来扩大适用于五个Java EE应用程序(包括一个工业规模专有项目)的四种最先进的微服务分区技术。实验表明货物可以提高所有现代微服务分配技术的分区质量。此外,货物大大减少了分布式交易以及对基准应用程序(在不同负载下部署)的现实绩效评估表明,货物还将部署的微服务应用程序的总体延迟降低了11%,并将吞吐量降低了120%。
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 detect decomposition strategies 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 [C]ontext-sensitive l[A]bel p[R]opa[G]ati[O]n})-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 that were applied on five Java EE applications (including one industrial scale proprietary project). Experiments demostrate that CARGO can improve the partition quality of all modern microservice 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.