Over the last decade, software organizations have increasingly adopted microservices to effectively deal with evolving software systems, frequent demands for new features, and changing technologies. However, microservices are not a silver bullet; their success depends on the specific context and needs of each organization. Therefore, tracking the evolution of architectural complexity indicators is crucial for effective architectural governance and decision-making. In this paper, we explore the relationship between architectural complexity indicators and their evolution, specifically declared dependencies, API endpoints, inter-service communications, size, and technical debt. We used the static source code analysis methods along with SonarQube to measure architectural complexity, collecting data on all indicators over the past two and a half years. Our findings indicate that architectural complexity consistently grows, even within microservices. Most importantly, these indicators co-evolve, making the overall architecture more complicated than expected. Additionally, all complexity indicators grow rapidly when services are small and still evolving. The insights gained from this study can assist organizations in effectively managing their microservices, highlighting when they might be most prone to architectural degradation.

错误:搜索内容不能为空,请输入英文关键词
错误:关键词超出字数限制,请精简
高级检索

Temporal Evolution of Architectural Complexity and Technical Debt in Microservices: An Exploratory Case Study

  • Bhuwan Paudel,
  • Javier Gonzalez-Huerta,
  • Ehsan Zabardast

摘要

Over the last decade, software organizations have increasingly adopted microservices to effectively deal with evolving software systems, frequent demands for new features, and changing technologies. However, microservices are not a silver bullet; their success depends on the specific context and needs of each organization. Therefore, tracking the evolution of architectural complexity indicators is crucial for effective architectural governance and decision-making. In this paper, we explore the relationship between architectural complexity indicators and their evolution, specifically declared dependencies, API endpoints, inter-service communications, size, and technical debt. We used the static source code analysis methods along with SonarQube to measure architectural complexity, collecting data on all indicators over the past two and a half years. Our findings indicate that architectural complexity consistently grows, even within microservices. Most importantly, these indicators co-evolve, making the overall architecture more complicated than expected. Additionally, all complexity indicators grow rapidly when services are small and still evolving. The insights gained from this study can assist organizations in effectively managing their microservices, highlighting when they might be most prone to architectural degradation.