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.
Buying options
Tax calculation will be finalised at checkout
Purchases are for personal use only
Learn about institutional subscriptionsReferences
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)
Amundsen, M., et al.: Microservice Architecture. O’Reilly, California (2016)
Balalaie, A., et al.: Microservices migration patterns. Softw. Pract. Exp. 48(11), 2019–2042 (2018)
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
Bass, L., et al.: DevOps: A Software Architect’s Perspective. Addison-Wesley, Boston (2015)
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)
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)
Brown, W., et al.: AntiPatterns: Refactoring Software, Architectures, and Projects in Crisis. Wiley, Hoboken (1998)
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)
Conway, M.: Conway’s Law. http://melconway.com/Home/Conways_Law.html. Accessed 01 Oct 2018
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)
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)
Evans, E.J.: Domain-Driven Design: Tackling Complexity in the Heart of Software. Addison Wesley, Boston (2003)
Feathers, M.: Working Effectively with Legacy Code. Prentice Hall, New Jersey (2004)
Fowler, M., et al.: Refactoring: Improving the Design of Existing Code. Addison-Wesley Professional, Boston (1999)
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)
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
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)
Kitchenham, B., Charters, S.: Performing systematic literature reviews in software engineering (2007)
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)
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)
Krause, L.: Microservices: Patterns and Applications (2015)
Kwan, I., et al.: Conway’s Law Revisited: The Evidence For a Task-based Perspective. IEEE Softw. 29, 1 (2011)
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)
Lewis, J., Fowler, M.: Microservices - a definition of this new architectural term. http://martinfowler.com/articles/microservices.html. Accessed 01 Oct 2018
Lilienthal, C.: Langlebige Software-Architekturen: Technische Schulden Analysieren, begrenzen und abbauen. dpunkt.verlag (2017)
Mazlami, G., et al.: Extraction of microservices from monolithic software architectures. In: 2017 IEEE International Conference on Web Services (ICWS), pp. 524–531 (2017)
Mustafa, O., Gómez, J.M.: Optimizing economics of microservices by planning for granularity level. Experience Report (2017)
Newman, S.: Building Microservices. O’Reilly, California (2015)
Opdyke, W.F., Johnson, R.E.: Creating abstract superclasses by refactoring of stract classes finding matrix, February, pp. 66–73 (1993)
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)
Petersen, K., et al.: Guidelines for conducting systematic mapping studies in software engineering: an update. Inf. Softw. Technol. 64, 1–18 (2015)
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
Procaccianti, G., et al.: Towards a MicroServices Architecture for Clouds. VU University Amsterdam (2016)
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)
Richardson, C.: Microservice architecture. http://microservices.io/patterns. Accessed 01 Oct 2018
Richardson, C.: Microservice Patterns. Manning, New York (2017)
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)
Sneed, H.M., Seidl, R.: Softwareevolution - Erhaltung und Fortschreibung bestehender Softwaresysteme. dpunkt.verlag (2013)
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)
Zimmermann, O.: Architectural refactoring: a task-centric view on software evolution. IEEE Softw. 32(2), 26–29 (2015)
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2019 Springer Nature Switzerland AG
About this paper
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)