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.
翻译:微缩服务架构(MSA)已经成为一个设计云形企业应用程序的脱形标准。 由于其高效的基础设施设置、 服务可用性、 弹性缩放性缩放性、 可靠性和更好的安全性, 现有( 单项) 系统必须分解为微观服务。 由于大规模应用程序的手工分解可能劳累且容易出错, AI- 检测分解战略的系统越来越受欢迎。 然而,这些方法的效用受到以下因素的限制:程序代表的清晰度及其无法模拟应用程序对关键外部资源( 如数据库)的依赖性。 因此, 现有工具提供的分割建议导致形成(a) 分布单项和/或(b) 强制使用(通常被批评的) 分布交易。 这项工作试图通过CARGO ({short) 来检测分解战略的分解战略, 由[C] 上敏感度的 lical lical livolia[GAttle] attleatia] n) 进一步的缩缩化/ 缩缩缩缩缩化应用系统, 将当前精化的精度应用技术用于GODLEOILALALAAL 的升级应用, 的流程应用环境应用环境,从而将使用了一个内部的缩化系统,从而显示的缩化系统运行的流程的流程的流程的流程的流程运行运行运行运行的流程的流程的流程。