skip to main content
10.1145/3551349.3556960acmotherconferencesArticle/Chapter ViewAbstractPublication PagesaseConference Proceedingsconference-collections
research-article

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

Published: 05 January 2023 Publication History

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.

References

[1]
[n.d.]. Transform monolithic Java applications into microservices with the power of AI. https://developer.ibm.com/tutorials/transform-monolithic-java-applications-into-microservices-with-the-power-of-ai/. Accessed: 2022-05-05.
[2]
[n.d.]. Upgrading GitHub from Rails 3.2 to 5.2. https://github.blog/2018-09-28-upgrading-github-from-rails-3-2-to-5-2/. Accessed: 2022-05-06.
[3]
[n.d.]. Upgrading GitHub from Rails 3.2 to 5.2. https://thenewstack.io/led-amazon-microservices-architecture/. Accessed: 2022-05-06.
[4]
[n.d.]. What Led Amazon to its Own Microservices Architecture. https://www.infoq.com/articles/github-monolith-microservices/. Accessed: 2022-05-06.
[5]
acmeair. 2019. acmeair. https://github.com/acmeair/acmeair
[6]
Mohsen Ahmadvand and Amjad Ibrahim. 2016. Requirements reconciliation for scalable and secure microservice (de) composition. In 2016 IEEE 24th International Requirements Engineering Conference Workshops (REW). IEEE, 68–73.
[7]
Anastasios Antoniadis, Nikos Filippakis, Paddy Krishnan, Raghavendra Ramesh, Nicholas Allen, and Yannis Smaragdakis. 2020. Static analysis of Java enterprise applications: frameworks and caches, the elephants in the room. In Proceedings of the 41st ACM SIGPLAN Conference on Programming Language Design and Implementation. 794–807.
[8]
Anastasios Antoniadis, Nikos Filippakis, Paddy Krishnan, Raghavendra Ramesh, Nicholas Allen, and Yannis Smaragdakis. 2020. Static Analysis of Java Enterprise Applications: Frameworks and Caches, the Elephants in the Room. In Proceedings of the 41st ACM SIGPLAN Conference on Programming Language Design and Implementation (London, UK) (PLDI 2020). Association for Computing Machinery, New York, NY, USA, 794–807. https://doi.org/10.1145/3385412.3386026
[9]
Luciano Baresi, Martin Garriga, and Alan De Renzis. 2017. Microservices identification through interface analysis. In European Conference on Service-Oriented and Cloud Computing. Springer, 19–33.
[10]
Gabriele Bavota, Andrea De Lucia, Andrian Marcus, and Rocco Oliveto. 2013. Using structural and semantic measures to improve software modularization. Empirical Software Engineering 18, 5 (2013), 901–932.
[11]
Martin Bravenboer and Yannis Smaragdakis. 2009. Strictly declarative specification of sophisticated points-to analyses. In Proceedings of the 24th ACM SIGPLAN conference on Object oriented programming systems languages and applications. 243–262.
[12]
Rui Chen, Shanshan Li, and Zheng Li. 2017. From monolith to microservices: A dataflow-driven approach. In 2017 24th Asia-Pacific Software Engineering Conference (APSEC). IEEE, 466–475.
[13]
Utkarsh Desai, Sambaran Bandyopadhyay, and Srikanth Tamilselvam. 2021. Graph Neural Network to Dilute Outliers for Refactoring Monolith Application. In Proceedings of Association for the Advancement of Artificial Intelligence. AAAI, virtual, 72–80.
[14]
Utkarsh Desai, Sambaran Bandyopadhyay, and Srikanth Tamilselvam. 2021. Graph neural network to dilute outliers for refactoring monolith application. In Proceedings of 35th AAAI Conference on Artificial Intelligence (AAAI’21).
[15]
Diego Doval, Spiros Mancoridis, and Brian S Mitchell. 1999. Automatic clustering of software systems using a genetic algorithm. In STEP’99. Proceedings Ninth International Workshop Software Technology and Engineering Practice. IEEE, 73–81.
[16]
Daniel Escobar, Diana Cárdenas, Rolando Amarillo, Eddie Castro, Kelly Garcés, Carlos Parra, and Rubby Casallas. 2016. Towards the understanding and evolution of monolithic applications as microservices. In 2016 XLII Latin American computing conference (CLEI). IEEE, 1–11.
[17]
Jeanne Ferrante, Karl J Ottenstein, and Joe D Warren. 1987. The program dependence graph and its use in optimization. ACM Transactions on Programming Languages and Systems (TOPLAS) 9, 3(1987), 319–349.
[18]
Martin Fowler. 2004. Strangler Fig Application. https://martinfowler.com/bliki/StranglerFigApplication.html
[19]
Martin Fowler. 2006. Inversion of Control Containers and Dependency Injection pattern. http://www. martinfowler. com/articles/injection. html (2006).
[20]
Michael Gysel, Lukas Kölbener, Wolfgang Giersche, and Olaf Zimmermann. 2016. Service cutter: A systematic approach to service decomposition. In European Conference on Service-Oriented and Cloud Computing. Springer, 185–200.
[21]
Aric A. Hagberg, Daniel A. Schult, and Pieter J. Swart. 2008. Exploring Network Structure, Dynamics, and Function using NetworkX. In Proceedings of the 7th Python in Science Conference, Gaël Varoquaux, Travis Vaught, and Jarrod Millman (Eds.). Pasadena, CA USA, 11 – 15.
[22]
Mark Harman, Robert M Hierons, and Mark Proctor. 2002. A New Representation And Crossover Operator For Search-based Optimization Of Software Modularization. In GECCO, Vol. 2. 1351–1358.
[23]
Sara Hassan, Nour Ali, and Rami Bahsoon. 2017. Microservice ambients: An architectural meta-modelling approach for microservice granularity. In 2017 IEEE International Conference on Software Architecture (ICSA). IEEE, 1–10.
[24]
Gregor Hohpe and Bobby Woolf. 2002. Enterprise integration patterns. In 9th conference on pattern language of programs. 1–9.
[25]
Susan Horwitz, Thomas Reps, and David Binkley. 1990. Interprocedural slicing using dependence graphs. ACM Transactions on Programming Languages and Systems (TOPLAS) 12, 1(1990), 26–60.
[26]
W. Jin, T. Liu, Y. Cai, R. Kazman, R. Mo, and Q. Zheng. 2019. Service Candidate Identification from Monolithic Systems based on Execution Traces. IEEE Transactions on Software Engineering 47, 5 (Apr 2019), 1–21.
[27]
Wuxia Jin, Ting Liu, Qinghua Zheng, Di Cui, and Yuanfang Cai. 2018. Functionality-oriented microservice extraction based on execution trace clustering. In 2018 IEEE International Conference on Web Services (ICWS). IEEE, 211–218.
[28]
Rod Johnson. 2004. Expert one-on-one J2EE design and development. John Wiley & Sons.
[29]
Anup K. Kalia, Chen Lin, Jin Xiao, Saurabh Sinha, John Rofrano, Maja Vukovic, and Debasish Banerjee. 2020. Mono2Micro: An AI-based Toolchain for Evolving Monolithic Enterprise Applications to a Microservice Architecture. In Proceedings of ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering. ACM, Sacramento, 1606–1610.
[30]
Anup K Kalia, Jin Xiao, Rahul Krishna, Saurabh Sinha, Maja Vukovic, and Debasish Banerjee. 2021. Mono2Micro: a practical and effective tool for decomposing monolithic Java applications to microservices. In Proceedings of the 29th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering. 1214–1224.
[31]
KimJongSung. 2013. jPetStore. https://github.com/KimJongSung/jPetStore
[32]
Martin Kleppmann. 2017. Designing data-intensive applications: The big ideas behind reliable, scalable, and maintainable systems. ” O’Reilly Media, Inc.”.
[33]
Sander Klock, Jan Martijn EM Van Der Werf, Jan Pieter Guelen, and Slinger Jansen. 2017. Workload-based clustering of coherent feature sets in microservice architectures. In 2017 IEEE International Conference on Software Architecture (ICSA). IEEE, 11–20.
[34]
Patrick Lam, Eric Bodden, Ondrej Lhoták, and Laurie Hendren. 2011. The Soot framework for Java program analysis: a retrospective. In Cetus Users and Compiler Infastructure Workshop (CETUS 2011), Vol. 15.
[35]
Alessandra Levcovitz, Ricardo Terra, and Marco Tulio Valente. 2016. Towards a technique for extracting microservices from monolithic enterprise systems. arXiv preprint arXiv:1605.03175(2016).
[36]
Yue Li, Tian Tan, Anders Møller, and Yannis Smaragdakis. 2018. Precision-guided context sensitivity for pointer analysis. Proceedings of the ACM on Programming Languages 2, OOPSLA(2018), 1–29.
[37]
Yue Li, Tian Tan, Anders Møller, and Yannis Smaragdakis. 2018. Scalability-first pointer analysis with self-tuning context-sensitivity. In Proceedings of the 2018 26th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering. 129–140.
[38]
Robert C Martin, James Newkirk, and Robert S Koss. 2003. Agile software development: principles, patterns, and practices. Vol. 2. Prentice Hall Upper Saddle River, NJ.
[39]
Genc Mazlami, Jürgen Cito, and Philipp Leitner. 2017. Extraction of microservices from monolithic software architectures. In 2017 IEEE International Conference on Web Services (ICWS). IEEE, 524–531.
[40]
Genc Mazlami, Jürgen Cito, and Philipp Leitner. 2017. Extraction of Microservices from Monolithic Software Architectures. In Proceedings of International Conference on Web Services. IEEE, Honolulu, 524–531.
[41]
Ana Milanova, Atanas Rountev, and Barbara G Ryder. 2005. Parameterized object sensitivity for points-to analysis for Java. ACM Transactions on Software Engineering and Methodology (TOSEM) 14, 1(2005), 1–41.
[42]
Brian S Mitchell and Spiros Mancoridis. 2006. On the automatic modularization of software systems using the bunch tool. IEEE Transactions on Software Engineering 32, 3 (2006), 193–208.
[43]
Sam Newman. 2021. Building microservices. ” O’Reilly Media, Inc.”.
[44]
Chris Richardson. 2018. Microservices patterns: with examples in Java. Simon and Schuster.
[45]
Bernd Ruecker. 2021. Practical Process Automation. ” O’Reilly Media, Inc.”.
[46]
Santonu Sarkar, Girish Maskeri Rama, and Avinash C Kak. 2006. API-based and information-theoretic metrics for measuring the quality of software modularization. IEEE Transactions on Software Engineering 33, 1 (2006), 14–32.
[47]
Claude Elwood Shannon. 2001. A mathematical theory of communication. ACM SIGMOBILE mobile computing and communications review 5, 1(2001), 3–55.
[48]
Micha Sharir, Amir Pnueli, 1978. Two approaches to interprocedural data flow analysis. New York University. Courant Institute of Mathematical Sciences ….
[49]
Olin Grigsby Shivers. 1991. Control-flow analysis of higher-order languages or taming lambda. Carnegie Mellon University.
[50]
Yannis Smaragdakis, Martin Bravenboer, and Ondrej Lhoták. 2011. Pick your contexts well: understanding object-sensitivity. In Proceedings of the 38th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages. 17–30.
[51]
Yannis Smaragdakis, George Kastrinis, and George Balatsouras. 2014. Introspective analysis: context-sensitivity, across the board. In Proceedings of the 35th ACM SIGPLAN Conference on Programming Language Design and Implementation. 485–495.
[52]
Johannes Thönes. 2015. Microservices. IEEE software 32, 1 (2015), 116–116.
[53]
WASdev. 2015. sample.daytrader7. https://github.com/WASdev/sample.daytrader7
[54]
WASdev. 2019. sample.mono-to-ms.pbw-monolith. https://github.com/WASdev/sample.mono-to-ms.pbw-monolith
[55]
Zhu Xiaojin and Ghahramani Zoubin. 2002. Learning from labeled and unlabeled data with label propagation. Tech. Rep., Technical Report CMU-CALD-02–107, Carnegie Mellon University (2002).

Cited By

View all
  • (2024)Migration of Monolithic Systems to Microservices using AI: A Systematic Mapping StudyAnais do XXVII Congresso Ibero-Americano em Engenharia de Software (CIbSE 2024)10.5753/cibse.2024.28435(1-15)Online publication date: 6-May-2024
  • (2024)ReCo: A Modular Neural Framework for Automatically Recommending Connections in Software Models2024 IEEE International Conference on Software Analysis, Evolution and Reengineering (SANER)10.1109/SANER60148.2024.00070(637-648)Online publication date: 12-Mar-2024
  • (2024)Towards Minimum Latency in Cloud-Native Applications via Service-Characteristic- Aware Microservice Deployment2024 IEEE International Conference on Software Analysis, Evolution and Reengineering (SANER)10.1109/SANER60148.2024.00010(35-46)Online publication date: 12-Mar-2024
  • Show More Cited By

Index Terms

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

    Recommendations

    Comments

    Information & Contributors

    Information

    Published In

    cover image ACM Other conferences
    ASE '22: Proceedings of the 37th IEEE/ACM International Conference on Automated Software Engineering
    October 2022
    2006 pages
    ISBN:9781450394758
    DOI:10.1145/3551349
    Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

    Publisher

    Association for Computing Machinery

    New York, NY, United States

    Publication History

    Published: 05 January 2023

    Permissions

    Request permissions for this article.

    Check for updates

    Badges

    Author Tags

    1. Community Detection
    2. Database Transaction.
    3. Microservice Architecture

    Qualifiers

    • Research-article
    • Research
    • Refereed limited

    Conference

    ASE '22

    Acceptance Rates

    Overall Acceptance Rate 82 of 337 submissions, 24%

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

    • Downloads (Last 12 months)202
    • Downloads (Last 6 weeks)9
    Reflects downloads up to 18 Aug 2024

    Other Metrics

    Citations

    Cited By

    View all
    • (2024)Migration of Monolithic Systems to Microservices using AI: A Systematic Mapping StudyAnais do XXVII Congresso Ibero-Americano em Engenharia de Software (CIbSE 2024)10.5753/cibse.2024.28435(1-15)Online publication date: 6-May-2024
    • (2024)ReCo: A Modular Neural Framework for Automatically Recommending Connections in Software Models2024 IEEE International Conference on Software Analysis, Evolution and Reengineering (SANER)10.1109/SANER60148.2024.00070(637-648)Online publication date: 12-Mar-2024
    • (2024)Towards Minimum Latency in Cloud-Native Applications via Service-Characteristic- Aware Microservice Deployment2024 IEEE International Conference on Software Analysis, Evolution and Reengineering (SANER)10.1109/SANER60148.2024.00010(35-46)Online publication date: 12-Mar-2024
    • (2023)MicroProf: Code-level Attribution of Unnecessary Data Transfer in Microservice ApplicationsACM Transactions on Architecture and Code Optimization10.1145/362278720:4(1-26)Online publication date: 14-Dec-2023
    • (2023)Visually-Assisted Decomposition of Monoliths to Microservices2023 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC)10.1109/VL-HCC57772.2023.00057(293-295)Online publication date: 3-Oct-2023
    • (2023)Handling Communication via APIs for MicroservicesProceedings of the 45th International Conference on Software Engineering: New Ideas and Emerging Results10.1109/ICSE-NIER58687.2023.00013(37-42)Online publication date: 17-May-2023
    • (2023)Genetic algorithms and heuristics hybridized for software architecture recoveryAutomated Software Engineering10.1007/s10515-023-00384-y30:2Online publication date: 26-Jun-2023

    View Options

    Get Access

    Login options

    View options

    PDF

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader

    HTML Format

    View this article in HTML Format.

    HTML Format

    Media

    Figures

    Other

    Tables

    Share

    Share

    Share this Publication link

    Share on social media

    -