Mon4Aware: A multi-objective and context-aware approach to decompose monolithic applications
Resumo
This article introduces Mon4Aware, a multi-objective and context-aware approach to decompose monolithic applications. Mon4Aware stands out for: (1) using optimization based on multiple criteria to allow monolithic applications to be modularized in different ways, making its decomposition process flexible; and (2) to propose a context meta-model to allow the decomposed modules of the monolithic application to be able to adapt under certain contextual situations. Software developers can use Mon4Aware as a guide to modernization activities for monolithic applications, making them less error-prone. The approach was evaluated through a case study, in which the conceptual viability of Mon4Aware was demonstrated, as well as promising initial results in generating recommendations for the decomposition of monolithic applications.
Palavras-chave:
Decomposition, Monolith, Context-aware, Multi-Objective Optimization
Referências
Luciano Baresi, Martin Garriga, and Alan De Renzis. 2017. Microservices identification through interface analysis. In European Conference on Service-Oriented and Cloud Computing. Springer, 19–33.
Albert Brouillette, Devraj Sarmah, and Jugal Kalita. 2012. Multi-objective optimization for efficient brahmic keyboards. In Proceedings of the Second Workshop on Advances in Text Input Methods. 29–44.
Rafael Capilla, Óscar Ortiz, and Mike Hinchey. 2014. Context variability for context-aware systems. Computer 2 (2014), 85–87.
R. Chen, S. Li, and Z. Li. 2017. From Monolith to Microservices: A Dataflow-Driven Approach. In 2017 24th Asia-Pacific Software Engineering Conference (APSEC). 466–475.
Anind K Dey. 2001. Understanding and using context. Personal and ubiquitous computing 5, 1 (2001), 4–7.
Paolo Di Francesco, Patricia Lago, and Ivano Malavolta. 2019. Architecting with microservices: A systematic mapping study. Journal of Systems and Software 150 (2019), 77–97.
Nicola Dragoni, Schahram Dustdar, Stephan T Larsen, and Manuel Mazzara. 2017. Microservices: Migration of a mission critical system. arXiv preprint arXiv:1704.04173 (2017).
Benoît Duhoux, Kim Mens, and Bruno Dumas. 2019. Implementation of a featurebased context-oriented programming language. In Proceedings of the Workshop on Context-oriented Programming. 9–16.
Daniel Escobar, Diana Cárdenas, Rolando Amarillo, Eddie Castro, Kelly Garcés, Carlos Parra, and Rubby Casallas. 2016. Towards the understanding and evolution of monolithic applications as microservices. In 2016 XLII Latin American Computing Conference (CLEI). 1–11.
Sinan Eski and Feza Buzluca. 2018. AnAutomatic Extraction Approach: Transition to Microservices Architecture from Monolithic Application. In Proceedings of the 19th International Conference on Agile Software Development: Companion (XP ’18). Association for Computing Machinery, New York, NY, USA, Article 25, 6 pages.
Jonas Fritzsch, Justus Bogner, Alfred Zimmermann, and Stefan Wagner. 2018. 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. Springer, 128–141.
Michael Gysel, Lukas Kölbener,Wolfgang Giersche, and Olaf Zimmermann. 2016. Service Cutter: A Systematic Approach to Service Decomposition. In Service-Oriented and Cloud Computing, Marco Aiello, Einar Broch Johnsen, Schahram Dustdar, and Ilche Georgievski (Eds.). Springer International Publishing, Cham, 185–200.
Antonia Hadjimichael, David Gold, David Hadka, and Patrick Reed. 2020. Rhodium: Python library for many-objective robust decision making and exploratory modeling. Journal of Open Research Software 8, 1 (2020).
H. Knoche and W. Hasselbring. 2018. Using Microservices for Legacy Software Modernization. IEEE Software 35, 3 (May 2018), 44–49.
Alessandra Levcovitz, Ricardo Terra, and Marco Tulio Valente. 2016. Towards a technique for extracting microservices from monolithic enterprise systems a technique for extracting microservices from monolithic enterprise systems. arXiv preprint arXiv:1605.03175 (2016).
Seng Loke. 2006. Context-aware pervasive systems: architectures for a new breed of applications. CRC Press.
G. Mazlami, J. Cito, and P. Leitner. 2017. Extraction of Microservices from Monolithic Software Architectures. In 2017 IEEE International Conference on Web Services (ICWS). 524–531.
Kim Mens, Rafael Capilla, Nicolás Cardozo, and Bruno Dumas. 2016. A taxonomy of context-aware software variability approaches. In Companion Proceedings of the 15th International Conference on Modularity. 119–124.
Kim Mens, Rafael Capilla, Herman Hartmann, and Thomas Kropf. 2017. Modeling and managing context-aware systems’ variability. IEEE Software 6 (2017), 58–63.
Kaisa Miettinen. 2012. Nonlinear multiobjective optimization. Vol. 12. Springer Science & Business Media.
Seyedali Mirjalili and Jin Song Dong. 2020. Multi-objective optimization using artificial intelligence techniques. Springer.
Hausi Müller and Norha Villegas. 2014. Runtime Evolution of Highly Dynamic Software. In Evolving Software Systems. Springer Berlin Heidelberg, Berlin, Heidelberg, 229–264.
Claus Pahl and Pooyan Jamshidi. 2016. Microservices: A Systematic Mapping Study. In Proceedings of the 6th International Conference on Cloud Computing and Services Science - Volume 1 and 2 (CLOSER 2016). SCITEPRESS - Science and Technology Publications, Lda, Portugal, 137–146.
Zhongshan Ren, Wei Wang, Guoquan Wu, Chushu Gao, Wei Chen, Jun Wei, and Tao Huang. 2018. Migrating web applications from monolithic structure to microservices architecture. In Proceedings of the Tenth Asia-Pacific Symposium on Internetware. 1–10.
Albert Brouillette, Devraj Sarmah, and Jugal Kalita. 2012. Multi-objective optimization for efficient brahmic keyboards. In Proceedings of the Second Workshop on Advances in Text Input Methods. 29–44.
Rafael Capilla, Óscar Ortiz, and Mike Hinchey. 2014. Context variability for context-aware systems. Computer 2 (2014), 85–87.
R. Chen, S. Li, and Z. Li. 2017. From Monolith to Microservices: A Dataflow-Driven Approach. In 2017 24th Asia-Pacific Software Engineering Conference (APSEC). 466–475.
Anind K Dey. 2001. Understanding and using context. Personal and ubiquitous computing 5, 1 (2001), 4–7.
Paolo Di Francesco, Patricia Lago, and Ivano Malavolta. 2019. Architecting with microservices: A systematic mapping study. Journal of Systems and Software 150 (2019), 77–97.
Nicola Dragoni, Schahram Dustdar, Stephan T Larsen, and Manuel Mazzara. 2017. Microservices: Migration of a mission critical system. arXiv preprint arXiv:1704.04173 (2017).
Benoît Duhoux, Kim Mens, and Bruno Dumas. 2019. Implementation of a featurebased context-oriented programming language. In Proceedings of the Workshop on Context-oriented Programming. 9–16.
Daniel Escobar, Diana Cárdenas, Rolando Amarillo, Eddie Castro, Kelly Garcés, Carlos Parra, and Rubby Casallas. 2016. Towards the understanding and evolution of monolithic applications as microservices. In 2016 XLII Latin American Computing Conference (CLEI). 1–11.
Sinan Eski and Feza Buzluca. 2018. AnAutomatic Extraction Approach: Transition to Microservices Architecture from Monolithic Application. In Proceedings of the 19th International Conference on Agile Software Development: Companion (XP ’18). Association for Computing Machinery, New York, NY, USA, Article 25, 6 pages.
Jonas Fritzsch, Justus Bogner, Alfred Zimmermann, and Stefan Wagner. 2018. 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. Springer, 128–141.
Michael Gysel, Lukas Kölbener,Wolfgang Giersche, and Olaf Zimmermann. 2016. Service Cutter: A Systematic Approach to Service Decomposition. In Service-Oriented and Cloud Computing, Marco Aiello, Einar Broch Johnsen, Schahram Dustdar, and Ilche Georgievski (Eds.). Springer International Publishing, Cham, 185–200.
Antonia Hadjimichael, David Gold, David Hadka, and Patrick Reed. 2020. Rhodium: Python library for many-objective robust decision making and exploratory modeling. Journal of Open Research Software 8, 1 (2020).
H. Knoche and W. Hasselbring. 2018. Using Microservices for Legacy Software Modernization. IEEE Software 35, 3 (May 2018), 44–49.
Alessandra Levcovitz, Ricardo Terra, and Marco Tulio Valente. 2016. Towards a technique for extracting microservices from monolithic enterprise systems a technique for extracting microservices from monolithic enterprise systems. arXiv preprint arXiv:1605.03175 (2016).
Seng Loke. 2006. Context-aware pervasive systems: architectures for a new breed of applications. CRC Press.
G. Mazlami, J. Cito, and P. Leitner. 2017. Extraction of Microservices from Monolithic Software Architectures. In 2017 IEEE International Conference on Web Services (ICWS). 524–531.
Kim Mens, Rafael Capilla, Nicolás Cardozo, and Bruno Dumas. 2016. A taxonomy of context-aware software variability approaches. In Companion Proceedings of the 15th International Conference on Modularity. 119–124.
Kim Mens, Rafael Capilla, Herman Hartmann, and Thomas Kropf. 2017. Modeling and managing context-aware systems’ variability. IEEE Software 6 (2017), 58–63.
Kaisa Miettinen. 2012. Nonlinear multiobjective optimization. Vol. 12. Springer Science & Business Media.
Seyedali Mirjalili and Jin Song Dong. 2020. Multi-objective optimization using artificial intelligence techniques. Springer.
Hausi Müller and Norha Villegas. 2014. Runtime Evolution of Highly Dynamic Software. In Evolving Software Systems. Springer Berlin Heidelberg, Berlin, Heidelberg, 229–264.
Claus Pahl and Pooyan Jamshidi. 2016. Microservices: A Systematic Mapping Study. In Proceedings of the 6th International Conference on Cloud Computing and Services Science - Volume 1 and 2 (CLOSER 2016). SCITEPRESS - Science and Technology Publications, Lda, Portugal, 137–146.
Zhongshan Ren, Wei Wang, Guoquan Wu, Chushu Gao, Wei Chen, Jun Wei, and Tao Huang. 2018. Migrating web applications from monolithic structure to microservices architecture. In Proceedings of the Tenth Asia-Pacific Symposium on Internetware. 1–10.
Publicado
07/06/2021
Como Citar
URDANGARIN, Roger Gonçalves; FARIAS, Kleinner; BARBOSA, Jorge.
Mon4Aware: A multi-objective and context-aware approach to decompose monolithic applications. In: SIMPÓSIO BRASILEIRO DE SISTEMAS DE INFORMAÇÃO (SBSI), 17. , 2021, Uberlândia.
Anais [...].
Porto Alegre: Sociedade Brasileira de Computação,
2021
.