IEEE TRANSACTIONS ON SOFTWARE ENGINEERING, VOL. , NO. , MONTH 2023 1 Decomposition of Monolith Applications into Microservices Architectures: A Systematic Review Yalemisew Abgaz, Andrew McCarren, Peter Elger, David Solan, Neil Lapuz, Marin Bivol, Glenn Jackson, Murat Yilmaz, Jim Buckley, and Paul Clarke Abstract—Microservices architecture has gained significant traction, in part owing to its potential to deliver scalable, robust, agile, and failure-resilient software products. Consequently, many companies that use large and complex software systems are actively looking for automated solutions to decompose their monolith applications into microservices. This paper rigorously examines 35 research papers selected from well-known databases using a Systematic Literature Review (SLR) protocol and snowballing method, extracting data to answer the research questions, and presents the following four contributions. First, the Monolith to Microservices Decomposition Framework (M2MDF) which identifies the major phases and key elements of decomposition. Second, a detailed analysis of existing decomposition approaches, tools and methods. Third, we identify the metrics and datasets used to evaluate and validate monolith to microservice decomposition processes. Fourth, we propose areas for future research. Overall, the findings suggest that monolith decomposition into microservices remains at an early stage and there is an absence of methods for combining static, dynamic, and evolutionary data. Insufficient tool support is also in evidence. Furthermore, standardised metrics, datasets, and baselines have yet to be established. These findings can assist practitioners seeking to understand the various dimensions of monolith decomposition and the community’s current capabilities in that endeavour. The findings are also of value to researchers looking to identify areas to further extend research in the monolith decomposition space. Index Terms—Monolith application decomposition, Monolith to microservices migration, Microservices architecture, Microservices identification, Static analysis, Dynamic analysis. 1 I NTRODUCTION W ITH the passage of time, successful software systems grow large and become complex, due to the addition of a plethora of functionalities resulting in highly coupled but less cohesive components [1], [2]. In these large and complex systems, monolith architectures [3] embody the centralisation of functionality in large individual compo- nents, giving rise to inherent limitations in terms of scal- ability, maintenance and deployment performance [1], [4], [5], [6], [7], [8]. In contrast, microservice architectures are distributed, favouring the decomposition of systems into Y. Abgaz, N. Lapuz, G. Jackson, and P. M. Clarke are in the School of Computing in Dublin City University and Lero, the SFI Research Centre for Software, Glasnevin Campus, Dublin 9, Ireland. E-mail: {YalemisewM.Abgaz, Neil.Lapuz, Glenn.Jackson, Paul.M.Clarke}@dcu.ie A. McCarren is in Dublin City University and Insight, the SFI Research Centre for Data Analytics, School of Computing, Dublin City University, Glasnevin Campus, Dublin 9, Dublin, Ireland. E-mail: Andrew.Mccarren@dcu.ie P. Elger and M. Bivol are in fourTheorem Limited, The Rubicon, Cork Institute of Technology, Bishopstown, T12 Y275, Cork, Ireland. E-mail: {Peter.Elger, Marin.Bivol}@fourtheorem.com D. Solan is in FINEOS Corporation Limited, EastPoint Business Park, Dublin, Ireland. E-mail: David.Solan@fineos.com M. Yilmaz is in Gazi University, Faculty of Engineering, Department of Computer Engineering, Ankara, Turkey. E-mail: my@gazi.edu.tr J. Buckley is in Lero/Dept. of CSIS, University of Limerick, Limerick, Ireland E-mail: Jim.Buckley@Lero.ie Manuscript received, ; revised . various relatively small and independent components that may be invoked as required [9], [10], delivering benefits in areas such as increased scalability and improved deploy- ment frequency [2], [4], [11], [12]. Prior to the introduction of microservice architectures, monolith architectures were commonly adopted. However, as software systems continued to grow in size and with demand growing for ever-faster release cycles, the need for partitioning systems into separately compilable services came to the fore. Also, with the advent of cloud-based infrastructure innovations such as Software-as-a-Service [13] and Function-as-a-Service [14], the relative benefits of mono- lith architectures have been reduced [15]. As a result, there is growing interest in microservice architectures [16], [17]. For companies with existing monolith-based systems, a particular challenge is the decomposition of these systems into coherent microservice-based implementations. This de- composition is sometimes focused on supporting migration engineers in the identification of microservice candidates by analysing the application’s domain [18], [19], [20]. Other techniques involve analysing the source code [21], [22], [23], [24], execution traces [25], and version related information [26], [27]. While a great deal of important work has been con- ducted in the decomposition space to date, the existing published material tends to focus on addressing a specific scenario, domain, or programming language. We present a consolidation of the innovations to date, and we introduce a framework as a means to organise and classify the key This article has been accepted for publication in IEEE Transactions on Software Engineering. This is the author's version which has not been fully edited and content may change prior to final publication. Citation information: DOI 10.1109/TSE.2023.3287297 This work is licensed under a Creative Commons Attribution 4.0 License. For more information, see https://creativecommons.org/licenses/by/4.0/