Skip to main content

Freshening the Air in Microservices: Resolving Architectural Smells via Refactoring

  • Conference paper
  • First Online:
Service-Oriented Computing – ICSOC 2019 Workshops (ICSOC 2019)

Part of the book series: Lecture Notes in Computer Science ((LNPSE,volume 12019))

Included in the following conference series:

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.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 39.99
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Notes

  1. 1.

    https://di-unipi-socc.github.io/microTOSCA/microTOSCA.yml.

  2. 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. 3.

    https://github.com/di-unipi-socc/microFreshener.

References

  1. 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)

    Google Scholar 

  2. Balalaie, A., Heydarnoori, A., Jamshidi, P., Tamburri, D.A., Lynn, T.: Microservices migration patterns. Softw. Pract. Exper. 48(11), 2019–2042 (2018)

    Google Scholar 

  3. 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

  4. 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

    Chapter  Google Scholar 

  5. 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)

    Google Scholar 

  6. Carrasco, A., Bladel, B., Demeyer, S.: Migrating towards microservices: migration and architecture smells. In: 2nd International Workshop on Refactoring, pp. 1–6. ACM (2018)

    Google Scholar 

  7. Cockroft, A.: Spigo. https://github.com/adrianco/spigo

  8. 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)

    Google Scholar 

  9. 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)

    Google Scholar 

  10. 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)

    Google Scholar 

  11. 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

    Chapter  Google Scholar 

  12. 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

    Chapter  Google Scholar 

  13. 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)

    Google Scholar 

  14. 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)

    Google Scholar 

  15. Headway Software Technologies: Structure 101. https://structure101.com

  16. Hohpe, G., Woolf, B.: Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions. Addison-Wesley, Boston (2003)

    Google Scholar 

  17. Indrasiri, K.: Microservices in practice: from architecture to deployment. https://dzone.com/articles/microservices-in-practice-1

  18. 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)

    Article  Google Scholar 

  19. Lewis, J., Fowler, M.: Microservices. https://www.martinfowler.com/articles/microservices.html

  20. 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)

    Google Scholar 

  21. Mahlen, P.: Modelling microservices at Spotify. In: jFokus Developer Conference (2016)

    Google Scholar 

  22. Newman, S.: Building Microservices, 1st edn. O’Reilly Media Inc., Newton (2015)

    Google Scholar 

  23. OASIS: TOSCA Simple Profile in YAML Version 1.2 (2018)

    Google Scholar 

  24. Richardson, C.: Microservices Patterns, 1st edn. Manning Publications, New York (2018)

    Google Scholar 

  25. 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

    Chapter  Google Scholar 

  26. 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)

    Google Scholar 

  27. 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)

    Article  Google Scholar 

  28. Taibi, D., Lenarduzzi, V.: On the definition of microservice bad smells. IEEE Softw. 35(3), 56–62 (2018)

    Article  Google Scholar 

  29. 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)

    Article  Google Scholar 

  30. Tessier, J.: DependencyFinder. https://github.com/jeantessier/dependency-finder

  31. 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)

    Google Scholar 

  32. Zimmermann, O.: Microservices tenets. Comp. Sci. Res. Dev. 32(3–4), 301–310 (2017)

    Article  Google Scholar 

Download references

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

Authors

Corresponding author

Correspondence to Jacopo Soldani .

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2020 Springer Nature Switzerland AG

About this paper

Check for updates. Verify currency and authenticity via CrossMark

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)

Publish with us

Policies and ethics