Towards Microservice Smells Detection

With the adoption of microservices architectural styles, practitioners started noticing increasing pitfalls in managing and maintaining such architectures, with the risk of introducing architectural debt. Previous studies identified different microservice smells (also named anti-patterns) that harm microservices architectures. However, according to our knowledge, there are no tools that can automatically detect microservice smells, so their identification is left to the experience of the developer. In this paper, we extend an existing tool developed for the detection of architectural smells to explore microservices architecture through the detection of three microservice smells: Cyclic Dependencies, Hard-Coded Endpoints, and Shared Persistence. We detected the smells on five open-source projects implemented with microservices and manually validated the precision of the detection results. This work aims to open new perspectives on facing and studying architectural debt in the field of microservices architectures.

[1]  Francesca Arcelli Fontana,et al.  Automatic Detection of Instability Architectural Smells , 2016, 2016 IEEE International Conference on Software Maintenance and Evolution (ICSME).

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

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

[4]  Claus Pahl,et al.  Microservices Anti Patterns: A Taxonomy , 2019, Microservices, Science and Engineering.

[5]  O. Zimmermann,et al.  Introduction to Microservice API Patterns (MAP) , 2019, Microservices.

[6]  Davide Taibi,et al.  Does Migrate a Monolithic System to Microservices Decreases the Technical Debt? , 2019, ArXiv.

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

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

[9]  Davide Taibi,et al.  Architectural Smells Detected by Tools: a Catalogue Proposal , 2019, 2019 IEEE/ACM International Conference on Technical Debt (TechDebt).

[10]  Francesca Arcelli Fontana,et al.  Arcan: A Tool for Architectural Smells Detection , 2017, 2017 IEEE International Conference on Software Architecture Workshops (ICSAW).

[11]  Rainer Weinreich,et al.  An Approach to Extract the Architecture of Microservice-Based Software Systems , 2018, 2018 IEEE Symposium on Service-Oriented System Engineering (SOSE).

[12]  Valentina Lenarduzzi,et al.  Does migrating a monolithic system to microservices decrease the technical debt? , 2019, J. Syst. Softw..

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

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

[15]  Hernán Astudillo,et al.  Actual Use of Architectural Patterns in Microservices-Based Open Source Projects , 2018, 2018 25th Asia-Pacific Software Engineering Conference (APSEC).

[16]  Davide Taibi,et al.  MVP Explained: A Systematic Mapping Study on the Definitions of Minimal Viable Product , 2016, 2016 42th Euromicro Conference on Software Engineering and Advanced Applications (SEAA).

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

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

[19]  Bertrand Meyer,et al.  Software Engineering Aspects of Continuous Development and New Paradigms of Software Production and Deployment , 2018, Lecture Notes in Computer Science.

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

[21]  Mark Richards,et al.  Microservices AntiPatterns and Pitfalls , 2016 .