Abstract
The adoption of microservice-based architectures is becoming common practice for enterprise applications. Checking whether an application adheres to the main design principles of microservices, and —if not— understanding how to refactor it, are two key issues in that context. In this paper, we present a methodology to systematically identify the architectural smells that possibly violate the main design principles of microservices, and to select suitable architectural refactorings to resolve them. We also present a prototype implementing the methodology, based on a novel representation of microservices in TOSCA.
Keywords
This is a preview of subscription content, log in via an institution.
Buying options
Tax calculation will be finalised at checkout
Purchases are for personal use only
Learn about institutional subscriptionsNotes
- 1.
- 2.
Multiple relations from component x to component y indicate that x interacts with y in different ways (e.g., directly in one case, via a circuit breaker in another case).
- 3.
References
Arcelli, D., Cortellessa, V., Pompeo, D.D.: Automating performance antipattern detection and software refactoring in UML models. In: 2019 International Conference on Software Analysis, Evolution and Reengineering, pp. 639–643. IEEE (2019)
Balalaie, A., Heydarnoori, A., Jamshidi, P., Tamburri, D.A., Lynn, T.: Microservices migration patterns. Softw. Pract. Exper. 48(11), 2019–2042 (2018)
Brogi, A., Neri, D., Soldani, J., Zimmermann, O.: Design principles, architectural smells and refactorings for microservices: a multivocal review. Softw. Intensive Cyber Phys. Syst. (2019). https://doi.org/10.1007/s00450-019-00407-8
Camilli, M., Bellettini, C., Capra, L., Monga, M.: A formal framework for specifying and verifying microservices based process flows. In: Cerone, A., Roveri, M. (eds.) SEFM 2017. LNCS, vol. 10729, pp. 187–202. Springer, Cham (2018). https://doi.org/10.1007/978-3-319-74781-1_14
Cardarelli, M., Iovino, L., Di Francesco, P., Di Salle, A., Malavolta, I., Lago, P.: An extensible data-driven approach for evaluating the quality of microservice architectures. In: 34th Symposium on Applied Computing, pp. 1225–1234. ACM (2019)
Carrasco, A., Bladel, B., Demeyer, S.: Migrating towards microservices: migration and architecture smells. In: 2nd International Workshop on Refactoring, pp. 1–6. ACM (2018)
Cockroft, A.: Spigo. https://github.com/adrianco/spigo
Fontana, F.A., Pigazzini, I., Roveda, R., Tamburri, D., Zanoni, M., Nitto, E.D.: Arcan: a tool for architectural smells detection. In: 2017 International Conference on Software Architecture Workshops, pp. 282–285. IEEE (2017)
Garcia, J., Popescu, D., Edwards, G., Medvidovic, N.: Identifying architectural bad smells. In: 13th European Conference on Software Maintenance and Reengineering, pp. 255–258. IEEE (2009)
Granchelli, G., Cardarelli, M., Di Francesco, P., Malavolta, I., Iovino, L., Salle, A.D.: MicroART: a software architecture recovery tool for maintaining microservice-based systems. In: 2017 International Conference on Software Architecture Workshops, pp. 298–302. IEEE (2017)
Guidi, C., Lanese, I., Mazzara, M., Montesi, F.: Microservices: a language-based approach. In: Mazzara, M., Meyer, B. (eds.) Present and Ulterior Software Engineering, pp. 217–225. Springer, Cham (2017). https://doi.org/10.1007/978-3-319-67425-4_13
Haselböck, S., Weinreich, R., Buchgeher, G.: Decision models for microservices: design areas, stakeholders, use cases, and requirements. In: Lopes, A., de Lemos, R. (eds.) ECSA 2017. LNCS, vol. 10475, pp. 155–170. Springer, Cham (2017). https://doi.org/10.1007/978-3-319-65831-5_11
Hassan, S., Bahsoon, R.: Microservices and their design trade-offs: a self-adaptive roadmap. In: 2016 International Conference on Services Computing, pp. 813–818. IEEE (2016)
Hassan, S., Ali, N., Bahsoon, R.: Microservice ambients: an architectural meta-modelling approach for microservice granularity. In: 2017 International Conference on Software Architecture, pp. 1–10. IEEE (2017)
Headway Software Technologies: Structure 101. https://structure101.com
Hohpe, G., Woolf, B.: Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions. Addison-Wesley, Boston (2003)
Indrasiri, K.: Microservices in practice: from architecture to deployment. https://dzone.com/articles/microservices-in-practice-1
Jamshidi, P., Pahl, C., Mendonca, N., Lewis, J., Tilkov, S.: Microservices: the journey so far and challenges ahead. IEEE Softw. 35(3), 24–35 (2018)
Lewis, J., Fowler, M.: Microservices. https://www.martinfowler.com/articles/microservices.html
Ma, S., Fan, C., Chuang, Y., Lee, W., Lee, S., Hsueh, N.: Using service dependency graph to analyze and test microservices. In: 42nd Annual Computer Software and Applications Conference, vol. 02, pp. 81–86. IEEE (2018)
Mahlen, P.: Modelling microservices at Spotify. In: jFokus Developer Conference (2016)
Newman, S.: Building Microservices, 1st edn. O’Reilly Media Inc., Newton (2015)
OASIS: TOSCA Simple Profile in YAML Version 1.2 (2018)
Richardson, C.: Microservices Patterns, 1st edn. Manning Publications, New York (2018)
Sanchez, A., Barbosa, L.S., Madeira, A.: Modelling and verifying smell-free architectures with the Archery language. In: Canal, C., Idani, A. (eds.) SEFM 2014. LNCS, vol. 8938, pp. 147–163. Springer, Cham (2015). https://doi.org/10.1007/978-3-319-15201-1_10
Savchenko, D., Radchenko, G., Taipale, O.: Microservices validation: mjolnirr platform case study. In: 38th International Convention on Information and Communication Technology, Electronics and Microelectronics, pp. 235–240. IEEE (2015)
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)
Taibi, D., Lenarduzzi, V.: On the definition of microservice bad smells. IEEE Softw. 35(3), 56–62 (2018)
Terzić, B., Dimitrieski, V., Kordić, S., Milosavljević, G., Luković, I.: Development and evaluation of microbuilder: a model-driven tool for the specification of rest microservice software architectures. Enterp. Inf. Syst. 12(8–9), 1034–1057 (2018)
Tessier, J.: DependencyFinder. https://github.com/jeantessier/dependency-finder
Vidal, S., Vazquez, H., Diaz-Pace, J.A., Marcos, C., Garcia, A., Oizumi, W.: JSpIRIT: a flexible tool for the analysis of code smells. In: 34th International Conference of the Chilean Computer Science Society, pp. 1–6. IEEE (2015)
Zimmermann, O.: Microservices tenets. Comp. Sci. Res. Dev. 32(3–4), 301–310 (2017)
Acknowledgements
Work partly funded by the projects AMaCA (POR-FSE, Regione Toscana) and DECLware (PRA_2018_66, University of Pisa).
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2020 Springer Nature Switzerland AG
About this paper
Cite this paper
Brogi, A., Neri, D., Soldani, J. (2020). Freshening the Air in Microservices: Resolving Architectural Smells via Refactoring. In: Yangui, S., et al. Service-Oriented Computing – ICSOC 2019 Workshops. ICSOC 2019. Lecture Notes in Computer Science(), vol 12019. Springer, Cham. https://doi.org/10.1007/978-3-030-45989-5_2
Download citation
DOI: https://doi.org/10.1007/978-3-030-45989-5_2
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-030-45988-8
Online ISBN: 978-3-030-45989-5
eBook Packages: Computer ScienceComputer Science (R0)