Design principles, architectural smells and refactorings for microservices: a multivocal review

Potential benefits such as agile service delivery have led many companies to deliver their business capabilities through microservices. Bad smells are however always around the corner, as witnessed by the considerable body of literature discussing architectural smells that possibly violate the design principles of microservices. In this paper, we systematically review the white and grey literature on the topic, in order to identify the most recognised architectural smells for microservices and to discuss the architectural refactorings allowing to resolve them.

[1]  Philippe Kruchten,et al.  The 4+1 View Model of Architecture , 1995, IEEE Softw..

[2]  Cesare Pautasso,et al.  Interface Quality Patterns: Communicating and Improving the Quality of Microservices APIs , 2018, EuroPLoP.

[3]  Patricia Lago,et al.  The Journal of Systems and Software , 2019 .

[4]  Michael Nygard,et al.  Release It!: Design and Deploy Production-Ready Software , 2017 .

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

[6]  Enterprise Integration Patterns Designing Building And , 2019 .

[7]  Antonio Brogi,et al.  Cloud Container Technologies: A State-of-the-Art Review , 2019, IEEE Transactions on Cloud Computing.

[8]  Harry Bouwman,et al.  Addressing the Context of Use in Mobile Computing: a Survey on the State of the Practice , 2015, Interact. Comput..

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

[10]  Cloves Carneiro,et al.  Microservices From Day One , 2016, Apress.

[11]  Pooyan Jamshidi,et al.  Microservices Architecture Enables DevOps: Migration to a Cloud-Native Architecture , 2016, IEEE Software.

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

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

[14]  Cesare Pautasso,et al.  Microservices in Practice, Part 1: Reality Check and Service Design , 2017, IEEE Software.

[15]  Mike Amundsen,et al.  Microservice Architecture: Aligning Principles, Practices, and Culture , 2016 .

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

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

[18]  Ossi Taipale,et al.  Microservices validation: Mjolnirr platform case study , 2015, 2015 38th International Convention on Information and Communication Technology, Electronics and Microelectronics (MIPRO).

[19]  Rogério F. da Silva,et al.  The Challenge of Evaluating Virtual Communities of Practice: A Systematic Mapping Study , 2020, Interdisciplinary Journal of Information, Knowledge, and Management.

[20]  Claes Wohlin,et al.  Experimentation in software engineering: an introduction , 2000 .

[21]  Olaf Zimmermann Architectural refactoring for the cloud: a decision-centric view on cloud migration , 2016, Computing.

[22]  Kasun Indrasiri,et al.  Microservices for the Enterprise , 2018, Apress.

[23]  Theo Lynn,et al.  Microservices migration patterns , 2018, Softw. Pract. Exp..

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

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

[26]  Nour Ali,et al.  A Systematic Mapping Study in Microservice Architecture , 2016, 2016 IEEE 9th International Conference on Service-Oriented Computing and Applications (SOCA).

[27]  Claus Pahl,et al.  Microservices: A Systematic Mapping Study , 2016, CLOSER.

[28]  Colin J. Fidge,et al.  Migrating Enterprise Legacy Source Code to Microservices: On Multitenancy, Statefulness, and Data Consistency , 2018, IEEE Software.

[29]  Tommi Mikkonen,et al.  Challenges When Moving from Monolith to Microservice Architecture , 2017, ICWE Workshops.

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

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

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

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

[34]  Olaf Zimmermann,et al.  Interface Representation Patterns: Crafting and Consuming Message-Based Remote APIs , 2017, EuroPLoP.

[35]  Kai Petersen,et al.  Systematic Mapping Studies in Software Engineering , 2008, EASE.

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

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

[38]  Gregor Hohpe,et al.  Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions , 2003 .

[39]  Olaf Zimmermann,et al.  Microservices tenets , 2017, Computer Science - Research and Development.