{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,5,9]],"date-time":"2026-05-09T23:09:05Z","timestamp":1778368145779,"version":"3.51.4"},"publisher-location":"Cham","reference-count":48,"publisher":"Springer Nature Switzerland","isbn-type":[{"value":"9783032191533","type":"print"},{"value":"9783032191540","type":"electronic"}],"license":[{"start":{"date-parts":[[2026,1,1]],"date-time":"2026-01-01T00:00:00Z","timestamp":1767225600000},"content-version":"tdm","delay-in-days":0,"URL":"https:\/\/www.springernature.com\/gp\/researchers\/text-and-data-mining"},{"start":{"date-parts":[[2026,1,1]],"date-time":"2026-01-01T00:00:00Z","timestamp":1767225600000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/www.springernature.com\/gp\/researchers\/text-and-data-mining"}],"content-domain":{"domain":["link.springer.com"],"crossmark-restriction":false},"short-container-title":[],"published-print":{"date-parts":[[2026]]},"DOI":"10.1007\/978-3-032-19154-0_9","type":"book-chapter","created":{"date-parts":[[2026,5,9]],"date-time":"2026-05-09T22:16:26Z","timestamp":1778364986000},"page":"208-250","update-policy":"https:\/\/doi.org\/10.1007\/springer_crossmark_policy","source":"Crossref","is-referenced-by-count":0,"title":["Refactoring Towards Microservices: Preparing the\u00a0Ground for\u00a0Service Extraction"],"prefix":"10.1007","author":[{"ORCID":"https:\/\/orcid.org\/0009-0007-6097-3524","authenticated-orcid":false,"given":"Rita","family":"Peixoto","sequence":"first","affiliation":[]},{"ORCID":"https:\/\/orcid.org\/0000-0002-6653-1598","authenticated-orcid":false,"given":"Filipe F.","family":"Correia","sequence":"additional","affiliation":[]},{"ORCID":"https:\/\/orcid.org\/0000-0002-3980-0051","authenticated-orcid":false,"given":"Thatiane","family":"Rosa","sequence":"additional","affiliation":[]},{"ORCID":"https:\/\/orcid.org\/0000-0001-5555-3487","authenticated-orcid":false,"given":"Eduardo","family":"Guerra","sequence":"additional","affiliation":[]},{"ORCID":"https:\/\/orcid.org\/0000-0001-5746-4154","authenticated-orcid":false,"given":"Alfredo","family":"Goldman","sequence":"additional","affiliation":[]}],"member":"297","published-online":{"date-parts":[[2026,5,1]]},"reference":[{"key":"9_CR1","unstructured":"Cloud design patterns - Azure Architecture Center. https:\/\/learn.microsoft.com\/en-us\/azure\/architecture\/patterns\/. Accessed 29 Sept 2025"},{"key":"9_CR2","unstructured":"Abid, C., Alizadeh, V., Kessentini, M., Ferreira, T.D.N., Dig, D.: 30 years of software refactoring research: a systematic literature review. arXiv preprint arXiv:2007.02194 (2020)"},{"key":"9_CR3","doi-asserted-by":"publisher","unstructured":"Albuquerque, C., Correia, F.F.: Deployment tracking and exception tracking: monitoring design patterns for cloud-native applications. In: Proceedings of the 28th European Conference on Pattern Languages of Programs, p.\u00a010. ACM, New York, NY, USA (2023). https:\/\/doi.org\/10.1145\/3628034.3628038","DOI":"10.1145\/3628034.3628038"},{"key":"9_CR4","doi-asserted-by":"publisher","unstructured":"Albuquerque, C., Correia, F.F.: Logging design patterns for cloud-native applications. In: Proceedings of the 29th European Conference on Pattern Languages of Programs, EuroPLoP 2024, pp. 1\u201310. Association for Computing Machinery, New York, NY, USA (2024). https:\/\/doi.org\/10.1145\/3698322.3698351","DOI":"10.1145\/3698322.3698351"},{"key":"9_CR5","unstructured":"Albuquerque, C., Correia, F.F.: Tracing and metrics design patterns for monitoring cloud-native applications. In: Proceedings of the 30th European Conference on Pattern Languages of Programs, EuroPLoP 2025, pp. 1\u201325. Springer (2025)"},{"key":"9_CR6","doi-asserted-by":"publisher","unstructured":"Albuquerque, C., Relvas, K., Correia, F.F., Brown, K.: Proactive monitoring design patterns for cloud-native applications. In: Proceedings of the 27th European Conference on Pattern Languages of Programs, EuroPLop 2022. Association for Computing Machinery, New York, NY, USA (2023). https:\/\/doi.org\/10.1145\/3551902.3551961","DOI":"10.1145\/3551902.3551961"},{"key":"9_CR7","doi-asserted-by":"publisher","unstructured":"Balalaie, A., Heydarnoori, A., Jamshidi, P., Tamburri, D.A., Lynn, T.: Microservices migration patterns. Softw. Pract. Exp. 48(11), 2019\u20132042 (2018). https:\/\/doi.org\/10.1002\/spe.2608","DOI":"10.1002\/spe.2608"},{"key":"9_CR8","unstructured":"Brown, K., Woolf, B., Groot, C.D., Hay, C., Yoder, J.: Patterns for developers and architects building for the cloud (2021). https:\/\/kgb1001001.github.io\/cloudadoptionpatterns\/"},{"key":"9_CR9","unstructured":"Cervantes, H., Kazman, R.: Designing Software Architectures: A Practical Approach. Addison-Wesley (2016)"},{"key":"9_CR10","doi-asserted-by":"publisher","unstructured":"Correia, J., Rito\u00a0Silva, A.: Identification of monolith functionality refactorings for microservices migration. Softw. Pract. Exp. 52(12), 2664\u20132683 (2022). https:\/\/doi.org\/10.1002\/spe.3141","DOI":"10.1002\/spe.3141"},{"key":"9_CR11","unstructured":"Dehghani, Z.: How to break a Monolith into Microservices. https:\/\/martinfowler.com\/articles\/break-monolith-into-microservices.html. Accessed 30 Jan 2025"},{"key":"9_CR12","doi-asserted-by":"publisher","unstructured":"Dobaj, J., Schuss, M., Krisper, M., Boano, C.A., Macher, G.: Dependable mesh networking patterns. In: Proceedings of the 24th European Conference on Pattern Languages of Programs, pp. 1\u201314 (2019). https:\/\/doi.org\/10.1145\/3361149.3361174","DOI":"10.1145\/3361149.3361174"},{"key":"9_CR13","unstructured":"Edvald, J.: Seven hard-earned lessons learned migrating a monolith to microservices (2020). https:\/\/www.infoq.com\/articles\/lessons-learned-monolith-microservices\/. Accessed 26 June 2023"},{"key":"9_CR14","unstructured":"Fowler, M.: Event sourcing (2005). https:\/\/martinfowler.com\/eaaDev\/EventSourcing.html. Accessed 22 Sept 2025"},{"key":"9_CR15","unstructured":"Fowler, M.: Tolerantreader (2011). https:\/\/martinfowler.com\/bliki\/TolerantReader.html. Accessed 12 June 2023"},{"key":"9_CR16","unstructured":"Fowler, M.: Microservice premium (2015). https:\/\/martinfowler.com\/bliki\/MicroservicePremium.html. Accessed 25 Sept 2025"},{"key":"9_CR17","volume-title":"Refactoring: Improving the Design of Existing Code","author":"M Fowler","year":"2019","unstructured":"Fowler, M.: Refactoring: Improving the Design of Existing Code, 2nd edn. Addison-Wesley, Reading, MA (2019)","edition":"2"},{"key":"9_CR18","unstructured":"Fowler, M.: Strangler fig (2024). https:\/\/martinfowler.com\/bliki\/StranglerFigApplication.html. Accessed 25 Sept 2025"},{"key":"9_CR19","unstructured":"Fowler, M.: Event Sourcing (2005). https:\/\/martinfowler.com\/eaaDev\/EventSourcing.html. Accessed 12 June 2023"},{"key":"9_CR20","doi-asserted-by":"publisher","unstructured":"Freitas, F., Ferreira, A., Cunha, J.: Refactoring Java monoliths into executable microservice-based applications. In: 25th Brazilian Symposium on Programming Languages, pp. 100\u2013107. ACM, Joinville Brazil, September 2021. https:\/\/doi.org\/10.1145\/3475061.3475086","DOI":"10.1145\/3475061.3475086"},{"key":"9_CR21","doi-asserted-by":"publisher","unstructured":"Fritzsch, J., Bogner, J., Zimmermann, A., Wagner, S.: From Monolith to microservices: a classification of refactoring approaches. In: Bruel, J.M., Mazzara, M., Meyer, B. (eds.) Software Engineering Aspects of Continuous Development and New Paradigms of Software Production and Deployment. LNCS, pp. 128\u2013141. Springer International Publishing, Cham (2019). https:\/\/doi.org\/10.1007\/978-3-030-06019-0_10","DOI":"10.1007\/978-3-030-06019-0_10"},{"key":"9_CR22","unstructured":"IBM: What is change data capture? https:\/\/www.ibm.com\/think\/topics\/change-data-capture#:~:text=Change%20data%20capture%2C%20or%20CDC,after%20a%20database%20change%20occurs. Accessed 22 Sept 2025"},{"key":"9_CR23","unstructured":"Isaenko, V.: Towards a catalog of refactorings for microservices. Master\u2019s thesis, Faculty of Mathematics, Computer Science and Natural Sciences - RWTH Aachen University, Aachen, Germany (2018). https:\/\/swc.rwth-aachen.de\/theses\/towards-a-catalog-of-refactorings-for-microservices\/2018_Isaenko_TowardsACatalogOfRefactoringsForMicroservices.pdf"},{"key":"9_CR24","doi-asserted-by":"publisher","unstructured":"Kalia, A.K., et al.: Mono2Micro: an AI-based toolchain for evolving monolithic enterprise applications to a microservice architecture. In: Proceedings of the 28th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering, pp. 1606\u20131610. ACM, Virtual Event USA, November 2020. https:\/\/doi.org\/10.1145\/3368089.3417933","DOI":"10.1145\/3368089.3417933"},{"key":"9_CR25","unstructured":"Lewis, J., Fowler, M.: Microservices (2014). https:\/\/martinfowler.com\/articles\/microservices.html. Accessed 26 Jan 2023"},{"key":"9_CR26","doi-asserted-by":"publisher","unstructured":"Maia, D., Correia, F.F., Queiroz, P.G.G.: Configurational patterns of container orchestration. In: Proceedings of the 29th European Conference on Pattern Languages of Programs, EuroPLoP 2024, pp. 1\u201311. Association for Computing Machinery, New York, NY, USA (2024). https:\/\/doi.org\/10.1145\/3698322.3698342","DOI":"10.1145\/3698322.3698342"},{"key":"9_CR27","unstructured":"Maia, D., Correia, F.F., Restivo, A., Queiroz, P.G.G.: Container orchestration patterns for optimizing resource use. In: Proceedings of the 30th European Conference on Pattern Languages of Programs, EuroPLoP 2025, pp. 1\u201325. Springer (2025)"},{"key":"9_CR28","unstructured":"Maia, T., Correia, F.: Service mesh patterns. In: Proceedings of the 27th European Conference on Pattern Languages of Programs, EuroPLoP 2022. Association for Computing Machinery, New York, NY, USA (2022)"},{"key":"9_CR29","unstructured":"Martin, R.C.: Clean Architecture: A Craftsmans Guide to Software Structure and Design. Prentice Hall (2018)"},{"key":"9_CR30","unstructured":"MuleSoft: Microservices vs monolithic architecture. https:\/\/www.mulesoft.com\/resources\/api\/microservices-vs-monolithict. Accessed 26 Jan 2023"},{"key":"9_CR31","volume-title":"Monolith to Microservices: Evolutionary Patterns to Transform Your Monolith","author":"S Newman","year":"2019","unstructured":"Newman, S.: Monolith to Microservices: Evolutionary Patterns to Transform Your Monolith. O\u2019Reilly Media Inc., Sebastopol, CA (2019)"},{"key":"9_CR32","doi-asserted-by":"publisher","unstructured":"Oberlehner, M., Sonnleithner, L., Wiesmayr, B., Zoitl, A., VaSiCS, C.: Catalog of refactoring operations for IEC 61499. In: 2021 26th IEEE International Conference on Emerging Technologies and Factory Automation (ETFA), pp. 01\u201304 (2021). https:\/\/doi.org\/10.1109\/ETFA45728.2021.9613398","DOI":"10.1109\/ETFA45728.2021.9613398"},{"key":"9_CR33","unstructured":"Pinto, J.P.D.C.: Refactoring monoliths to microservices. Master\u2019s thesis, Faculdade de Engenharia da Universidade do Porto, Porto, PT, July 2019"},{"key":"9_CR34","unstructured":"Richards, M., Ford, N.: Fundamentals of Software Architecture: An Engineering Approach. O\u2019Reilly Media (2020)"},{"key":"9_CR35","unstructured":"Richardson, C.: Pattern: Monolithic architecture. https:\/\/microservices.io\/patterns\/monolithic.html. Accessed 26 Jan 2023"},{"key":"9_CR36","unstructured":"Rizvi, S.A.M., Khanam, Z.: Refactoring catalog for legacy software using C and aspect oriented language. In: Proceedings of The World Congress in Computer Science, Computer Engineering and Applied Computing (WorldComp). The Steering Committee of WorldComp, Athens (2011). https:\/\/www.proquest.com\/conference-papers-proceedings\/refactoring-catalog-legacy-software-using-c\/docview\/1271882354\/se-2"},{"key":"9_CR37","doi-asserted-by":"crossref","unstructured":"Sousa, T.B., Aguiar, A., Ferreira, H.S., Correia, F.F.: Engineering software for the cloud: patterns and sequences. In: Proceedings of the 11th Latin-American Conference on Pattern Languages of Programming, pp.\u00a01\u20138 (2016)","DOI":"10.1145\/3147704.3147720"},{"key":"9_CR38","unstructured":"Sousa, T.B., Correia, F.F., Ferreira, H.S.: Patterns for software orchestration on the cloud. In: Proceedings of the 22nd Conference on Pattern Languages of Programs, PLoP 2015. The Hillside Group, USA (2015)"},{"key":"9_CR39","doi-asserted-by":"publisher","unstructured":"Sousa, T.B., Ferreira, H.S., Correia, F.F., Aguiar, A.: Engineering software for the cloud: messaging systems and logging. In: Proceedings of the 22nd European Conference on Pattern Languages of Programs, EuroPLoP 2017. Association for Computing Machinery, New York, NY, USA (2017). https:\/\/doi.org\/10.1145\/3147704.3147720","DOI":"10.1145\/3147704.3147720"},{"key":"9_CR40","doi-asserted-by":"publisher","unstructured":"Sousa, T.B., Ferreira, H.S., Correia, F.F., Aguiar, A.: Engineering software for the cloud: automated recovery and scheduler. In: Proceedings of the 23rd European Conference on Pattern Languages of Programs, EuroPLoP 2018. Association for Computing Machinery, New York, NY, USA (2018). https:\/\/doi.org\/10.1145\/3282308.3282315","DOI":"10.1145\/3282308.3282315"},{"key":"9_CR41","doi-asserted-by":"publisher","unstructured":"Sousa, T.B., Ferreira, H.S., Correia, F.F., Aguiar, A.: Engineering software for the cloud: external monitoring and failure injection. In: Proceedings of the 23rd European Conference on Pattern Languages of Programs, EuroPLoP 2018. Association for Computing Machinery, New York, NY, USA (2018). https:\/\/doi.org\/10.1145\/3282308.3282316","DOI":"10.1145\/3282308.3282316"},{"key":"9_CR42","doi-asserted-by":"publisher","unstructured":"Stocker, M., Zimmermann, O.: API refactoring to patterns: catalog, template and tools for remote interface evolution. In: Proceedings of the 28th European Conference on Pattern Languages of Programs, EuroPLoP 2023. Association for Computing Machinery, New York, NY, USA (2023). https:\/\/doi.org\/10.1145\/3628034.3628073","DOI":"10.1145\/3628034.3628073"},{"key":"9_CR43","doi-asserted-by":"publisher","unstructured":"Stocker, M., Zimmermann, O., Kapferer, S.: Pattern-oriented API refactoring: addressing design smells and stakeholder concerns. In: Proceedings of the 29th European Conference on Pattern Languages of Programs, People, and Practices, EuroPLoP 2024. Association for Computing Machinery, New York, NY, USA (2024). https:\/\/doi.org\/10.1145\/3698322.3698334","DOI":"10.1145\/3698322.3698334"},{"key":"9_CR44","doi-asserted-by":"publisher","unstructured":"Tighilt, R., et al.: On the study of microservices antipatterns: a catalog proposal. In: Proceedings of the European Conference on Pattern Languages of Programs 2020, EuroPLoP 2020. Association for Computing Machinery, New York, NY, USA (2020). https:\/\/doi.org\/10.1145\/3424771.3424812","DOI":"10.1145\/3424771.3424812"},{"key":"9_CR45","unstructured":"Yoder, J.W., Merson, P.: Strangler patterns. In: Proceedings of the 27th Conference on Pattern Languages of Programs, PLoP 2020, pp. 1\u201325. The Hillside Group, USA, January 2022"},{"key":"9_CR46","unstructured":"Zimmermann, O., Stocker, M., Lubke, D., Zdun, U., Pautasso, C.: Patterns for API Design: Simplifying Integration with Loosely Coupled Message Exchanges. Addison-Wesley Professional (2022)"},{"key":"9_CR47","unstructured":"Zuber, R.: Letting change and uncertainty advance your software architecture (2020). https:\/\/circleci.com\/blog\/letting-change-and-uncertainty-advance-your-software-architecture\/. Accessed 26 June 2023"},{"key":"9_CR48","unstructured":"\u0160irok\u00fd, B.J.: From monolith to microservices: refactoring patterns. Master\u2019s thesis, Massachusetts Institute of Technology, Brno, CZ (2021)"}],"container-title":["Lecture Notes in Computer Science","Pattern Languages of Programs, People and Practices"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/link.springer.com\/content\/pdf\/10.1007\/978-3-032-19154-0_9","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2026,5,9]],"date-time":"2026-05-09T22:16:30Z","timestamp":1778364990000},"score":1,"resource":{"primary":{"URL":"https:\/\/link.springer.com\/10.1007\/978-3-032-19154-0_9"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2026]]},"ISBN":["9783032191533","9783032191540"],"references-count":48,"URL":"https:\/\/doi.org\/10.1007\/978-3-032-19154-0_9","relation":{},"ISSN":["0302-9743","1611-3349"],"issn-type":[{"value":"0302-9743","type":"print"},{"value":"1611-3349","type":"electronic"}],"subject":[],"published":{"date-parts":[[2026]]},"assertion":[{"value":"1 May 2026","order":1,"name":"first_online","label":"First Online","group":{"name":"ChapterHistory","label":"Chapter History"}},{"value":"The authors have no competing interests to declare that are relevant to the content of this article.","order":1,"name":"Ethics","group":{"name":"EthicsHeading","label":"Disclosure of Interests"}},{"value":"EuroPLoP","order":1,"name":"conference_acronym","label":"Conference Acronym","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"European Conference on Pattern Languages of Programs, People, and Practices","order":2,"name":"conference_name","label":"Conference Name","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"Irsee","order":3,"name":"conference_city","label":"Conference City","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"Germany","order":4,"name":"conference_country","label":"Conference Country","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"2025","order":5,"name":"conference_year","label":"Conference Year","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"2 July 2025","order":7,"name":"conference_start_date","label":"Conference Start Date","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"6 July 2025","order":8,"name":"conference_end_date","label":"Conference End Date","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"30","order":9,"name":"conference_number","label":"Conference Number","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"europlop2025","order":10,"name":"conference_id","label":"Conference ID","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"https:\/\/www.europlop.net\/","order":11,"name":"conference_url","label":"Conference URL","group":{"name":"ConferenceInfo","label":"Conference Information"}}]}}