Skip to main content

From Monolith to Microservices: A Classification of Refactoring Approaches

  • Conference paper
  • First Online:
Software Engineering Aspects of Continuous Development and New Paradigms of Software Production and Deployment (DEVOPS 2018)

Abstract

While the recently emerged Microservices architectural style is widely discussed in literature, it is difficult to find clear guidance on the process of refactoring legacy applications. The importance of the topic is underpinned by high costs and effort of a refactoring process which has several other implications, e.g. overall processes (DevOps) and team structure. Software architects facing this challenge are in need of selecting an appropriate strategy and refactoring technique. One of the most discussed aspects in this context is finding the right service granularity to fully leverage the advantages of a Microservices architecture. This study first discusses the notion of architectural refactoring and subsequently compares 10 existing refactoring approaches recently proposed in academic literature. The approaches are classified by the underlying decomposition technique and visually presented in the form of a decision guide for quick reference. The review yielded a variety of strategies to break down a monolithic application into independent services. With one exception, most approaches are only applicable under certain conditions. Further concerns are the significant amount of input data some approaches require as well as limited or prototypical tool support.

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

References

  1. Ahmadvand, M., Ibrahim, A.: Requirements reconciliation for scalable and secure microservice (de)composition. In: Proceedings - 2016 IEEE 24th International Requirements Engineering Conference Workshops, REW 2016, pp. 68–73 (2016)

    Google Scholar 

  2. Amundsen, M., et al.: Microservice Architecture. O’Reilly, California (2016)

    Google Scholar 

  3. Balalaie, A., et al.: Microservices migration patterns. Softw. Pract. Exp. 48(11), 2019–2042 (2018)

    Google Scholar 

  4. Baresi, L., Garriga, M., De Renzis, A.: Microservices identification through interface analysis. In: De Paoli, F., Schulte, S., Broch Johnsen, E. (eds.) ESOCC 2017. LNCS, vol. 10465, pp. 19–33. Springer, Cham (2017). https://doi.org/10.1007/978-3-319-67262-5_2

    Chapter  Google Scholar 

  5. Bass, L., et al.: DevOps: A Software Architect’s Perspective. Addison-Wesley, Boston (2015)

    Google Scholar 

  6. Bogner, J., et al.: Analyzing the relevance of SOA patterns for microservice-based systems. In: Proceedings 10th Central European Workshop on Services and their Composition, March (2018)

    Google Scholar 

  7. Brereton, P., et al.: Lessons from applying the systematic literature review process within the software engineering domain. J. Syst. Softw. 80(4), 571–583 (2007)

    Article  Google Scholar 

  8. Brown, W., et al.: AntiPatterns: Refactoring Software, Architectures, and Projects in Crisis. Wiley, Hoboken (1998)

    Google Scholar 

  9. Chen, R., et al.: From monolith to microservices: a dataflow-driven approach. In: Proceedings Asia-Pacific Software Engineering Conference APSEC, December 2017, pp. 466–475 (2018)

    Google Scholar 

  10. Conway, M.: Conway’s Law. http://melconway.com/Home/Conways_Law.html. Accessed 01 Oct 2018

  11. Dietrich, J., et al.: On the detection of high-impact refactoring opportunities in programs. In: Proceedings of the Thirty-Fifth Australasian Computer Science Conference (ACSC), Melbourne (2012)

    Google Scholar 

  12. Escobar, D., et al.: Towards the understanding and evolution of monolithic applications as microservices. In: Proceedings of the 2016 42nd Latin American Computing Conference, CLEI (2016)

    Google Scholar 

  13. Evans, E.J.: Domain-Driven Design: Tackling Complexity in the Heart of Software. Addison Wesley, Boston (2003)

    Google Scholar 

  14. Feathers, M.: Working Effectively with Legacy Code. Prentice Hall, New Jersey (2004)

    Book  Google Scholar 

  15. Fowler, M., et al.: Refactoring: Improving the Design of Existing Code. Addison-Wesley Professional, Boston (1999)

    MATH  Google Scholar 

  16. Di Francesco, P., et al.: Research on architecting microservices: trends, focus, and potential for industrial adoption. In: Proceedings - 2017 IEEE International Conference on Software Architecture, ICSA 2017, pp. 21–30 (2017)

    Google Scholar 

  17. Gysel, M., Kölbener, L., Giersche, W., Zimmermann, O.: Service cutter: a systematic approach to service decomposition. In: Aiello, M., Johnsen, E.B., Dustdar, S., Georgievski, I. (eds.) ESOCC 2016. LNCS, vol. 9846, pp. 185–200. Springer, Cham (2016). https://doi.org/10.1007/978-3-319-44482-6_12

    Chapter  Google Scholar 

  18. Hassan, S., et al.: Microservice ambients: an architectural meta-modelling approach for microservice granularity. In: Proceedings - 2017 IEEE International Conference on Software Architecture, ICSA, pp. 1–10 (2017)

    Google Scholar 

  19. Kitchenham, B., Charters, S.: Performing systematic literature reviews in software engineering (2007)

    Google Scholar 

  20. Klock, S., et al.: Workload-based clustering of coherent feature sets in microservice architectures. In: Proceedings - 2017 IEEE International Conference on Software Architecture, ICSA, pp. 11–20 (2017)

    Google Scholar 

  21. Klose, K., et al.: Identification of services - a stakeholder-based approach to SOA development and its application in the area of production planning. In: ECIS 2007, pp. 1802–1814 (2007)

    Google Scholar 

  22. Krause, L.: Microservices: Patterns and Applications (2015)

    Google Scholar 

  23. Kwan, I., et al.: Conway’s Law Revisited: The Evidence For a Task-based Perspective. IEEE Softw. 29, 1 (2011)

    Google Scholar 

  24. Levcovitz, A., et al.: Towards a technique for extracting microservices from monolithic enterprise systems. In: 3rd Brazilian Workshop on Software Visualization, Evolution and Maintenance (VEM), pp. 97–104 (2015)

    Google Scholar 

  25. Lewis, J., Fowler, M.: Microservices - a definition of this new architectural term. http://martinfowler.com/articles/microservices.html. Accessed 01 Oct 2018

  26. Lilienthal, C.: Langlebige Software-Architekturen: Technische Schulden Analysieren, begrenzen und abbauen. dpunkt.verlag (2017)

    Google Scholar 

  27. Mazlami, G., et al.: Extraction of microservices from monolithic software architectures. In: 2017 IEEE International Conference on Web Services (ICWS), pp. 524–531 (2017)

    Google Scholar 

  28. Mustafa, O., Gómez, J.M.: Optimizing economics of microservices by planning for granularity level. Experience Report (2017)

    Google Scholar 

  29. Newman, S.: Building Microservices. O’Reilly, California (2015)

    Google Scholar 

  30. Opdyke, W.F., Johnson, R.E.: Creating abstract superclasses by refactoring of stract classes finding matrix, February, pp. 66–73 (1993)

    Google Scholar 

  31. Pahl, C., Jamshidi, P.: Microservices: a systematic mapping study. In: Proceedings of the 6th International Conference on Cloud Computing and Services Science, pp. 137–146 (2016)

    Google Scholar 

  32. Petersen, K., et al.: Guidelines for conducting systematic mapping studies in software engineering: an update. Inf. Softw. Technol. 64, 1–18 (2015)

    Article  Google Scholar 

  33. Pirkelbauer, P., Dechev, D., Stroustrup, B.: Source code rejuvenation is not refactoring. In: van Leeuwen, J., Muscholl, A., Peleg, D., Pokorný, J., Rumpe, B. (eds.) SOFSEM 2010. LNCS, vol. 5901, pp. 639–650. Springer, Heidelberg (2010). https://doi.org/10.1007/978-3-642-11266-9_53

    Chapter  Google Scholar 

  34. Procaccianti, G., et al.: Towards a MicroServices Architecture for Clouds. VU University Amsterdam (2016)

    Google Scholar 

  35. Rademacher, F., et al.: Differences between model-driven development of service-oriented and microservice architecture (SOA vs. MSA). In: 2017 IEEE International Conference on Software Architecture Workshops (ICSAW), pp. 38–45 (2017)

    Google Scholar 

  36. Richardson, C.: Microservice architecture. http://microservices.io/patterns. Accessed 01 Oct 2018

  37. Richardson, C.: Microservice Patterns. Manning, New York (2017)

    Google Scholar 

  38. De Santana, A.M., et al.: Relationships between communication structure and software architecture: an empirical investigation of the Conway’s Law at the Federal University of Pernambuco. In: Proceedings - 2013 3rd International Work. Replication Empirical Software Engineering Research, pp. 34–42 (2013)

    Google Scholar 

  39. Sneed, H.M., Seidl, R.: Softwareevolution - Erhaltung und Fortschreibung bestehender Softwaresysteme. dpunkt.verlag (2013)

    Google Scholar 

  40. Wohlin, C.: Guidelines for snowballing in systematic literature studies and a replication in software engineering. In: Proceedings 18th International Conference Evaluation and Assessment in Software Engineering - EASE 2014, pp. 1–10 (2014)

    Google Scholar 

  41. Zimmermann, O.: Architectural refactoring: a task-centric view on software evolution. IEEE Softw. 32(2), 26–29 (2015)

    Article  Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Jonas Fritzsch .

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2019 Springer Nature Switzerland AG

About this paper

Check for updates. Verify currency and authenticity via CrossMark

Cite this paper

Fritzsch, J., Bogner, J., Zimmermann, A., Wagner, S. (2019). From Monolith to Microservices: A Classification of Refactoring Approaches. In: Bruel, JM., Mazzara, M., Meyer, B. (eds) Software Engineering Aspects of Continuous Development and New Paradigms of Software Production and Deployment. DEVOPS 2018. Lecture Notes in Computer Science(), vol 11350. Springer, Cham. https://doi.org/10.1007/978-3-030-06019-0_10

Download citation

  • DOI: https://doi.org/10.1007/978-3-030-06019-0_10

  • Published:

  • Publisher Name: Springer, Cham

  • Print ISBN: 978-3-030-06018-3

  • Online ISBN: 978-3-030-06019-0

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics