The increasing adoption of microservices architecture in software development, driven by the need for flexible and scalable systems, has made it imperative to develop a strategy for monitoring, verifying, and validating the system’s overall health at various levels, including architecture, design, and source code. Unfortunately, as software evolves, it becomes susceptible to recurrent poor solutions to problems that can negatively impact the system’s health, also known as antipatterns. Cataloged techniques for detecting antipatterns in diverse architectural models employ different approaches, which involve both static analysis of code and environment, as well as dynamic analysis of data collected during execution. However, detecting antipatterns in an execution environment, particularly in the context of microservices, becomes challenging due to the architecture’s inherent distributed nature and operational complexity, which present several difficulties in detecting antipatterns related to system visibility, communication, scope recognition, performance, and other challenges inherent to microservices. This work proposes an approach to detect primary runtime antipatterns, including four different strategies, and evaluates its effectiveness by applying it to a real-life open-source microservice application.
Braz et al. (Fri,) studied this question.