Abstract
Microservice-based applications can include hundreds of interacting software components. This makes their design, implementation, and operation complex, costly, and error-prone. While the availability of a description of the software architecture of microservice-based applications can help to analyse and maintain them, manually generating an architectural description of microservice-based applications is costly because of the number of services and of service interactions. In this paper, we propose a solution for automatically mining the architecture of a microservice-based application starting from its deployment in Kubernetes, and for generating the corresponding architecture description with the OASIS standard TOSCA. Our solution extracts information both statically, from the manifest files specifying the application deployment in Kubernetes, and dynamically, by deploying and monitoring the application on Kubernetes. We also present a first proof-of-concept implementation of our solution.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Similar content being viewed by others
Notes
- 1.
Following the guidelines in Kubernetes documentation [10], our solution assumes each pod in a Kubernetes deployment to form a single cohesive unit of service, i.e., that a single container is deployed to host a service, integration component, or data store. We hence abstract from “sidecar" containers accompanying such container in a pod (e.g., for monitoring and logging purposes), since they are not to be included architectural representation of a microservice-based application.
- 2.
https://github.com/di-unipi-socc/microMiner (MIT License).
References
Instana. https://www.instana.com
Kiali. https://kiali.io
KubeView. https://github.com/benc-uk/kubeview
Online Boutique: A Cloud-native Microservices Demo Application. https://github.com/GoogleCloudPlatform/microservices-demo
Robot Shop: Sample Microservice Application. https://github.com/instana/robot-shop
Sock Shop: A Microservices Demo Application. https://microservices-demo.github.io
WeaveScope. https://www.weave.works/oss/scope
WireShark. https://www.wireshark.org
TOSCA Simple Profile in YAML, version 1.2. OASIS Standard (2019)
Kubernetes documentation (2020). https://kubernetes.io/docs
Alshuqayran, N., Ali, N., Evans, R.: Towards micro service architecture recovery: an empirical study. In: 2018 IEEE International Conference on Software Architecture (ICSA), pp. 47–4709 (2018)
Brogi, A., Neri, D., Soldani, J.: Freshening the air in microservices: resolving architectural smells via refactoring. In: Yangui, S., et al. (eds.) ICSOC 2019. LNCS, vol. 12019, pp. 17–29. Springer, Cham (2020). https://doi.org/10.1007/978-3-030-45989-5_2
Fowler, M., Lewis, J.: Microservices (2014). http://martinfowler.com/articles/microservices.html. Accessed 7 Aug 2020
Granchelli, G., Cardarelli, M., Di Francesco, P., Malavolta, I., Iovino, L., Di Salle, A.: MicroART: a software architecture recovery tool for maintaining microservice-based systems. In: 2017 IEEE International Conference on Software Architecture Workshops (ICSAW), pp. 298–302 (2017)
Granchelli, G., Cardarelli, M., Di Francesco, P., Malavolta, I., Iovino, L., Di Salle, A.: Towards recovering the software architecture of microservice-based systems. In: 2017 IEEE International Conference on Software Architecture Workshops (ICSAW), pp. 46–53 (2017)
Hohpe, G., Woolf, B.: Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions. Addison-Wesley, Boston (2003)
Korab, J.: Understanding Message Brokers. O’Reilly Media Inc., Sebastopol (2017)
Ma, S., Fan, C., Chuang, Y., Lee, W., Lee, S., Hsueh, N.: Using service dependency graph to analyze and test microservices. In: 2018 IEEE 42nd Annual Computer Software and Applications Conference (COMPSAC), vol. 02, pp. 81–86 (2018)
Neri, D., Soldani, J., Zimmermann, O., Brogi, A.: Design principles, architectural smells and refactorings for microservices: a multivocal review. SICS Softw. Inensiv. Cyber Phys. Syst. 35, 3–15 (2020). https://doi.org/10.1007/s00450-019-00407-8
Rademacher, F., Sachweh, S., Zündorf, A.: A modeling method for systematic architecture reconstruction of microservice-based software systems. In: Nurcan, S., Reinhartz-Berger, I., Soffer, P., Zdravkovic, J. (eds.) BPMDS/EMMSAD -2020. LNBIP, vol. 387, pp. 311–326. Springer, Cham (2020). https://doi.org/10.1007/978-3-030-49418-6_21
Richardson, C.: Microservices Patterns. Manning Publications, Shelter Island (2018)
Soldani, J., Tamburri, D.A., Van Den Heuvel, W.J.: The pains and gains of microservices: a systematic grey literature review. J. Syst. Softw. 146, 215–232 (2018)
Zimmermann, O.: Microservices tenets. Comput. Sci. Res. Develop. 32(3–4), 301–310 (2016)
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2021 Springer Nature Switzerland AG
About this paper
Cite this paper
Muntoni, G., Soldani, J., Brogi, A. (2021). Mining the Architecture of Microservice-Based Applications from their Kubernetes Deployment. In: Zirpins, C., et al. Advances in Service-Oriented and Cloud Computing. ESOCC 2020. Communications in Computer and Information Science, vol 1360. Springer, Cham. https://doi.org/10.1007/978-3-030-71906-7_9
Download citation
DOI: https://doi.org/10.1007/978-3-030-71906-7_9
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-030-71905-0
Online ISBN: 978-3-030-71906-7
eBook Packages: Computer ScienceComputer Science (R0)