Abstract
Following the evolution of Cloud Computing and Service-Oriented Architecture (SOA), microservices (MS) have naturally emerged as the next trend due to the advantages they provide. These advantages include increased maintainability, better scalability, and an overall better synergy with DevOps techniques. This makes migrating legacy software towards a microservice-oriented architecture (MSA) an attractive prospect for organizations. The migration process is a complex and consequently risky endeavor that can be decomposed into two phases (1) the microservice-based architecture recovery phase and (2) the transformation (i.e. materialization) phase. Several studies have been done to automate the microservice architecture recovery phase. However, to the best of our knowledge, no work has been completed to automate the transformation phase. In this paper, we propose a systematic approach to refactor the existing code of an object-oriented monolithic application towards an MS-oriented one by using the target architecture from the recovery phase as a guide. By defining and applying a set of transformation patterns, we are able to generate a set of deployable microservices. Finally, we validate our approach by automating it through our tool MonoToMicro, and we apply it to a set of monolithic Java applications to generate a set of MSAs.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Notes
References
Allier, S., Sadou, S., Sahraoui, H.A., Fleurquin, R.: From object-oriented applications to component-oriented applications via component-oriented architecture. In: 9th Working IEEE/IFIP Conference on Software Architecture, WICSA 2011, Boulder, Colorado, USA, 20–24 June 2011, pp. 214–223. IEEE Computer Society (2011). https://doi.org/10.1109/WICSA.2011.35
Alshara, Z., Seriai, A., Tibermacine, C., Bouziane, H., Dony, C., Shatnawi, A.: Migrating large object-oriented applications into component-based ones: instantiation and inheritance transformation. In: International Conference on Generative Programming: Concepts and Experiences, GPCE 2015, pp. 55–64. ACM (2015). https://doi.org/10.1145/2814204.2814223
Alshara, Z., Seriai, A.-D., Tibermacine, C., Bouziane, H.L., Dony, C., Shatnawi, A.: Materializing architecture recovered from object-oriented source code in component-based languages. In: Tekinerdogan, B., Zdun, U., Babar, A. (eds.) ECSA 2016. LNCS, vol. 9839, pp. 309–325. Springer, Cham (2016). https://doi.org/10.1007/978-3-319-48992-6_23
Amiri, M.J.: Object-aware identification of microservices. In: 2018 IEEE SCC, pp. 253–256. IEEE, July 2018. https://doi.org/10.1109/SCC.2018.00042, https://ieeexplore.ieee.org/document/8456428/
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
Baskarada, S., Nguyen, V., Koronios, A.: Architecting microservices: practical opportunities and challenges. J. Comput. Inf. Syst. 60, 428–436 (2020)
Birkmeier, D., Overhage, S.: On component identification approaches – classification, state of the art, and comparison. In: Lewis, G.A., Poernomo, I., Hofmeister, C. (eds.) CBSE 2009. LNCS, vol. 5582, pp. 1–18. Springer, Heidelberg (2009). https://doi.org/10.1007/978-3-642-02414-6_1
Chardigny, S., Seriai, A.: Software architecture recovery process based on object-oriented source code and documentation. In: Babar, M.A., Gorton, I. (eds.) ECSA 2010. LNCS, vol. 6285, pp. 409–416. Springer, Heidelberg (2010). https://doi.org/10.1007/978-3-642-15114-9_35
Chardigny, S., Seriai, A., Tamzalit, D., Oussalah, M.: Quality-driven extraction of a component-based architecture from an object-oriented system. In: 12th European Conference on Software Maintenance and Reengineering, CSMR 2008, 1–4 April 2008, Athens, Greece, pp. 269–273. IEEE Computer Society (2008). https://doi.org/10.1109/CSMR.2008.4493324
Chen, R., Li, S., Li, Z.: From monolith to microservices: a dataflow-driven approach. In: Proceedings - Asia-Pacific Software Engineering Conference, APSEC, pp. 466–475 (2018). https://doi.org/10.1109/APSEC.2017.53
De Alwis, A.A.C., Barros, A., Polyvyanyy, A., Fidge, C.: Function-splitting heuristics for discovery of microservices in enterprise systems. In: Pahl, C., Vukovic, M., Yin, J., Yu, Q. (eds.) ICSOC 2018. LNCS, vol. 11236, pp. 37–53. Springer, Cham (2018). https://doi.org/10.1007/978-3-030-03596-9_3
Ducasse, S., Pollet, D.: Software architecture reconstruction: a process-oriented taxonomy. IEEE Trans. Softw. Eng. 35(4), 573–591 (2009). https://doi.org/10.1109/TSE.2009.19
Fan, C., Ma, S.: Migrating monolithic mobile application to microservice architecture: an experiment report. In: 2017 IEEE AIMS, pp. 109–112, June 2017. https://doi.org/10.1109/AIMS.2017.23
Francesco, P.D., Malavolta, I., Lago, P.: Research on architecting microservices: trends, focus, and potential for industrial adoption. In: 2017 IEEE ICSA, pp. 21–30 (2017). https://doi.org/10.1109/ICSA.2017.24
Fritzsch, J., Bogner, J., Zimmermann, A., Wagner, S.: From monolith to microservices: a classification of refactoring approaches. CoRR abs/1807.10059 (2018), http://arxiv.org/abs/1807.10059
Gamma, E., Helm, R., Johnson, R., Vlissides, J.: Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley Longman Publishing Co., Inc, USA (1995)
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
Jin, W., Liu, T., Zheng, Q., Cui, D., Cai, Y.: Functionality-oriented microservice extraction based on execution trace clustering. In: 2018 IEEE ICWS, pp. 211–218, July 2018. https://doi.org/10.1109/ICWS.2018.00034
Levcovitz, A., Terra, R., Valente, M.T.: Towards a technique for extracting microservices from monolithic enterprise systems. CoRR abs/1605.03175 (2016), http://arxiv.org/abs/1605.03175
Lewis, J., Fowler, M.: Microservices: a definition of this new architectural term (2014). https://martinfowler.com/articles/microservices.html
Mazlami, G., Cito, J., Leitner, P.: Extraction of microservices from monolithic software architectures. In: 2017 IEEE ICWS, pp. 524–531. IEEE, June 2017. https://doi.org/10.1109/ICWS.2017.61, http://ieeexplore.ieee.org/document/8029803/
Monaghan, B.D., Bass, J.M.: Redefining legacy: a technical debt perspective. In: Morisio, M., Torchiano, M., Jedlitschka, A. (eds.) PROFES 2020. LNCS, vol. 12562, pp. 254–269. Springer, Cham (2020). https://doi.org/10.1007/978-3-030-64148-1_16
Newman, S.: Building Microservices: Designing Fine-Grained Systems. O’Reilly Media, Newton (2019)
Nunes, L., Santos, N., Rito Silva, A.: From a monolith to a microservices architecture: an approach based on transactional contexts. In: Bures, T., Duchien, L., Inverardi, P. (eds.) ECSA 2019. LNCS, vol. 11681, pp. 37–52. Springer, Cham (2019). https://doi.org/10.1007/978-3-030-29983-5_3
Pahl, C., Jamshidi, P.: Microservices: a systematic mapping study. In: Proceedings of the 6th CLOSER - Volume 1 and 2, pp. 137–146. CLOSER 2016, SCITEPRESS - Science and Technology Publications, Lda, Setubal, PRT (2016). https://doi.org/10.5220/0005785501370146
Ponce, F., Márquez, G., Astudillo, H.: Migrating from monolithic architecture to microservices: a rapid review. In: 2019 38th International Conference of the Chilean Computer Science Society (SCCC), pp. 1–7 (2019). https://doi.org/10.1109/SCCC49216.2019.8966423
Richardson, C.: Microservices Patterns. O’Reilly Media, Newton (2018)
Selmadji, A., Seriai, A.-D., Bouziane, H.L., Dony, C., Mahamane, R.O.: Re-architecting OO software into microservices. In: Kritikos, K., Plebani, P., de Paoli, F. (eds.) ESOCC 2018. LNCS, vol. 11116, pp. 65–73. Springer, Cham (2018). https://doi.org/10.1007/978-3-319-99819-0_5
Selmadji, A., Seriai, A.D., Bouziane, H.L., Mahamane, R., Zaragoza, P., Dony, C.: From monolithic architecture style to microservice one based on a semi-automatic approach. In: 2020 IEEE International Conference on Software Architecture (ICSA), pp. 157–168 (2020)
Soldani, J., Tamburri, D.A., Van Den Heuvel, W.J.: The pains and gains of microservices: a systematic grey literature review. J. Syst. Softw. 146, 215–232 (2018). https://doi.org/10.1016/j.jss.2018.09.082, https://www.sciencedirect.com/science/article/ pii/S0164121218302139
Terra, R., Valente, M., Bigonha, R.: An approach for extracting modules from monolithic software architectures. In: pp. 1–8, January 2012
Waseem, M., Liang, P., Shahin, M.: A systematic mapping study on microservices architecture in devops. J. Syst. Softw. 170 (2020). https://doi.org/10.1016/j.jss.2020.110798, https://www.sciencedirect.com/science/article/ pii/S0164121220302053
Zaragoza., P., Seriai., A., Seriai., A., Bouziane., H., Shatnawi., A., Derras., M.: Refactoring monolithic object-oriented source code to materialize microservice-oriented architecture. In: Proceedings of the 16th International Conference on Software Technologies - ICSOFT, pp. 78–89. INSTICC, SciTePress (2021). https://doi.org/10.5220/0010557800780089
Author information
Authors and Affiliations
Corresponding authors
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2022 Springer Nature Switzerland AG
About this paper
Cite this paper
Zaragoza, P., Seriai, AD., Seriai, A., Shatnawi, A., Bouziane, HL., Derras, M. (2022). Materializing Microservice-oriented Architecture from Monolithic Object-oriented Source Code. In: Fill, HG., van Sinderen, M., Maciaszek, L.A. (eds) Software Technologies. ICSOFT 2021. Communications in Computer and Information Science, vol 1622. Springer, Cham. https://doi.org/10.1007/978-3-031-11513-4_7
Download citation
DOI: https://doi.org/10.1007/978-3-031-11513-4_7
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-031-11512-7
Online ISBN: 978-3-031-11513-4
eBook Packages: Computer ScienceComputer Science (R0)