A Comprehensive Microservice Extraction Approach Integrating Business Functions and Database Entities
Cloud application practitioners are building large-scale enterprise applications as microservices, to leverage scalability, performance, and availability. Microservices architecture allows a large monolithic application to be split into small, loosely coupled services. A service communicates with other services using lightweight protocols such as RESTful APIs. Extracting microservices from the monolith is a challenging task and is mostly performed manually by system architects based on their skills. This extraction involves both: 1) Partitioning of business logic, 2) Partitioning of database. For partitioning of business logic, the existing research studies focus on decomposition by considering the dependencies in the application at the class-level. However, with the passage of time, monolith application classes outgrow their size defying the Single Responsibility Principle (SRP). So, there is a need to consider the code within the classes when identifying microservices. Current studies also lack the partitioning of database and ignore the mapping of Database Entities (DE) to the microservices. In this paper, we present a Comprehensive Microservice Extraction Approach (CMEA) that considers: 1) Both classes and their methods to define and refine microservices, 2) Associate the DE to microservices using newly devised eight guiding rules handling ownership conflicts. This approach has been applied to three benchmark web applications implemented in Java and one in-house application implemented in both Java and Python. Our results demonstrate better or similar software quality attributes in comparison to the existing related studies. CMEA improves software quality attributes by 22%. System architects can easily identify microservices along with their DE using our approach. The CMEA is generic and language-independent so it can be used for any application.
[1] Al-Debagy O. and Martinek P., “Dependencies- Based Microservices Decomposition Method,” International Journal of Computers and Applications, vol. 44, no. 9, pp. 814-821, 2022. https://doi.org/10.1080/1206212X.2021.1915444
[2] Bajaj D., Bharti U., Goel A., and Gupta S., “Partial Migration for Re-Architecting a Cloud Native Monolithic Application into Microservices and Faas,” in Proceedings of the 5th International Conference on Information, Communication and Computing Technology, New Delhi, pp. 111-124, 2020. https://doi.org/10.1007/978-981-15-9671- 1_9
[3] Bajaj D., Bharti U., Goel A., and Gupta S., “A Prescriptive Model for Migration to Microservices Based on SDLC Artifacts,” Journal of Web Engineering, vol. 20, no. 3, pp. 817-852, 2021. DOI: 10.13052/jwe1540-9589.20312
[4] Bajaj D., Goel A., and Gupta S., “GreenMicro: Identifying Microservices from Use Cases in Greenfield Development,” IEEE Access, vol. 10, pp. 67008-67018, 2022. DOI:10.1109/ACCESS.2022.3182495
[5] Baresi L., Garriga M., and De Renzis A., “Microservices Identification through Interface Analysis,” in Proceedings of the Service-Oriented and Cloud Computing 6th IFIP WG 2.14 European Conference, Oslo, pp. 19-33, 2017. https://doi.org/10.1007/978-3-319-67262-5_2
[6] Baškarada S., Nguyen V., and Koronios A., “Architecting Microservices: Practical Opportunities and Challenges,” Journal of Computer Information Systems, vol. 60, no. 5, pp. 428-436, 2020. https://doi.org/10.1080/08874417.2018.1520056
[7] Cerny T., “Aspect-Oriented Challenges in System Integration with Microservices, SOA and IoT,” Enterprise Information Systems, vol. 13, no. 4, pp. 467-489, 2019. DOI:10.1080/17517575.2018.1462406
[8] Daoud M., El Mezouari A., Faci N., Benslimane D., Maamar Z., and El Fazziki A., “A Multi- Model Based Microservices Identification Approach,” Journal of Systems Architecture, vol. 118, pp. 102200, 2021. https://doi.org/10.1016/j.sysarc.2021.102200
[9] Desai U., Bandyopadhyay S., and Tamilselvam S., “Graph Neural Network to Dilute Outliers for Refactoring Monolith Application,” SFU Public Knowledge Project, vol. 35, no. 1, pp. 72-80, 2021. DOI:10.1609/aaai.v35i1.16079
[10] El Kholy M. and El Fatatry A., “Framework for Interaction between Databases and Microservice Architecture,” IT Professional, vol. 21, no. 5, pp. 57-63, 2019. DOI:10.1109/MITP.2018.2889268
[11] Eski S. and Buzluca F., “An Automatic Extraction Approach-Transition to Microservices Architecture from Monolithic Application,” in Proceedings of the 19th International Conference on Agile Software Development: Companian, Porto, pp. 1-6, 2018. https://doi.org/10.1145/3234152.3234195
[12] Ghlala R., Kodia Z., and Ben Said L., “Using MCDM and FaaS in Automating the Eligibility of Business Rules in the Decision-Making Process,” The International Arab Journal of Information Technology, vol. 20, no. 2, pp. 224-233, 2023. https://doi.org/10.34028/iajit/20/2/9
[13] Gysel M., Kölbener L., Giersche W., and Zimmermann O., “Service Cutter: A Systematic Approach to Service Decomposition,” in Proceedings of the 5th IFIP WG 2.14 European Conference on Service-Oriented and Cloud Computing, Vienna, pp. 185-200, 2016. https://doi.org/10.1007/978-3-319-44482-6_12
[14] Jamshidi P., Pahl C., Mendonça N., Lewis J., and Tilkov S., “Microservices: The Journey so far and Challenges Ahead,” IEEE Software, vol. 35, no. 3, pp. 24-35, 2018. DOI:10.1109/MS.2018.2141039
[15] Jin W., Liu T., Zheng Q., Cui D., and Cai Y., “Functionality-Oriented Microservice Extraction Based on Execution Trace Clustering,” in Proceedings of the IEEE International Conference on Web Services, San Francisco, pp. 211-218, 2018. DOI:10.1109/ICWS.2018.00034
[16] Jin W., Liu T., Cai Y., Kazman R., Mo R., and Zheng Q., “Service Candidate Identification from Monolithic Systems Based on Execution Traces,” IEEE Transactions on Software Engineering, vol. 47, no. 5, pp. 987-1007, 2021. DOI:10.1109/TSE.2019.2910531
[17] Kalia A., Xiao J., Krishna R., Sinha S., Vukovic M., and Banerjee D., “Mono2Micro : A Practical and Effective Tool for Decomposing Monolithic Java Applications to Microservices,” in A Comprehensive Microservice Extraction Approach Integrating Business Functions ... 43 Proceedings of the 29th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering, pp. 1214-1224, Athens, 2021. https://doi.org/10.1145/3468264.3473915
[18] Kumar L., Satapathy S., and Murthy L., “Method Level Refactoring Prediction on five Open Source Java Projects Using Machine Learning Techniques,” in Proceedings of the 12th Innovations on Software Engineering Conference, Pune, pp. 1-10, 2019. https://doi.org/10.1145/3299771.3299777
[19] Li S., Zhang H., Jia Z., Li Z., Zhang C., Li J., Gao Q., Ge J., and Shan Z., “A Dataflow-Driven Approach to Identifying Microservices from Monolithic Applications,” Journal of Systems and Software, vol. 157, pp. 110380, 2019. https://doi.org/10.1016/j.jss.2019.07.008
[20] Lohnertz J. and Oprescu A., “Steinmetz : Toward Automatic Decomposition of Monolithic Software into Microservices,” Seminar Series on Advanced Techniques and Tools for Software Evolution, vol. 2754, pp. 1-8, 2020. https://ceur- ws.org/Vol-2754/paper2.pdf
[21] Márquez G., Villegas M., and Astudillo H., “A Pattern Language for Scalable Microservices- Based Systems,” in Proceedings of the 12th European Conference on Software Architecture: Companion, Madrid, pp. 1-7, 2018. https://doi.org/10.1145/3241403.3241429
[22] Matalqa S. and Mustafa S., “The Effect of Horizontal Database Table Partitioning on Query Performance,” The International Arab Juornal of Information Technology, vol. 13, no. 1A, pp. 184- 189, 2016. https://iajit.org/PDF/Vol%2013,%20No.%201A %20(Special%20Issue)/329.pdf
[23] Mazlami G., Cito J., and Leitner P., “Extraction of Microservices from Monolithic Software Architectures,” in Proceedings of the IEEE 24th International Conference on Web Services, Honolulu, pp. 524-531, 2017. DOI:10.1109/ICWS.2017.61
[24] Raj V. and Bhukya H., “Assessing the Impact of Migration from SOA to Microservices Architecture,” Springer Nature Journal of Computer Science, vol. 4, pp. 577, 2023. https://doi.org/10.1007/s42979-023-01971-2
[25] Schmidt F., MacDonell S., and Connor A., Studies in Computational Intelligence, Springer, 2012. https://doi.org/10.1007/978-3-642-23202-2_7
[26] Selmadji A., Seriai A., Bouziane H., Mahamane R., Zaragoza P., and Dony C., “From Monolithic Architecture Style to Microservice one Based on a Semi-Automatic Approach,” in Proceedings of the IEEE International Conference on Software Architecture, Salvador, pp. 157-168, 2020. DOI:10.1109/ICSA47634.2020.00023
[27] Taibi D., Lenarduzzi V., and Pahl C., Microservices: Science and Engineering, Springer, 2018. https://doi.org/10.1007/978-3- 030-31646-4_5
[28] Trabelsi I., Abdellatif M., Abubaker A., Moha N., Mosser S., Ebrahimi‐Kahou S., and Guéhéneuc Y., “From Legacy to Microservices: A Type- based Approach for Microservices Identification Using Machine Learning and Semantic Analysis,” Journal of Software: Evolution and Process, vol. 35. no. 10, pp. 1-27, 2023. https://doi.org/10.1002/smr.2503
[29] Tsantalis N. and Chatzigeorgiou A., “Identification of Move Method Refactoring Opportunities,” IEEE Transactions on Software Engineering, vol. 35, no. 3, pp. 347-367, 2009. DOI:10.1109/TSE.2009.1
[30] Walker A., Das D., and Cerny T., “Automated Code-Smell Detection in Microservices through Static Analysis: A Case Study,” Applied Sciences, vol. 10, no. 21, pp. 1-20, 2020. https://doi.org/10.3390/app10217800
[31] Zimmermann O., “Microservices Tenets: Agile Approach to Service Development and Deployment,” Computer Science-Research and Development, vol. 32, no. 3-4, pp. 301-310, 2017. DOI:10.1007/s00450-016-0337-0
[32] Von Zitzewitz A., “Mitigating Technical and Architectural Debt with Sonargraph,” in Proceedings of the IEEE/ACM International Conference on Technical Debt, Montreal, pp. 66- 67, 2019. DOI:10.1109/TechDebt.2019.00022