Refactoring Java Monoliths into Executable Microservice-Based Applications

In the last few years we have been seeing a drastic change in the way software is developed. Large-scale software projects are being assembled by a flexible composition of many (small) components possibly written in different programming languages and deployed anywhere in the cloud – the so-called microservice-based applications. The dramatic growth in popularity of microservice-based applications has pushed several companies to apply major refactorings to their software systems. However, this is a challenging task that may take several months or even years. We propose a methodology to automatically evolve a Java monolithic application into a microservice-based one. Our methodology receives the Java code and a proposition of microservices and refactors the original classes to make each microservice independent. Our methodology creates an API for each method call to classes that are in other services. The database entities are also refactored to be included in the corresponding service. The initial evaluation shows that our tool can successfully refactor 80% of the applications tested.

[1]  Jürgen Cito,et al.  Extraction of Microservices from Monolithic Software Architectures , 2017, 2017 IEEE International Conference on Web Services (ICWS).

[2]  Stephen J. Andriole The death of big software , 2017, Commun. ACM.

[3]  Yuanfang Cai,et al.  Service Candidate Identification from Monolithic Systems Based on Execution Traces , 2019, IEEE Transactions on Software Engineering.

[4]  Sam Newman,et al.  Building microservices - designing fine-grained systems, 1st Edition , 2015 .

[5]  Theo Lynn,et al.  Microservices migration patterns , 2018, Softw. Pract. Exp..

[6]  Schahram Dustdar,et al.  Microservices: Migration of a Mission Critical System , 2017, IEEE Transactions on Services Computing.

[7]  Robert Heinrich,et al.  Identifying Microservices Using Functional Decomposition , 2018, SETTA.

[8]  Guido Wirtz,et al.  Requirements for a model-driven cloud-native migration of monolithic web-based applications , 2019, SICS Software-Intensive Cyber-Physical Systems.

[9]  Alfred Zimmermann,et al.  Microservices Migration in Industry: Intentions, Strategies, and Challenges , 2019, 2019 IEEE International Conference on Software Maintenance and Evolution (ICSME).

[10]  Olaf Zimmermann,et al.  Service Cutter: A Systematic Approach to Service Decomposition , 2016, ESOCC.

[11]  Keisuke Yano,et al.  Extracting Candidates of Microservices from Monolithic Application Code , 2018, 2018 25th Asia-Pacific Software Engineering Conference (APSEC).

[12]  Sam Newman,et al.  Monolith to Microservices: Evolutionary Patterns to Transform Your Monolith , 2019 .

[13]  Eli Tilevich,et al.  Cloud refactoring: automated transitioning to cloud-based services , 2013, Automated Software Engineering.

[14]  Qinghua Zheng,et al.  Functionality-Oriented Microservice Extraction Based on Execution Trace Clustering , 2018, 2018 IEEE International Conference on Web Services (ICWS).

[15]  Michael Felderer,et al.  From Monolithic Systems to Microservices: An Assessment Framework , 2019, Inf. Softw. Technol..