Does migrating a monolithic system to microservices decrease the technical debt?

Background. The migration from monolithic systems to microservices involves deep refactoring of the systems. Therefore, the migration usually has a big economic impact and companies tend to postpone several activities during this process, mainly to speed-up the migration itself, but also because of the need to release new features. Objective. We monitored the Technical Debt of a small and medium enterprise while migrating a legacy monolithic system to an ecosystem of microservices to analyze changes in the code technical debt before and after the migration to microservices. Method. We conducted a case study analyzing more than four years of the history of a big project (280K Lines of Code) where two teams extracted five business processes from the monolithic system as microservices, by first analyzing the Technical Debt with SonarQube and then performing a qualitative study with the developers to understand the perceived quality of the system and the motivation for eventually postponed activities. Result. The development of microservices helps to reduce the Technical Debt in the long run. Despite an initial spike in the Technical Debt, due to the development of the new microservice, after a relatively short period, the Technical Debt tends to grow slower than in the monolithic system.

[1]  Per Runeson,et al.  Guidelines for conducting and reporting case study research in software engineering , 2009, Empirical Software Engineering.

[2]  Robert L. Nord,et al.  Reducing Friction in Software Development , 2016, IEEE Software.

[3]  Wilhelm Hasselbring,et al.  Using Microservices for Legacy Software Modernization , 2018, IEEE Software.

[4]  Davide Taibi,et al.  A Decomposition and Metric-Based Evaluation Framework for Microservices , 2019, CLOSER.

[5]  Davide Taibi,et al.  The Technical Debt Dataset , 2019, PROMISE.

[6]  R. Yin Case Study Research: Design and Methods , 1984 .

[7]  Claus Pahl,et al.  Architectural Patterns for Microservices: A Systematic Mapping Study , 2018, CLOSER.

[8]  Albert Zündorf,et al.  Aspect-Oriented Modeling of Technology Heterogeneity in Microservice Architecture , 2019, 2019 IEEE International Conference on Software Architecture (ICSA).

[9]  Heikki Huttunen,et al.  Are SonarQube Rules Inducing Bugs? , 2019, 2020 IEEE 27th International Conference on Software Analysis, Evolution and Reengineering (SANER).

[10]  Sam Newman,et al.  Building Microservices , 2015 .

[11]  Peng Liang,et al.  A systematic mapping study on technical debt and its management , 2015, J. Syst. Softw..

[12]  Yuanfang Cai,et al.  Comparing four approaches for technical debt identification , 2014, Software Quality Journal.

[13]  Davide Taibi,et al.  On the Definition of Microservice Bad Smells , 2018, IEEE Software.

[14]  Claus Pahl,et al.  Processes, Motivations, and Issues for Migrating to Microservices Architectures: An Empirical Investigation , 2017, IEEE Cloud Computing.

[15]  Davide Taibi,et al.  A Dynamical Quality Model to Continuously Monitor Software Maintenance , 2017 .

[16]  Rogério de Lemos,et al.  Microservices Architectures and Technical Debt: A Self-adaptation View , 2019 .

[17]  Antonio Brogi,et al.  Freshening the Air in Microservices: Resolving Architectural Smells via Refactoring , 2019, ICSOC Workshops.

[18]  Eric Allman,et al.  Managing technical debt , 2012, Commun. ACM.

[19]  Maria Teresa Baldassarre,et al.  On the Accuracy of SonarQube Technical Debt Remediation Time , 2019, 2019 45th Euromicro Conference on Software Engineering and Advanced Applications (SEAA).

[20]  Andrea Janes,et al.  A Continuous Software Quality Monitoring Approach for Small and Medium Enterprises , 2017, ICPE Companion.

[21]  Davide Taibi,et al.  Serverless: What it Is, What to Do and What Not to Do , 2020, 2020 IEEE International Conference on Software Architecture Companion (ICSA-C).

[22]  Stefan Wagner,et al.  Limiting Technical Debt with Maintainability Assurance – An Industry Survey on Used Techniques and Differences with Service- and Microservice-Based Systems , 2018, 2018 IEEE/ACM International Conference on Technical Debt (TechDebt).

[23]  Graham Pervan,et al.  Designing a Case Study Protocol for Application in IS Research , 2005, PACIS.

[24]  Forrest Shull,et al.  Practical considerations, challenges, and requirements of tool-support for managing technical debt , 2013, 2013 4th International Workshop on Managing Technical Debt (MTD).

[25]  Davide Taibi,et al.  On the diffuseness of code technical debt in Java projects of the apache ecosystem , 2019, TechDebt@ICSE.

[26]  Neil A. Ernst,et al.  Measure it? Manage it? Ignore it? software practitioners and technical debt , 2015, ESEC/SIGSOFT FSE.

[27]  Tatjana D. Stojanovic,et al.  Identifying microservices using structured system analysis , 2020, 2020 24th International Conference on Information Technology (IT).

[28]  Thomas Engel,et al.  Evaluation of Microservice Architectures: A Metric and Tool-Based Approach , 2018, CAiSE Forum.

[29]  Colin J. Fidge,et al.  Function-Splitting Heuristics for Discovery of Microservices in Enterprise Systems , 2018, ICSOC.

[30]  Davide Taibi,et al.  Towards Microservice Smells Detection , 2020, 2020 IEEE/ACM International Conference on Technical Debt (TechDebt).

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

[32]  Murat Erder,et al.  Continuous Architecture: Sustainable Architecture in an Agile and Cloud-Centric World , 2015 .

[33]  Igor Cavrak,et al.  Architecture of an interoperable IoT platform based on microservices , 2016, 2016 39th International Convention on Information and Communication Technology, Electronics and Microelectronics (MIPRO).

[34]  R. Grissom,et al.  Effect sizes for research: A broad practical approach. , 2005 .

[35]  Rodrigo O. Spínola,et al.  Exploring the costs of technical debt management – a case study , 2016, Empirical Software Engineering.

[36]  Dag I. K. Sjøberg,et al.  Architectural Technical Debt in Microservices: A Case Study in a Large Company , 2019, 2019 IEEE/ACM International Conference on Technical Debt (TechDebt).

[37]  Gabor Kecskemeti,et al.  The ENTICE approach to decompose monolithic services into microservices , 2016, 2016 International Conference on High Performance Computing & Simulation (HPCS).

[38]  Carolyn B. Seaman,et al.  Measuring and Monitoring Technical Debt , 2011, Adv. Comput..

[39]  Ward Cunningham,et al.  The WyCash portfolio management system , 1992, OOPSLA '92.

[40]  Stéphane Ducasse,et al.  The squale model — A practice-based industrial quality model , 2009, 2009 IEEE International Conference on Software Maintenance.

[41]  Davide Taibi,et al.  Some SonarQube Issues have a Significant but SmallEffect on Faults and Changes. A large-scale empirical study , 2020, J. Syst. Softw..

[42]  Davide Taibi,et al.  An Empirical Study on Technical Debt in a Finnish SME , 2019, 2019 ACM/IEEE International Symposium on Empirical Software Engineering and Measurement (ESEM).

[43]  Michael Fisher,et al.  The Art of Scalability: Scalable Web Architecture, Processes, and Organizations for the Modern Enterprise , 2009 .

[44]  Alfred Zimmermann,et al.  Assuring the Evolvability of Microservices: Insights into Industry Practices and Challenges , 2019, 2019 IEEE International Conference on Software Maintenance and Evolution (ICSME).

[45]  Frank Leymann,et al.  Ensuring and Assessing Architecture Conformance to Microservice Decomposition Patterns , 2017, ICSOC.

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

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

[48]  Bill Curtis,et al.  Estimating the Principal of an Application's Technical Debt , 2012, IEEE Software.

[49]  Patrick E. McKnight,et al.  Mann‐Whitney U Test , 2010 .

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

[51]  Joost Visser,et al.  An empirical model of technical debt and interest , 2011, MTD '11.

[52]  Alfred Zimmermann,et al.  Towards a Collaborative Repository for the Documentation of Service-Based Antipatterns and Bad Smells , 2019, 2019 IEEE International Conference on Software Architecture Companion (ICSA-C).

[53]  Jean-Louis Letouzey,et al.  Managing Technical Debt with the SQALE Method , 2012, IEEE Software.

[54]  Forrest Shull,et al.  A case study on effectively identifying technical debt , 2013, EASE '13.

[55]  Claus Pahl,et al.  Microservices Anti-patterns: A Taxonomy , 2020, Microservices, Science and Engineering.

[56]  Alexandru Uta,et al.  Attributes Assessing the Quality of Microservices Automatically Decomposed from Monolithic Applications , 2019, 2019 18th International Symposium on Parallel and Distributed Computing (ISPDC).

[57]  Martin Fowler,et al.  Refactoring - Improving the Design of Existing Code , 1999, Addison Wesley object technology series.

[58]  Shanshan Li,et al.  From Monolith to Microservices: A Dataflow-Driven Approach , 2017, 2017 24th Asia-Pacific Software Engineering Conference (APSEC).