Migration of Monolithic Systems to Microservices using AI: A Systematic Mapping Study
Resumo
The popularity of microservices architecture has been increasing considerably because of its capacity to alleviate monolithic architecture issues. Nonetheless, the migration of monolith systems to microservices is a complex task. This work aims to analyze and characterize the state of the art on migrating monolithic applications towards microservices (semi-) automatically using Artificial Intelligence (AI) techniques by applying a systematic mapping methodology. Results showed that clustering is the preferred IA technique to decompose a monolith, cited by 63% out of the 22 reviewed studies. Moreover, the most prevailing input type used in migration techniques was source code (36.4%).
Referências
Bajaj, D., Bharti, U., Goel, A., and Gupta, S. C. (2020). Partial migration for rearchitecting a cloud native monolithic application into microservices and faas. In Badica, C., Liatsis, P., Kharb, L., and Chahal, D., editors, Information, Communication and Computing Technology, pages 111–124, Singapore. Springer Singapore.
Balalaie, A., Heydarnoori, A., and Jamshidi, P. (2015). Migrating to Cloud-Native Architectures Using Microservices: An Experience Report.
Baresi, L., Garriga, M., and De Renzis, A. (2017). Microservices Identification Through Interface Analysis. In De Paoli, F., Schulte, S., and Broch Johnsen, E., editors, Service-Oriented and Cloud Computing, Lecture Notes in Computer Science, pages 19–33, Cham. Springer International Publishing.
Basili, V. R. and Weiss, D. M. (1984). A Methodology for Collecting Valid Software Engineering Data. IEEE Transactions on Software Engineering, SE-10(6):728–738. Conference Name: IEEE Transactions on Software Engineering.
Brito, M., Cunha, J., and Saraiva, J. a. (2021). Identification of microservices from monolithic applications through topic modelling. In Proceedings of the 36th Annual ACM Symposium on Applied Computing, SAC ’21, page 1409–1418, New York, NY, USA. Association for Computing Machinery.
Cao, L. and Zhang, C. (2022). Implementation of domain-oriented microservices decomposition based on node-attributed network. In 2022 11th International Conference on Software and Computer Applications, ICSCA 2022, page 136–142, New York, NY, USA. Association for Computing Machinery.
Christoforou, A., Garriga, M., Andreou, A. S., and Baresi, L. (2017). Supporting the Decision of Migrating to Microservices Through Multi-layer Fuzzy Cognitive Maps. In Maximilien, M., Vallecillo, A., Wang, J., and Oriol, M., editors, Service-Oriented Computing, Lecture Notes in Computer Science, pages 471–480, Cham. Springer International Publishing.
De Alwis, A. A. C., Barros, A., Polyvyanyy, A., and Fidge, C. (2018). Function-Splitting Heuristics for Discovery of Microservices in Enterprise Systems. In Pahl, C., Vukovic, M., Yin, J., and Yu, Q., editors, Service-Oriented Computing, Lecture Notes in Computer Science, pages 37–53, Cham. Springer International Publishing.
Di Francesco, P., Lago, P., and Malavolta, I. (2018). Migrating Towards Microservice Architectures: An Industrial Survey. In 2018 IEEE International Conference on Software Architecture (ICSA), pages 29–2909.
Di Francesco, P., Lago, P., and Malavolta, I. (2019). Architecting with microservices: A systematic mapping study. Journal of Systems and Software, 150:77–97.
Eski, S. and Buzluca, F. (2018). An automatic extraction approach: transition to microservices architecture from monolithic application. In Proceedings of the 19th International Conference on Agile Software Development: Companion, XP ’18, pages 1–6, New York, NY, USA. Association for Computing Machinery.
Fowler, M. and Lewis, J. (2014). Microservices.
Fritzsch, J., Bogner, J., Wagner, S., and Zimmermann, A. (2019a). Microservices migration in industry: Intentions, strategies, and challenges. In 2019 IEEE International Conference on Software Maintenance and Evolution (ICSME). IEEE.
Fritzsch, J., Bogner, J., Zimmermann, A., and Wagner, S. (2019b). From Monolith to Microservices: A Classification of Refactoring Approaches. volume 11350, pages 128–141. arXiv:1807.10059 [cs].
Gysel, M., Kölbener, L., Giersche, W., and Zimmermann, O. (2016). Service Cutter: A Systematic Approach to Service Decomposition. Pages: 200.
Jamshidi, P., Pahl, C., Mendonça, N. C., Lewis, J., and Tilkov, S. (2018). Microservices: The journey so far and challenges ahead. IEEE Software, 35(3):24–35.
Jin, W., Liu, T., Cai, Y., Kazman, R., Mo, R., and Zheng, Q. (2021). Service Candidate Identification from Monolithic Systems Based on Execution Traces. IEEE Transactions on Software Engineering, 47(5):987–1007. Conference Name: IEEE Transactions on Software Engineering.
Kalia, A. K., Xiao, J., Krishna, R., Sinha, S., Vukovic, M., and Banerjee, D. (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. ACM.
Kamimura, M., Yano, K., Hatano, T., and Matsuo, A. (2018). Extracting Candidates of Microservices from Monolithic Application Code. In 2018 25th Asia-Pacific Software Engineering Conference (APSEC), pages 571–580. ISSN: 2640-0715.
Kitchenham, B. and Brereton, P. (2013). A systematic review of systematic review process research in software engineering. Information and Software Technology, 55(12):2049–2075.
Koschel, A., Astrova, I., and Dötterl, J. (2017). Making the move to microservice architecture. In 2017 International Conference on Information Society (i-Society), pages 74–79.
Lapuz, N., Clarke, P., and Abgaz, Y. (2021). Digital transformation and the role of dynamic tooling in extracting microservices from existing software systems. In Yilmaz, M., Clarke, P., Messnarz, R., and Reiner, M., editors, Systems, Software and Services Process Improvement, pages 301–315, Cham. Springer International Publishing.
Li, S., Zhang, H., Jia, Z., Li, Z. E., Zhang, C., Li, J., and Gao, Q. (2019). A Dataflow-Driven Approach to Identifying Microservices from Monolithic Applications. Journal of Systems and Software, 157.
Li, Z., Shang, C., Wu, J., and Li, Y. (2022). Microservice extraction based on knowledge graph from monolithic applications. Information and Software Technology, 150:106992.
Liu, B., Xiong, J., Ren, Q., Tyszberowicz, S., and Yang, Z. (2022). Log2ms: a framework for automated refactoring monolith into microservices using execution logs. In 2022 IEEE International Conference on Web Services (ICWS), pages 391–396.
Mathai, A., Bandyopadhyay, S., Desai, U., and Tamilselvam, S. (2022). Monolith to microservices: Representing application software through heterogeneous graph neural network.
Matias, T., Correia, F. F., Fritzsch, J., Bogner, J., Ferreira, H. S., and Restivo, A. (2020). Determining microservice boundaries: A case study using static and dynamic software analysis.
Mazlami, G., Cito, J., and Leitner, P. (2017). Extraction of Microservices from Monolithic Software Architectures. In 2017 IEEE International Conference on Web Services (ICWS), pages 524–531.
Newman, S. (2015). Building Microservices: Designing Fine-Grained Systems. O’Reilly Media, 1st edition.
Nitin, V., Asthana, S., Ray, B., and Krishna, R. (2022). Cargo: Ai-guided dependency analysis for migrating monolithic applications to microservices architecture.
Nunes, L., Santos, N., and Rito Silva, A. (2019). From a monolith to a microservices architecture: An approach based on transactional contexts. In Bures, T., Duchien, L., and Inverardi, P., editors, Software Architecture, pages 37–52, Cham. Springer International Publishing.
Petersen, K., Vakkalanka, S., and Kuzniarz, L. (2015). Guidelines for conducting systematic mapping studies in software engineering: An update. Information and Software Technology, 64:1–18.
Pigazzini, I., Arcelli Fontana, F., and Maggioni, A. (2019). Tool support for the migration to microservice architecture: An industrial case study. In Bures, T., Duchien, L., and Inverardi, P., editors, Software Architecture, pages 247–263, Cham. Springer International Publishing.
Ponce, F., Márquez, G., and Astudillo, H. (2019). Migrating from monolithic architecture to microservices: A Rapid Review. In 2019 38th International Conference of the Chilean Computer Science Society (SCCC), pages 1–7. ISSN: 1522-4902.
Ren, Z., Wang, W., Wu, G., Gao, C., Chen, W., Wei, J., and Huang, T. (2018). Migrating Web Applications from Monolithic Structure to Microservices Architecture. In Proceedings of the 10th Asia-Pacific Symposium on Internetware, Internetware ’18, pages 1–10, New York, NY, USA. Association for Computing Machinery.
Schugerl, P., Rilling, J., Witte, R., and Charland, P. (2009). A Quality Perspective of Software Evolvability Using Semantic Analysis. In 2009 IEEE International Conference on Semantic Computing, pages 420–427.
Sellami, K., Saied, M. A., and Ouni, A. (2022). A hierarchical-dbscan method for extracting microservices from monolithic applications.
Trabelsi, I., Abdellatif, M., Abubaker, A., Moha, N., Mosser, S., Ebrahimi-Kahou, S., and Guéhéneuc, Y.-G. (2022). From legacy to microservices: A type-based approach for microservices identification using machine learning and semantic analysis. Journal of Software: Evolution and Process, n/a(n/a):e2503.
Xu, D. and Tian, Y. (2015). A comprehensive survey of clustering algorithms. Annals of Data Science, 2.
Zhao, W. X., Zhou, K., Li, J., Tang, T., Wang, X., Hou, Y., Min, Y., Zhang, B., Zhang, J., Dong, Z., Du, Y., Yang, C., Chen, Y., Chen, Z., Jiang, J., Ren, R., Li, Y., Tang, X., Liu, Z., Liu, P., Nie, J., and rong Wen, J. (2023). A survey of large language models. ArXiv, abs/2303.18223.
Zhou, X., Jin, Y., Zhang, H., Li, S., and Huang, X. (2016). A map of threats to validity of systematic literature reviews in software engineering. In 2016 23rd Asia-Pacific Software Engineering Conference (APSEC), pages 153–160.