Abstract
Microservices have gained popularity for isolating service functionality and mitigating issues such as architectural erosion and technical debt. However, their decentralized nature and rapid development often obscure the holistic view of the system and lead developers to lose sight of the overarching architecture. Our work addresses this challenge by proposing a novel approach to track and assess the evolution of microservice architectures through static source code analysis. We combine source code repository mining techniques with architectural reconstruction to measure various metrics throughout a system’s development history. Our approach uses a formal API-based decomposition model that can easily be adapted for different scenarios by choosing various architectural metrics. We validated our method’s scalability and robustness through a case study on an extensive open-source microservice reference system with more than 40 individual services written in different languages and more than 400 commits. Our research provides software architects with a powerful tool to identify and monitor problematic architectural trends before they become imminent threats, enabling the evolution of microservice-based systems while maintaining architectural coherence and integrity.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Similar content being viewed by others
Data Availability Statement
We offer the whole source code and data of our study in a data set published on Zenodo: https://doi.org/10.5281/zenodo.10961768.
Notes
- 1.
- 2.
- 3.
see, for instance, this curated list of various microservice open source systems: https://github.com/davidetaibi/Microservices_Project_List.
References
Godfrey, M.W., German, D.M.: The past, present, and future of software evolution. In: 2008 Frontiers of Software Maintenance, pp. 129–138. IEEE (2008)
Whiting, E., Andrews, S.: Drift and erosion in software architecture: summary and prevention strategies. In: Proceedings of the 2020 the 4th International Conference on Information System and Data Mining, pp. 132–138 (2020)
Baum, D., Dietrich, J., Anslow, C., Müller, R.: Visualizing design erosion: how big balls of mud are made. In: 2018 IEEE Working Conference on Software Visualization (VISSOFT), pp. 122–126. IEEE (2018)
Rios, N., Spínola, R.O., Mendonça, M., Seaman, C.: The most common causes and effects of technical debt: first results from a global family of industrial surveys. In: Proceedings of the 12th ACM/IEEE International Symposium on Empirical Software Engineering and Measurement, pp. 1–10 (2018)
De Silva, L., Balasubramaniam, D.: Controlling software architecture erosion: a survey. J. Syst. Softw. 85(1), 132–151 (2012)
Dragoni, N., Giallorenzo, S., Lafuente, A.L., Mazzara, M., Montesi, F., Mustafin, R., Safina, L.: Microservices: yesterday, today, and tomorrow. In: Present and Ulterior Software Engineering, pp. 195–216. Springer, Cham (2017). https://doi.org/10.1007/978-3-319-67425-4_12
Newman, S.: Building Microservices. O’Reilly Media, Inc., Newton (2021)
Bogner, J., Fritzsch, J., Wagner, S., Zimmermann, A.: Limiting technical debt with maintainability assurance: an industry survey on used techniques and differences with service-and microservice-based systems. In: Proceedings of the 2018 International Conference on Technical Debt, pp. 125–133 (2018)
Bogner, J., Wagner, S., Zimmermann, A.: Automatically measuring the maintainability of service-and microservice-based systems: a literature review. In: Proceedings of the 27th International Workshop on Software Measurement and 12th International Conference on Software Process and Product Measurement, pp. 107–115 (2017)
Zdun, U., Navarro, E., Leymann, F.: Ensuring and assessing architecture conformance to microservice decomposition patterns. In: Maximilien, M., Vallecillo, A., Wang, J., Oriol, M. (eds.) ICSOC 2017. LNCS, vol. 10601, pp. 411–429. Springer, Cham (2017). https://doi.org/10.1007/978-3-319-69035-3_29
Walker, A., Das, D., Cerny, T.: Automated code-smell detection in microservices through static analysis: a case study. Appl. Sci. 10(21), 7800 (2020)
Ma, S.-P., Fan, C.-Y., Chuang, Y., Liu, I.-H., Lan, C.-W.: Graph-based and scenario-driven microservice analysis, retrieval, and testing. Futur. Gener. Comput. Syst. 100, 724–735 (2019)
de Toledo, S.S., Martini, A., Przybyszewska, A., Sjøberg, D.I.: Architectural technical debt in microservices: a case study in a large company. In: 2019 IEEE/ACM International Conference on Technical Debt, pp. 78–87. IEEE (2019)
Ducasse, S., Pollet, D.: Software architecture reconstruction: a process-oriented taxonomy. IEEE Trans. Softw. Eng. 35(4), 573–591 (2009)
Cerny, T., Abdelfattah, A.S., Bushong, V., Al Maruf, A., Taibi, D.: Microservice architecture reconstruction and visualization techniques: a review. In: 2022 IEEE International Conference on Service-Oriented System Engineering (SOSE), pp. 39–48. IEEE (2022)
Bushong, V., Das, D., Al Maruf, A., Cerny, T.: Using static analysis to address microservice architecture reconstruction. In: 2021 36th IEEE/ACM International Conference on Automated Software Engineering (ASE), pp. 1199–1201. IEEE (2021)
Bushong, V., Das, D., Cernỳ, T.: Reconstructing the holistic architecture of microservice systems using static analysis. In: CLOSER, pp. 149–157 (2022)
Barnes, J.M., Garlan, D., Schmerl, B.: Evolution styles: foundations and models for software architecture evolution. Softw. Syst. Model. 13, 649–678 (2014)
Moreira, M.G., De França, B.B.N.: Analysis of microservice evolution using cohesion metrics. In: Proceedings of the 16th Brazilian Symposium on Software Components, Architectures, and Reuse, pp. 40–49 (2022)
Tizzei, L.P., Azevedo, L., Soares, E., Thiago, R., Costa, R.: On the maintenance of a scientific application based on microservices: an experience report. In: 2020 IEEE International Conference on Web Services (ICWS), pp. 102–109. IEEE (2020)
Sampaio, A.R., et al.: Supporting microservice evolution. In: 2017 IEEE International Conference on Software Maintenance and Evolution (ICSME), pp. 539–543. IEEE (2017)
He, X., Shao, Z., Wang, T., Shi, H., Chen, Y., Wang, Z.: Predicting effect and cost of microservice system evolution using graph neural network. In: Monti, F., Rinderle-Ma, S., Ruiz Cortes, A., Zheng, Z., Mecella, M. (eds.) International Conference on Service-Oriented Computing, pp. 103–118. Springer, Heidelberg (2023). https://doi.org/10.1007/978-3-031-48421-6_8
Stocker, M., Zimmermann, O.: From code refactoring to API refactoring: agile service design and evolution. In: Barzen, J. (ed.) SummerSOC 2021. CCIS, vol. 1429, pp. 174–193. Springer, Cham (2021). https://doi.org/10.1007/978-3-030-87568-8_11
Lercher, A., Glock, J., Macho, C., Pinzger, M.: Microservice api evolution in practice: a study on strategies and challenges. arXiv:2311.08175 (2023)
Assunção, W.K., Krüger, J., Mosser, S., Selaoui, S.: How do microservices evolve? an empirical analysis of changes in open-source microservice repositories. J. Syst. Softw. 204, 111788 (2023)
Heseding, F., Scheibel, W., Döllner, J.: Tooling for time-and space-efficient git repository mining. In: Proceedings of the 19th International Conference on Mining Software Repositories, pp. 413–417 (2022)
Kolassa, C., Riehle, D., Salim, M.A.: A model of the commit size distribution of open source. In: van Emde Boas, P., Groen, F.C.A., Italiano, G.F., Nawrocki, J., Sack, H. (eds.) SOFSEM 2013. LNCS, vol. 7741, pp. 52–66. Springer, Heidelberg (2013). https://doi.org/10.1007/978-3-642-35843-2_6
Rosik, J., Le Gear, A., Buckley, J., Babar, M. A., Connolly, D.: Assessing architectural drift in commercial software development: a case study. Softw. Pract. Exp. 41(1), 63–86 (2011)
Ntentos, E.: Detector-based component model abstraction for microservice-based systems. Computing 103(11), 2521–2551 (2021)
Genfer, P., Zdun, U.: Identifying domain-based cyclic dependencies in microservice APIs using source code detectors. In: Biffl, S., Navarro, E., Löwe, W., Sirjani, M., Mirandola, R., Weyns, D. (eds.) ECSA 2021. LNCS, vol. 12857, pp. 207–222. Springer, Cham (2021). https://doi.org/10.1007/978-3-030-86044-8_15
Hirzalla, M., Cleland-Huang, J., Arsanjani, A.: A metrics suite for evaluating flexibility and complexity in service oriented architectures. In: Feuerlicht, G., Lamersdorf, W. (eds.) ICSOC 2008. LNCS, vol. 5472, pp. 41–52. Springer, Heidelberg (2009). https://doi.org/10.1007/978-3-642-01247-1_5
Ntentos, E., Zdun, U., Plakidas, K., Meixner, S., Geiger, S.: Assessing architecture conformance to coupling-related patterns and practices in microservices. In: Jansen, A., Malavolta, I., Muccini, H., Ozkaya, I., Zimmermann, O. (eds.) ECSA 2020. LNCS, vol. 12292, pp. 3–20. Springer, Cham (2020). https://doi.org/10.1007/978-3-030-58923-3_1
p Zhou, X., et al.: Benchmarking microservice systems for software engineering research. In: Proceedings of the 40th International Conference on Software Engineering: Companion Proceeedings, ser. ICSE 2018, pp. 323–324. Association for Computing Machinery, New York (2018). https://doi.org/10.1145/3183440.3194991
Li, B., Peng, X., Xiang, Q., Wang, H., Xie, T., Sun, J., Liu, X.: Enjoy your observability: an industrial survey of microservice tracing and analysis. Empir. Softw. Eng. 27, 1–28 (2022)
Zhang, C., et al.: Deeptralog: trace-log combined microservice anomaly detection through graph-based deep learning. In: Proceedings of the 44th International Conference on Software Engineering, pp. 623–634 (2022)
Acknowledgments
This work was supported by: FWF (Austrian Science Fund) projects API-ACE: I 4268.
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2024 The Author(s), under exclusive license to Springer Nature Switzerland AG
About this paper
Cite this paper
Genfer, P., Zdun, U. (2024). Exploring Architectural Evolution in Microservice Systems Using Repository Mining Techniques and Static Code Analysis. In: Galster, M., Scandurra, P., Mikkonen, T., Oliveira Antonino, P., Nakagawa, E.Y., Navarro, E. (eds) Software Architecture. ECSA 2024. Lecture Notes in Computer Science, vol 14889. Springer, Cham. https://doi.org/10.1007/978-3-031-70797-1_10
Download citation
DOI: https://doi.org/10.1007/978-3-031-70797-1_10
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-031-70796-4
Online ISBN: 978-3-031-70797-1
eBook Packages: Computer ScienceComputer Science (R0)