A Prescriptive Model for Migration to Microservices Based on SDLC Artifacts
Keywords:Microservices, decomposition, migration, extraction, slicing, identifying, brownfield development, greenfield development, microservices architecture (MSA)
Microservices architectural style is gaining popularity in industry and is being widely adopted by large corporations like Amazon, Netflix, Spotify, eBay, and many more. Several other organizations are also preferring to migrate their existing enterprise scale applications to microservices architecture. Researchers have proposed various approaches for microservices decomposition to be used in migrating or rebuilding a monolithic application to microservices. Applying any available approach to an existing monolithic application is not a straightforward decision; thus, there is a need for guidelines that assist in the migration process. There are various challenges in a migration process because different migration approaches use different sets of input data to identify microservices. Since the available migration techniques are not structured, logically, selection of an appropriate migration strategy is a difficult decision for any system architect. So, it is a recurrent open research question – which migration technique should be adopted to get microservices for a legacy monolithic application? This paper addresses this research challenge by examining existing approaches for microservices migration and groups them based on software development life cycle (SDLC) artifacts. Our research also proposes a microservices prescriptive model (MPM) from the existing prominent microservice migration techniques. This model provides recommendation (1) for refactoring an existing legacy system to microservices, and (2) for new microservices development projects. Our study also helps in gaining more insight about greenfield and brownfield development approaches in microservices applications. Moreover, researchers and practitioners of the field can benefit from this model to further validate their migration approaches based on the available system artifacts.
Taibi, D., & Systä, K. (2019). From Monolithic Systems to Microservices: A Decomposition Framework based on Process Mining. In 8th International Conference on Cloud Computing and Services Science, CLOSER.
Mazlami, G., Cito, J., & Leitner, P. (2017, June). Extraction of microservices from monolithic software architectures. In 2017 IEEE International Conference on Web Services (ICWS) (pp. 524–531). IEEE.
Chen, R., Li, S., & Li, Z. (2017, December). From monolith to microservices: a dataflow-driven approach. In 2017 24th Asia-Pacific Software Engineering Conference (APSEC) (pp. 466–475). IEEE.
Li, S., Zhang, H., Jia, Z., Li, Z., Zhang, C., Li, J., … & Shan, Z. (2019). A dataflow-driven approach to identifying microservices from monolithic applications. Journal of Systems and Software, 157, 110380.
Amiri, M. J. (2018, July). Object-aware Identification of Microservices. In 2018 IEEE International Conference on Services Computing (SCC) (pp. 253–256). IEEE.
Abdullah, M., Iqbal, W., & Erradi, A. (2019). Unsupervised learning approach for web application auto-decomposition into microservices. Journal of Systems and Software, 151, 243–257.
Fan, C. Y., & Ma, S. P. (2017, June). Migrating monolithic mobile application to microservice architecture: An experiment report. In 2017 IEEE International Conference on AI & Mobile Services (AIMS) (pp. 109-112). IEEE.
Levcovitz, A., Terra, R., & Valente, M. T. (2016). Towards a technique for extracting microservices from monolithic enterprise systems. arXiv preprint arXiv:1605.03175.
Mustafa, O., & Gómez, J. M. (2017). Optimizing economics of microservices by planning for granularity level. Experience Report.
Ahmadvand, M., & Ibrahim, A. (2016, September). Requirements reconciliation for scalable and secure microservice (de) composition. In 2016 IEEE 24th International Requirements Engineering Conference Workshops (REW) (pp. 68–73). IEEE.
Ren, Z., Wang, W., Wu, G., Gao, C., Chen, W., Wei, J., & Huang, T. (2018, September). Migrating Web Applications from Monolithic Structure to Microservices Architecture. In Proceedings of the Tenth Asia-Pacific Symposium on Internetware (p. 7). ACM.
Eski, S., & Buzluca, F. (2018, May). An automatic extraction approach: transition to microservices architecture from monolithic application. In Proceedings of the 19th International Conference on Agile Software Development: Companion (p. 25). ACM.
Selmadji, A., Seriai, A. D., Bouziane, H. L., Dony, C., & Mahamane, R. O. (2018, September). Re-architecting OO Software into Microservices. In European Conference on Service-Oriented and Cloud Computing (pp. 65–73). Springer, Cham.
Gysel, M., Kölbener, L., Giersche, W., & Zimmermann, O. (2016, September). Service cutter: A systematic approach to service decomposition. In European Conference on Service-Oriented and Cloud Computing (pp. 185–200). Springer, Cham.
Baresi, L., Garriga, M., & De Renzis, A. (2017, September). Microservices identification through interface analysis. In European Conference on Service-Oriented and Cloud Computing (pp. 19–33). Springer, Cham.
UU, Z. L., Korpershoek, M., & VU, A. O. Towards a MicroServices Architecture for Clouds.
Sayara, A., Towhid, M. S., & Hossain, M. S. (2017, December). A probabilistic approach for obtaining an optimized number of services using weighted matrix and multidimensional scaling. In 2017 20th International Conference of Computer and Information Technology (ICCIT) (pp. 1–6). IEEE.
Nakazawa, R., Ueda, T., Enoki, M., & Horii, H. (2018, September). Visualization tool for designing microservices with the monolith-first approach. In 2018 IEEE Working Conference on Software Visualization (VISSOFT) (pp. 32–42). IEEE.
Krause, A., Zirkelbach, C., Hasselbring, W., Lenga, S., & Kröger, D. (2020, March). Microservice Decomposition via Static and Dynamic Analysis of the Monolith. In 2020 IEEE International Conference on Software Architecture Companion (ICSA-C) (pp. 9–16). IEEE.
Jin, W., Liu, T., Zheng, Q., Cui, D., & Cai, Y. (2018, July). Functionality-oriented microservice extraction based on execution trace clustering. In 2018 IEEE International Conference on Web Services (ICWS) (pp. 211–218). IEEE.
Stojanovic, T. D., Lazarevic, S. D., Milic, M., & Antovic, I. (2020, February). Identifying microservices using structured system analysis. In 2020 24th International Conference on Information Technology (IT) (pp. 1–4). IEEE.
Keele, S. (2007). Guidelines for performing systematic literature reviews in software engineering (Vol. 5). Technical report, Ver. 2.3 EBSE Technical Report. EBSE.
Taibi, D., Lenarduzzi, V., Pahl, C., & Janes, A. (2017, May). Microservices in agile software development: a workshop-based study into issues, advantages, and disadvantages. In Proceedings of the XP2017 Scientific Workshops (p. 23). ACM.
Taibi, D., & Systä, K. (2019). A Decomposition and Metric-Based Evaluation Framework for Microservices. arXiv preprint arXiv:1908.08513.
Garriga, M. (2017, September). Towards a taxonomy of microservices architectures. In International Conference on Software Engineering and Formal Methods (pp. 203–218). Springer, Cham.
Dehghani, Z. (2018). How to break a Monolith into Microservices.
J. Lewis and M. Fowler, “Microservices,” 2014. http://martinfowler.com/articles/microservices.html. Accessed on 13th March 2020
Fritzsch, J., Bogner, J., Zimmermann, A., & Wagner, S. (2018, March). From monolith to microservices: a classification of refactoring approaches. In International Workshop on Software Engineering Aspects of Continuous Development and New Paradigms of Software Production and Deployment (pp. 128–141). Springer, Cham.
Ponce, F., Márquez, G., & Astudillo, H. (2019, November). Migrating from monolithic architecture to microservices: A Rapid Review. In 2019 38th International Conference of the Chilean Computer Science Society (SCCC) (pp. 1–7). IEEE.
Kazanavièius, J., & Mažeika, D. (2019, April). Migrating legacy software to microservices architecture. In 2019 Open Conference of Electrical, Electronic and Information Sciences (eStream) (pp. 1–5). IEEE.
Pedreira, O., Silva-Coira, F., Places, Á. S., Luaces, M. R., & Folgueira, L. G. (2019). Applying Feature-Oriented Software Development in SaaS Systems: Real Experience, Measurements, and Findings. Journal of Web Engineering, 18(4), 447–476.
https://martinfowler.com/books/refactoring.html, Access on 21.5.2020
Schmidt, R. A., & Thiry, M. (2020, June). Microservices identification strategies: A review focused on Model-Driven Engineering and Domain Driven Design approaches. In 2020 15th Iberian Conference on Information Systems and Technologies (CISTI) (pp. 1–6). IEEE.
Di Francesco, P., Lago, P., & Malavolta, I. (2019). Architecting with microservices: A systematic mapping study. Journal of Systems and Software, 150, 77–97.
Di Francesco, P., Lago, P., & Malavolta, I. (2018, April). Migrating towards microservice architectures: an industrial survey. In 2018 IEEE International Conference on Software Architecture (ICSA) (pp. 29–2909). IEEE.
Taib, D., Lenarduzzi, V., & Pahl, C. (2018). Architectural patterns for microservices: a systematic mapping study. SCITEPRESS.
https://structure101.com/legacy/structural-analysis/ Accessed on 18.11.2020
http://perfinsp.sourceforge.net/jprof.html#Overview Accessed on 18.11.2020
https://www.hello2morrow.com/products/sonargraph/architect9 Accessed on 18.11.2020
http://wala.sourceforge.net/wiki/index.php/Main_Page Accessed on 18.11.2020
http://kieker-monitoring.net/ Accessed on 18.11.2020
https://github.com/ExplorViz/docs/wiki#quick-start-guides Accessed on 18.11.2020
https://www.elastic.co/guide/en/apm/get-started/current/overview.html Accessed on 18.11.2020
https://fluxicon.com/disco/ Accessed on 18.11.2020
https://github.com/dbeaver/dbeaver/wiki Accessed on 18.11.2020