Refactoring Monolithic Object-Oriented Source Code to Materialize Microservice-oriented Architecture

The emergence of the microservice-oriented architecture (MSA) has led to increased maintainability, better readability, and better scalability. All these advantages make migrating a monolithic software towards an MSA an attractive prospect for organizations. The migration process is recognized to be complex and consequently risky and costly. This process is composed of two phases: (1) the microservice-based architecture recovery phase and (2) the transformation (i.e. materialization) phase. In this paper, we propose a systematic approach to transform an object-oriented monolithic application towards an MS-oriented one by applying a set of transformation pattern. To validate our approach we automated it with our tool MonoToMicro, and applied it on a set of monolithic Java applications to be migrated towards microservices-based ones.

[1]  Patricia Lago,et al.  Research on Architecting Microservices: Trends, Focus, and Potential for Industrial Adoption , 2017, 2017 IEEE International Conference on Software Architecture (ICSA).

[2]  Abdelhak-Djamel Seriai,et al.  Comparing and combining genetic and clustering algorithms for software component identification from object-oriented code , 2012, C3S2E '12.

[3]  Mourad Oussalah,et al.  Search-Based Extraction of Component-Based Architecture from Object-Oriented Systems , 2008, ECSA.

[4]  Chouki Tibermacine,et al.  Migrating large object-oriented Applications into component-based ones: instantiation and inheritance transformation , 2015, GPCE.

[5]  Chouki Tibermacine,et al.  Materializing Architecture Recovered from Object-Oriented Source Code in Component-Based Languages , 2016, ECSA.

[6]  Abdelhak-Djamel Seriai,et al.  Software Architecture Recovery Process Based on Object-Oriented Source Code and Documentation , 2010, ECSA.

[7]  Abdelhak-Djamel Seriai,et al.  Component-Based Architecture Recovery from Object Oriented Systems via Relational Concept Analysis , 2010, CLA.

[8]  Stefan Wagner,et al.  From Monolith to Microservices: A Classification of Refactoring Approaches , 2018, DEVOPS.

[9]  Shang-Pin Ma,et al.  Migrating Monolithic Mobile Application to Microservice Architecture: An Experiment Report , 2017, 2017 IEEE International Conference on AI & Mobile Services (AIMS).

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

[11]  Mohammad Javad Amiri Object-Aware Identification of Microservices , 2018, 2018 IEEE International Conference on Services Computing (SCC).

[12]  Willem-Jan van den Heuvel,et al.  The pains and gains of microservices: A Systematic grey literature review , 2018, J. Syst. Softw..

[13]  Houari A. Sahraoui,et al.  Identifying Software Components from Object-Oriented APIs Based on Dynamic Analysis , 2018, 2018 IEEE/ACM 26th International Conference on Program Comprehension (ICPC).

[14]  Luciano Baresi,et al.  Microservices Identification Through Interface Analysis , 2017, ESOCC.

[15]  Abdelhak-Djamel Seriai,et al.  From Monolithic Architecture Style to Microservice one Based on a Semi-Automatic Approach , 2020, 2020 IEEE International Conference on Software Architecture (ICSA).

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

[17]  Andy Koronios,et al.  Architecting Microservices: Practical Opportunities and Challenges , 2018, J. Comput. Inf. Syst..

[18]  Anas Shatnawi,et al.  A taxonomy of service identification approaches for legacy software systems modernization , 2021, J. Syst. Softw..