skip to main content
10.1145/3242163.3242164acmconferencesArticle/Chapter ViewAbstractPublication PagesaseConference Proceedingsconference-collections
research-article

Migrating towards microservices: migration and architecture smells

Published: 04 September 2018 Publication History

Abstract

Migrating to microservices is an error-prone process with deep pitfalls resulting in high costs for mistakes. Microservices is a relatively new architectural style, resulting in the lack of general guidelines for migrating monoliths towards microservices. We present 9 common pitfalls in terms of bad smells with their potential solutions. Using these bad smells, pitfalls can be identified and corrected in the migration process.

References

[1]
Mohsen Ahmadvand and Amjad Ibrahim. 2016. Requirements Reconciliation for Scalable and Secure Microservice (De)composition. In 2016 IEEE 24th International Requirements Engineering Conference Workshops (REW). 68–73.
[2]
Saba Anees. 2016. How to Migrate to Microservices. https : / / blog.appdynamics.com/product/howtomigratetomicroservices. https: //blog.appdynamics.com/product/how-to-migrate-to-microservices Accessed 7. May 2018.
[3]
Hendry Anwar. 2017. Refactoring Monolith to Microservices. http : / / us.arvato.com / blog / refactoring - monolith - to - microservices. http : / / us.arvato.com/blog/refactoring-monolith-to-microservices Accessed 7. May 2018.
[4]
Armin Balalaie, Abbas Heydarnoori, and Pooyan Jamshidi. 2015. Microservices migration patterns. Technical report, Tech. Rep. TR-SUTCE-ASE-2015-01, Automated Software Engineering Group (2015).
[5]
Armin Balalaie, Abbas Heydarnoori, and Pooyan Jamshidi. 2016. Microservices Architecture Enables DevOps: An Experience Report on Migration to a Cloud-Native Architecture. IEEE Software 33, 3 (2016), 42–52.
[6]
Armin Balalaie, Abbas Heydarnoori, and Pooyan Jamshidi. 2016. Migrating to Cloud-Native Architectures Using Microservices: An Experience Report. In Advances in Service-Oriented and Cloud Computing, Antonio Celesti and Philipp Leitner (Eds.). Springer International Publishing, Cham, 201–215. https://link.springer.com/chapter/10.1007%2F978-3-319-33313-7_15
[7]
Kyle Brown. 2016. Refactoring for microservices. https://www.ibm.com/ developerworks / cloud / library / cl - refactor - microservices - bluemix - trs - 1 / index.html. https://www.ibm.com/developerworks/cloud/library/cl-refactormicroservices-bluemix-trs-1/index.html Accessed 27. Apr. 2018.
[8]
Kyle Brown and Bobby Woolf. 2016. Implementation Patterns for Microservices Architectures. In Proceedings of the 23rd Conference on Pattern Languages of Programs. The Hillside Group, 7.
[9]
Antonio Bucchiarone, Nicola Dragoni, Schahram Dustdar, Stephan T Larsen, and Manuel Mazzara. 2017. From Monolithic to Microservices: An experience report. Technical Report. Technical University of Denmark, Örebro University, TU Wien, Danske Bank, and Innopolis University.
[10]
Tomas Cerny, Michael J. Donahoo, and Michal Trnka. 2018. Contextual Understanding of Microservice Architecture: Current and Future Directions. SIGAPP Appl. Comput. Rev. 17, 4 (Jan. 2018), 29–45. 3183628.3183631
[11]
Lianping Chen. 2018. Microservices: Architecting for Continuous Delivery and DevOps. In Proceedings of the IEEE International Conference on Software Architecture (ICSA 2018) (03 2018).
[12]
Fan Chen-Yuan and Ma Shang-Pin. 2017. Migrating Monolithic Mobile Application to Microservice Architecture: An Experiment Report. In 2017 IEEE International Conference on AI Mobile Services (AIMS). 109–112.
[13]
Matt Chotin. 2018. Top 3 Challenges of Adopting Microservices as Part of Your Cloud Migration. https://devops.com/top- 3challengesofadoptingmicroservices-as-part-of-your-cloud-migration. https://devops.com/top- 3challengesofadoptingmicroservicesaspartofyourcloudmigration Accessed 7. May 2018.
[14]
Michael Churchman. 2017. Refactoring Your App with Microservices - Rancher Labs. https://rancher.com/refactoring-app-microservices. https://rancher.com/ refactoring-app-microservices Accessed 27. Apr. 2018.
[15]
Melvin E Conway. 1968. How do committees invent. Datamation 14, 4 (1968), 28–31.
[16]
Pedro Costa. 2018. Migrating to Microservices and Event-Sourcing: the Dos and Dont’s. https://hackernoon.com/migrating-to-microservices-and-eventsourcing-the-dos-and-donts-195153c7487d. https://hackernoon.com/migratingto-microservices-and-event-sourcing-the-dos-and-donts-195153c7487d Accessed 7. May 2018.
[17]
Neil Crawford. 2016. Extracting a Microservice from a Monolith. https: //tech.findmypast.com/extracting-a-microservice-from-a-monolith. https: //tech.findmypast.com/extracting-a-microservice-from-a-monolith Accessed 7. May 2018.
[18]
Nicola Dragoni, Schahram Dustdar, Stephan Thordal Larsen, and Manuel Mazzara. 2017. Microservices: Migration of a Mission Critical System. CoRR abs/1704.04173 (2017). arXiv: 1704.04173 http://arxiv.org/abs/1704.04173
[19]
Nicola Dragoni, Saverio Giallorenzo, Alberto Lluch Lafuente, Manuel Mazzara, Fabrizio Montesi, Ruslan Mustafin, and Larisa Safina. 2017. Microservices: yesterday, today, and tomorrow. In Present and Ulterior Software Engineering. Springer, 195–216.
[20]
Nicola Dragoni, Ivan Lanese, Stephan Thordal Larsen, Manuel Mazzara, Ruslan Mustafin, and Larisa Safina. 2018. Microservices: How To Make Your Application Scale. In Perspectives of System Informatics, Alexander K. Petrenko and Andrei Voronkov (Eds.). Springer International Publishing, Cham, 95–104.
[21]
Martin Fowler. 2014. MicroservicePrerequisites. https://martinfowler.com/ bliki / MicroservicePrerequisites.html. https : / / martinfowler.com / bliki / MicroservicePrerequisites.html Accessed 16. May 2018.
[22]
Martin Fowler. 2015. MonolithFirst. https : / / martinfowler.com / bliki / MonolithFirst.html. https://martinfowler.com/bliki/MonolithFirst.html Accessed 7. May 2018.
[23]
Martin Fowler and James Lewis. 2014. Microservices, a definition of this new architectural term. http://martinfowler.com/articles/microservices.html. Accessed 05.04.2018.
[24]
Andrei Furda, Colin Fidge, Olaf Zimmermann, Wayne Kelly, and Alistair Barros. 2017. Migrating Enterprise Legacy Source Code to Microservices: On Multi-Tenancy, Statefulness and Data Consistency. IEEE Software PP, 99 (2017), 1–1.
[25]
Vahid Garousi, Michael Felderer, and Mika V Mäntylä. 2016. The need for multivocal literature reviews in software engineering: complementing systematic literature reviews with grey literature. In Proceedings of the 20th International Conference on Evaluation and Assessment in Software Engineering. ACM, 26.
[26]
Johannes Giani. 2018. 6 Things to Consider for Microservice Migration. https: //www.inovex.de/blog/microservice-migration. https://www.inovex.de/blog/ microservice-migration Accessed 7. May 2018.
[27]
Jean-Philippe Gouigoux and Dalila Tamzalit. 2017. From Monolith to Microservices: Lessons Learned on an Industrial Migration to a Web Oriented Architecture. In 2017 IEEE International Conference on Software Architecture Workshops (ICSAW). 62–65.
[28]
Claudio Guidi, Ivan Lanese, Manuel Mazzara, and Fabrizio Montesi. 2017. Microservices: A Language-Based Approach. Springer International Publishing, Cham, 217–225.
[29]
Arun Gupta. 2015. Microservice Design Patterns. http://blog.arungupta.me/ microservice-design-patterns/. http://blog.arungupta.me/microservice-designpatterns/ Accessed 7. May 2018.
[30]
Arun Gupta. 2015. Monolithic to Microservices Refactoring for Java EE Applications. http://blog.arungupta.me/monolithic-microservices-refactoring-javaeeapplications. http://blog.arungupta.me/monolithic-microservices-refactoringjavaee-applications Accessed 7. May 2018.
[31]
Arun Gupta. 2015. ZooKeeper for Microservice Registration and Discovery. http://blog.arungupta.me/zookeeper-microservice-registration-discovery. http: //blog.arungupta.me/zookeeper-microservice-registration-discovery/ Accessed 7. May 2018.
[32]
Grzegorz Gwoźdź. 2018. How can you refactor a monolithic application into microservices? https : / / medium.com / @NeotericEU / how - can - you - refactor-a-monolithic-application-into-microservices-2eef8e323840. https:// medium.com/@NeotericEU/how-can-you-refactor-a-monolithic-applicationinto-microservices-2eef8e323840 Accessed 7. May 2018.
[33]
Sara Hassan and Rami Bahsoon. 2016. Microservices and Their Design Trade-Offs: A Self-Adaptive Roadmap. In 2016 IEEE International Conference on Services Computing (SCC). 813–818.
[34]
Munezero Immaculee Joselyne, Benjamin Kanagwa, and Joseph Balikuddembe. 2017. A framework to Modernize SME Application in Emerging Economies: Microservice Architecture Pattern Approach. In Microservices 2017.
[35]
Vivek Juneja. 2016. From Monoliths to Microservices: An Architectural Strategy. https://thenewstack.io/frommonolithtomicroservices. https:// thenewstack.io/from-monolith-to-microservices Accessed 7. May 2018.
[36]
Miika Kalske, Niko Mäkitalo, and Tommi Mikkonen. 2018. Challenges When Moving from Monolith to Microservice Architecture. In Current Trends in Web Engineering, Irene Garrigós and Manuel Wimmer (Eds.). Springer International Publishing, Cham, 32–47.
[37]
Alessandra Levcovitz, Ricardo Terra, and Marco Tulio Valente. 2016. Towards a Technique for Extracting Microservices from Monolithic Enterprise Systems. CoRR abs/1605.03175 (2016). arXiv: 1605.03175 http://arxiv.org/abs/1605.03175
[38]
David S. Linthicum. 2016. Practical Use of Microservices in Moving Workloads to the Cloud. IEEE Cloud Computing 3, 5 (Sept 2016), 6–9. MCC.2016.114 IwoR ’18, September 4, 2018, Montpellier, France Andrés Carrasco, Brent van Bladel, and Serge Demeyer
[39]
Abhijit Mandal. 2018. Migrating to Microservices. https://dzone.com/ articles/migrating-to-microservices. https://dzone.com/articles/migratingto-microservices Accessed 7. May 2018.
[40]
Genc Mazlami, Jürgen Cito, and Philipp Leitner. 2017. Extraction of Microservices from Monolithic Software Architectures. In Web Services (ICWS), 2017 IEEE International Conference on. IEEE, 524–531.
[41]
Ben Morris. 2015. Refactoring large monoliths to microservices: strategies, risks and pragmatic reality. http://www.ben-morris.com/refactoring-large-monolithsto-microservices-strategies-risks-and-pragmatic-reality. http://www.benmorris.com/refactoringlargemonolithstomicroservicesstrategiesrisks- and-pragmatic-reality Accessed 7. May 2018.
[42]
Ola Mustafa, Jorge Marx Gómez, Mohamad Hamed, and Hergen Pargmann. 2018. GranMicro: A Black-Box Based Approach for Optimizing Microservices Based Applications. In From Science to Society, Benoît Otjacques, Patrik Hitzelberger, Stefan Naumann, and Volker Wohlgemuth (Eds.). Springer International Publishing, Cham, 283–294.
[43]
Sam Newman. 2015. Building Microservices: Designing Fine-Grained Systems. O’Reilly Media.
[44]
Pramod Nikam. 2017. How will you design, break and migrate database matching to microservices? http://techprehension.com/2017/12/31/howwillyoudesignbreak- andmigratedatabasematchingtomicroservices. http://techprehension.com/2017/12/31/howwillyoudesignbreak- andmigrate-database-matching-to-microservices Accessed 7. May 2018.
[45]
Brice Nkengsa. 2016. Migrating from a Monolith to a Microservices Architecture. https://medium.com/@briceicle/migrating-from-a-monolith-to-amicroservices-architecture-99cecf8af366. https://medium.com/@briceicle/ migrating-from-a-monolith-to-a-microservices-architecture-99cecf8af366 Accessed 7. May 2018.
[46]
Claus Pahl and Pooyan Jamshidi. 2016. Microservices: A Systematic Mapping Study. In Proceedings of the 6th International Conference on Cloud Computing and Services Science. 137–146.
[47]
Florian Rademacher, Sabine Sachweh, and Albert Zündorf. 2017. Differences between Model-Driven Development of Service-Oriented and Microservice Architecture. In 2017 IEEE International Conference on Software Architecture Workshops (ICSAW). 38–45.
[48]
Chris Richardson. 2016. Refactoring a Monolith into Microservices. https: //www.nginx.com/blog/refactoring-a-monolith-into-microservices. https: //www.nginx.com/blog/refactoring-a-monolith-into-microservices Accessed 27. Apr. 2018.
[49]
Curtis Rissi. 2015. Thoughts on Migrating to a Microservices Architecture. http://www.boringgeek.com/thoughtsonmigratingtoamicroservicesarchitecture. http://www.boringgeek.com/thoughtsonmigratingtoamicroservices-architecture Accessed 7. May 2018.
[50]
Rafael Romão. 2017. Microservices Architecture As A Large-Scale Refactoring Tool. http://blog.avenuecode.com/microservices-architecture-as-a-large-scalerefactoring-tool. http://blog.avenuecode.com/microservices-architecture-as-alarge-scale-refactoring-tool Accessed 7. May 2018.
[51]
Tasneem Salah, Mohamed Jamal Zemerly, Chan Yeob Yeun, Mahmoud Al-Qutayri, and Yousof Al-Hammadi. 2016. The evolution of distributed systems towards microservices architecture. In 2016 11th International Conference for Internet Technology and Secured Transactions (ICITST). 318–325. ICITST.2016.7856721
[52]
Ryan Scheuermann. 2017. 9 Tips for a Painless Microservices Migration. http: //engineering.invisionapp.com/post/painless-microservices-migration. http: //engineering.invisionapp.com/post/painless-microservices-migration Accessed 7. May 2018.
[53]
Michael Stal. 2007. Software Architecture Refactoring. In Tutorial in The International Conference on Object Oriented Programming, Systems, Languages and Applications.
[54]
Chris Stetson. 2017. How To ’Refactor’ Monolithic Applications into Microservices. http://www.datacenterknowledge.com/archives/2017/06/05/refactormonolithic-applications-microservices. http://www.datacenterknowledge.com/ archives/2017/06/05/refactor-monolithic-applications-microservices Accessed 7. May 2018.
[55]
Davide Taibi and Valentina Lenarduzzi. 2018. On the Definition of Microservices Bad Smells. IEEE Software vol 35 (05 2018).
[56]
Davide Taibi, Valentina Lenarduzzi, and Claus Pahl. 2017. Processes, Motivations, and Issues for Migrating to Microservices Architectures: An Empirical Investigation. IEEE Cloud Computing 4, 5 (September 2017), 22–32.
[57]
Davide Taibi, Valentina Lenarduzzi, and Claus Pahl. 2018. Architectural Patterns for Microservices: A Systematic Mapping Study. In 8th International Conference on Cloud.
[58]
MVLN Venugopal. 2017. Containerized Microservices architecture. International Journal Of Engineering And Computer Science 6, 11 (2017), 23199–23208.
[59]
Vaughn Vernon. 2013. Implementing domain-driven design. Addison-Wesley.
[60]
James Ward. 2015. Refactoring to Microservices. https://www.jamesward.com/ 2015/05/26/refactoring-to-microservices. https://www.jamesward.com/2015/ 05/26/refactoring-to-microservices Accessed 7. May 2018.
[61]
Olaf Zimmermann. 2017. Microservices tenets: Agile approach to service development and deployment. Computer Science - Research and Development 32, 3 (01 Jul 2017), 301–310.

Cited By

View all
  • (2024)Research on legacy monolith applications decomposition into microservice architectureundefined10.20334/2024-018-MOnline publication date: 2024
  • (2023)Migrating to a microservice architecture: benefits and challenges2023 46th MIPRO ICT and Electronics Convention (MIPRO)10.23919/MIPRO57284.2023.10159894(1670-1677)Online publication date: 22-May-2023
  • (2023)Actor-driven Decomposition of Microservices through Multi-level Scalability AssessmentACM Transactions on Software Engineering and Methodology10.1145/3583563Online publication date: 15-Feb-2023
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Conferences
IWoR 2018: Proceedings of the 2nd International Workshop on Refactoring
September 2018
45 pages
ISBN:9781450359740
DOI:10.1145/3242163
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 04 September 2018

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. Architecture Smells
  2. Literature Study
  3. MicroServices
  4. Migration Smells

Qualifiers

  • Research-article

Conference

ASE '18
Sponsor:

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)72
  • Downloads (Last 6 weeks)9
Reflects downloads up to 17 Feb 2025

Other Metrics

Citations

Cited By

View all
  • (2024)Research on legacy monolith applications decomposition into microservice architectureundefined10.20334/2024-018-MOnline publication date: 2024
  • (2023)Migrating to a microservice architecture: benefits and challenges2023 46th MIPRO ICT and Electronics Convention (MIPRO)10.23919/MIPRO57284.2023.10159894(1670-1677)Online publication date: 22-May-2023
  • (2023)Actor-driven Decomposition of Microservices through Multi-level Scalability AssessmentACM Transactions on Software Engineering and Methodology10.1145/3583563Online publication date: 15-Feb-2023
  • (2023)An Approach to Migrate from Legacy Monolithic Application into Microservice Architecture2023 IEEE Open Conference of Electrical, Electronic and Information Sciences (eStream)10.1109/eStream59056.2023.10135021(1-6)Online publication date: 27-Apr-2023
  • (2023)Automatic Detection of Security Deficiencies and Refactoring Advises for Microservices2023 IEEE/ACM International Conference on Software and System Processes (ICSSP)10.1109/ICSSP59042.2023.00013(25-34)Online publication date: May-2023
  • (2023)To Security and Beyond: On The Impacts of Microservice Security Smells and Refactorings2023 XLIX Latin American Computer Conference (CLEI)10.1109/CLEI60451.2023.10346146(1-10)Online publication date: 16-Oct-2023
  • (2023)A Survey on Microservices Architecture: Principles, Patterns and Migration ChallengesIEEE Access10.1109/ACCESS.2023.330568711(88339-88358)Online publication date: 2023
  • (2023)Catalog and detection techniques of microservice anti-patterns and bad smells: A tertiary studyJournal of Systems and Software10.1016/j.jss.2023.111829206(111829)Online publication date: Dec-2023
  • (2023)Refactoring with domain-driven design in an industrial contextEmpirical Software Engineering10.1007/s10664-023-10310-128:4Online publication date: 15-Jun-2023
  • (2023)Microservices Security: Bad vs. Good PracticesSoftware Architecture. ECSA 2022 Tracks and Workshops10.1007/978-3-031-36889-9_23(337-352)Online publication date: 16-Jul-2023
  • Show More Cited By

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Figures

Tables

Media

Share

Share

Share this Publication link

Share on social media