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

arXiv: https://arxiv.org/abs/2207.11784 · HTML: https://mlsanity.com/paper/2207.11784/

## Key facts

- Cited by 5 papers in the map (data through 14 Oct 2026).
- First posted on arXiv 24 Jul 2022.

## Built on by (most cited first, 5 of 5)

- [Collaboration is all you need: LLM Assisted Safe Code Translation](https://mlsanity.com/paper/2503.11237/) (2025)
- [MONO2REST: Identifying and Exposing Microservices: a Reusable RESTification Approach](https://mlsanity.com/paper/2503.21522/) (2025)
- [LLM Based Long Code Translation using Identifier Replacement](https://mlsanity.com/paper/2510.09045/) (2025)
- [Identifying Appropriately-Sized Services with Deep Reinforcement Learning](https://mlsanity.com/paper/2512.20381/) (2025)
- [MicroAgent: Context-Augmented Multi-Agent Framework for Automatic Microservice Decomposition](https://mlsanity.com/paper/2606.29742/) (2026)

## Abstract (arXiv)

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.
