Industry practices and challenges for the evolvability assurance of microservices

Microservices as a lightweight and decentralized architectural style with fine-grained services promise several beneficial characteristics for sustainable long-term software evolution. Success stories from early adopters like Netflix, Amazon, or Spotify have demonstrated that it is possible to achieve a high degree of flexibility and evolvability with these systems. However, the described advantageous characteristics offer no concrete guidance and little is known about evolvability assurance processes for microservices in industry as well as challenges in this area. Insights into the current state of practice are a very important prerequisite for relevant research in this field. We therefore wanted to explore how practitioners structure the evolvability assurance processes for microservices, what tools, metrics, and patterns they use, and what challenges they perceive for the evolvability of their systems. We first conducted 17 semi-structured interviews and discussed 14 different microservice-based systems and their assurance processes with software professionals from 10 companies. Afterwards, we performed a systematic grey literature review (GLR) and used the created interview coding system to analyze 295 practitioner online resources. The combined analysis revealed the importance of finding a sensible balance between decentralization and standardization. Guidelines like architectural principles were seen as valuable to ensure a base consistency for evolvability and specialized test automation was a prevalent theme. Source code quality was the primary target for the usage of tools and metrics for our interview participants, while testing tools and productivity metrics were the focus of our GLR resources. In both studies, practitioners did not mention architectural or service-oriented tools and metrics, even though the most crucial challenges like Service Cutting or Microservices Integration were of an architectural nature. Practitioners relied on guidelines, standardization, or patterns like Event-Driven Messaging to partially address some reported evolvability challenges. However, specialized techniques, tools, and metrics are needed to support industry with the continuous evaluation of service granularity and dependencies. Future microservices research in the areas of maintenance, evolution, and technical debt should take our findings and the reported industry sentiments into account.

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

[2]  Carolyn B. Seaman,et al.  Qualitative Methods , 2008, Guide to Advanced Empirical Software Engineering.

[3]  Meir M. Lehman Programs, life cycles, and laws of software evolution , 1980 .

[4]  Stefan Wagner,et al.  Automatically measuring the maintainability of service- and microservice-based systems: a literature review , 2017, IWSM-Mensura.

[5]  Daniela E. Damian,et al.  Selecting Empirical Methods for Software Engineering Research , 2008, Guide to Advanced Empirical Software Engineering.

[6]  Serge Demeyer,et al.  Migrating towards microservices: migration and architecture smells , 2018, IWoR@ASE.

[7]  Alain Abran,et al.  Software Maintenance Maturity Model (SMmm): the software maintenance process model , 2005, J. Softw. Maintenance Res. Pract..

[8]  Jacob Cohen A Coefficient of Agreement for Nominal Scales , 1960 .

[9]  J. R. Landis,et al.  The measurement of observer agreement for categorical data. , 1977, Biometrics.

[10]  Vahid Garousi,et al.  The need for multivocal literature reviews in software engineering: complementing systematic literature reviews with grey literature , 2016, EASE.

[11]  Antonio Brogi,et al.  Design principles, architectural smells and refactorings for microservices: a multivocal review , 2019, SICS Software-Intensive Cyber-Physical Systems.

[12]  Silvia Esparrachiari,et al.  Tracking and Controlling Microservice Dependencies , 2018, ACM Queue.

[13]  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).

[14]  Stefan Wagner,et al.  Software Product Quality Control , 2013, Springer Berlin Heidelberg.

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

[16]  Václav Rajlich,et al.  Five recommendations for software evolvability , 2018, J. Softw. Evol. Process..

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

[18]  Claes Wohlin,et al.  Empirical Research Methods in Software Engineering , 2003, ESERNET.

[19]  Vahid Garousi,et al.  Guidelines for including the grey literature and conducting multivocal literature reviews in software engineering , 2017, Inf. Softw. Technol..

[20]  Philipp Leitner,et al.  All the Services Large and Micro: Revisiting Industrial Practice in Services Computing , 2015, ICSOC Workshops.

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

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

[23]  Ipek Ozkaya,et al.  Managing Technical Debt in Software Engineering (Dagstuhl Seminar 16162) , 2016, Dagstuhl Reports.