Variability management meets microservices: six challenges of re-engineering microservice-based webshops

A microservice implements a small unit of functionality that it provides through a network using lightweight protocols. So, microservices can be combined to fulfill tasks and implement features of a larger software system---resembling a variability mechanism in the context of a software product line (SPL). Microservices and SPLs have similar goals, namely facilitating reuse and customizing, but they are usually employed in different contexts. Any developer who has access to the network can provide a microservice for any task, while SPLs are usually intended to implement features of a specific domain. Due to their different concepts, using microservices to implement an SPL or adopting SPL practices (e.g., variability management) for microservices is a challenging cross-area research problem. However, both techniques can complement each other, and thus tackling this problem promises benefits for organizations that employ either technique. In this paper, we reason on the importance of advancing in this direction, and sketch six concrete challenges to initiate research, namely (1) feature identification, (2) variability modeling, (3) variable microservice architectures, (4) interchangeability, (5) deep customization, and (6) re-engineering an SPL. We intend these challenges to serve as a starting point for future research in this cross-area research direction---avoiding that the concepts of one area are reinvented in the other.

[1]  Rüdiger Kapitza,et al.  Towards Secure Dynamic Product Lines in the Cloud , 2018, 2018 IEEE/ACM 40th International Conference on Software Engineering: New Ideas and Emerging Technologies Results (ICSE-NIER).

[2]  Carlos José Pereira de Lucena,et al.  On the Performance and Adoption of Search-Based Microservice Identification with toMicroservices , 2020, 2020 IEEE International Conference on Software Maintenance and Evolution (ICSME).

[3]  Alexander Egyed,et al.  Multi-objective reverse engineering of variability-safe feature models based on code dependencies of system variants , 2017, Empirical Software Engineering.

[4]  Alessandro F. Garcia,et al.  Extraction of Configurable and Reusable Microservices from Legacy Systems: An Exploratory Study , 2019, SPLC.

[5]  Sebastian Krieter,et al.  Beyond Software Product Lines: Variability Modeling in Cyber-Physical Systems , 2017 .

[6]  Krzysztof Czarnecki,et al.  Cool features and tough decisions: a comparison of variability modeling approaches , 2012, VaMoS.

[7]  Bogdan Dit,et al.  Feature location in source code: a taxonomy and survey , 2013, J. Softw. Evol. Process..

[8]  Jacob Krüger,et al.  Apo-games: a case study for reverse engineering variability from cloned Java variants , 2018, SPLC.

[9]  Davide Taibi,et al.  A curated Dataset of Microservices-Based Systems , 2019, ArXiv.

[11]  Klaus Pohl,et al.  Software Product Line Engineering , 2005 .

[12]  Sunil Kumar,et al.  Exploiting interoperable microservices in web objects enabled Internet of Things , 2017, 2017 Ninth International Conference on Ubiquitous and Future Networks (ICUFN).

[13]  Eric Yuan,et al.  Architecture Interoperability and Repeatability with Microservices: An Industry Perspective , 2019, 2019 IEEE/ACM 2nd International Workshop on Establishing the Community-Wide Infrastructure for Architecture-Based Software Engineering (ECASE).

[14]  Aleksi Partanen,et al.  Microservices vs. Service-oriented architecture , 2018 .

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

[16]  Fabrizio Montesi,et al.  Microservices: Yesterday, Today, and Tomorrow , 2017, Present and Ulterior Software Engineering.

[17]  Klaus Pohl,et al.  Software Product Line Engineering - Foundations, Principles, and Techniques , 2005 .

[18]  Jacob Krüger,et al.  Promote-pl: a round-trip engineering process model for adopting and evolving product lines , 2020, SPLC.

[19]  Jacob Krüger,et al.  Features and How to Find Them , 2019, Software Engineering for Variability Intensive Systems.

[20]  Klaus Schmid,et al.  Software product lines in action - the best industrial practice in product line engineering , 2007 .

[21]  Jacob Krüger,et al.  Principles of feature modeling , 2019, ESEC/SIGSOFT FSE.

[22]  Gregor Kiczales,et al.  Aspect-oriented programming , 2001, ESEC/FSE-9.

[23]  Jacob Krüger,et al.  Activities and costs of re-engineering cloned variants into an integrated platform , 2020, VaMoS.

[24]  Javad Ghofrani,et al.  Challenges of Microservices Architecture: A Survey on the State of the Practice , 2018, ZEUS.

[25]  Thomas Leich,et al.  Mastering Software Variability with FeatureIDE , 2017, Springer International Publishing.

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

[27]  Hui Song,et al.  Deep Customization of Multi-tenant SaaS Using Intrusive Microservices , 2018, 2018 IEEE/ACM 40th International Conference on Software Engineering: New Ideas and Emerging Technologies Results (ICSE-NIER).

[28]  Thomas D. LaToza,et al.  Implementing Microservices through Microtasks , 2019, ArXiv.

[29]  Claus Pahl,et al.  Microservices: The Journey So Far and Challenges Ahead , 2018, IEEE Softw..

[30]  Arnor Solberg,et al.  Using Intrusive Microservices to Enable Deep Customization of Multi-tenant SaaS , 2018, 2018 11th International Conference on the Quality of Information and Communications Technology (QUATIC).

[31]  Roberto Erick Lopez-Herrejon,et al.  Automatic extraction of product line architecture and feature models from UML class diagram variants , 2020, Inf. Softw. Technol..

[32]  Thomas Bauernhansl,et al.  Challenges of Production Microservices , 2018 .

[33]  Alessandro F. Garcia,et al.  Analysis of the Criteria Adopted in Industry to Extract Microservices , 2019, 2019 IEEE/ACM Joint 7th International Workshop on Conducting Empirical Studies in Industry (CESI) and 6th International Workshop on Software Engineering Research and Industrial Practice (SER&IP).

[34]  Alexander Egyed,et al.  Reengineering legacy applications into software product lines: a systematic mapping , 2017, Empirical Software Engineering.

[35]  Patricia Lago,et al.  Migrating Towards Microservice Architectures: An Industrial Survey , 2018, 2018 IEEE International Conference on Software Architecture (ICSA).

[36]  Hui Song,et al.  Using microservices for non-intrusive customization of multi-tenant SaaS , 2019, ESEC/SIGSOFT FSE.

[37]  Krzysztof Czarnecki,et al.  A survey of variability modeling in industrial practice , 2013, VaMoS.

[38]  Gunter Saake,et al.  Feature-Oriented Software Product Lines , 2013, Springer Berlin Heidelberg.

[39]  Gustavo Pinto,et al.  An experience report on the adoption of microservices in three Brazilian government institutions , 2018, SBES.

[40]  Jacob Krüger,et al.  An empirical analysis of the costs of clone- and platform-oriented software reuse , 2020, ESEC/SIGSOFT FSE.