Strategies for Mitigating Microservice Anti-Patterns in the Pre-Migration of Monolithic Legacy Systems
Resumo
This article analyzes strategies for mitigating antipatterns during the pre-migration phase of monolithic systems to microservices architectures. Using a multi-method research approach, the study examines the challenges and best practices involved in this transition. The research highlights that Domain-Driven Design (DDD) and the Strangler Fig Pattern are essential strategies for the gradual decomposition and migration of systems. Key success factors also include modularization, effective management of coupling, and the implementation of automated testing. The analysis emphasizes the importance of considering the specific context when selecting migration strategies. Overall, the study identified 25 strategies and concluded that these approaches, when applied in the pre-migration phase, can effectively mitigate antipatterns during the transition to microservices.
Referências
AWS (2024). Padrão de figo strangler - aws orientação prescritiva. [link].
Baeldung (2018). The dao pattern in java. [link].
Basili, V. and Rombach, H. (1988). The tame project: towards improvement-oriented software environments. IEEE Transactions on Software Engineering, 14(6):758–773.
Candela, I., Bavota, G., Russo, B., and Oliveto, R. (2016). Using cohesion and coupling for software remodularization. ACM Transactions on Software Engineering and Methodology (TOSEM), 25:1 – 28.
Carrasco, A., van Bladel, B., and Demeyer, S. (2018). Migrating towards microservices: migration and architecture smells. pages 1–6.
Cerny, T., Abdelfattah, A. S., Maruf, A. A., Janes, A., and Taibi, D. (2023). Catalog and detection techniques of microservice anti-patterns and bad smells: A tertiary study. Journal of Systems and Software, 206:111829.
Comella-Dorda, Wallnau, Seacord, and Robert (2000). A survey of black-box modernization approaches for information systems. In Proceedings 2000 International Conference on Software Maintenance, pages 173–183.
Cruzes, D. S. and Dyba, T. (2011). Recommended steps for thematic synthesis in software engineering. In 2011 International Symposium on Empirical Software Engineering and Measurement, pages 275–284.
Fan, C.-Y. and Ma, S.-P. (2017). Migrating monolithic mobile application to microservice architecture: An experiment report. In 2017 IEEE International Conference on AI Mobile Services (AIMS), pages 109–112.
Fowler, M. (2014). Microservices a definition of this new architectural term. [link].
Goel, A. (202). Choosing the right strategy to migrate your monolithic application to a microservices-based architecture. [link].
Gonçalves, M. M. (2023). Cqrs (command query responsibility segregation) em uma arquitetura de micro serviços. [link].
Huang, X., Lin, J., and Demner-Fushman, D. (2006). Evaluation of pico as a knowledge representation for clinical questions. AMIA ... Annual Symposium proceedings. AMIA Symposium, pages 359–363.
Hubers, T. (2021). How big is a microservice? [link].
Jambunathan, B. and Y., K. (2016). Multi cloud deployment with containers. 8:421–428.
Kamei, F., Wiese, I., Lima, C., Polato, I., Nepomuceno, V., Ferreira, W., Ribeiro, M., Pena, C., Cartaxo, B., Pinto, G., and Soares, S. (2021). Grey literature in software engineering: A critical review. Information and Software Technology, 138:106609.
Kazanavičius, J. and Mažeika, D. (2019). Migrating legacy software to microservices architecture. In 2019 Open Conference of Electrical, Electronic and Information Sciences (eStream), pages 1–5.
Khadka, R., Shrestha, P., Klein, B., Saeidi, A., Hage, J., Jansen, S., van Dis, E., and Bruntink, M. (2015). Does software modernization deliver what it aimed for? a post modernization analysis of five software modernization case studies. In 2015 IEEE International Conference on Software Maintenance and Evolution (ICSME), pages 477–486.
Knoche, H. and Hasselbring, W. (2019). Drivers and barriers for microservice adoption - a survey among professionals in germany. 14:1–35.
Kornilov, D. (2020). Monolithic to microservices: Design patterns to ensure migration success. [link].
Lavann, EdPrice, and neilpeterson (2021). Migrate a monolith application to microservices using domain-driven design. [link].
Li, S., Zhang, H., Jia, Z., Zhong, C., Zhang, C., Shan, Z., Shen, J., and Babar, M. A. (2021). Understanding and addressing quality attributes of microservices architecture: A systematic literature review. Information and Software Technology, 131:106449.
Macia, I., Garcia, J., Popescu, D., Garcia, A., Medvidovic, N., and von Staa, A. (2012). Are automatically-detected code anomalies relevant to architectural modularity? an exploratory analysis of evolving systems. In Proceedings of the 11th Annual International Conference on Aspect-Oriented Software Development, AOSD ’12, page 167–178, New York, NY, USA. Association for Computing Machinery.
Mahanta, P. and Chouta, S. (2020). Translating a Legacy Stack to Microservices Using a Modernization Facade with Performance Optimization for Container Deployments, pages 143–154.
Martin, M. (2023). Test driven development. [link].
Newman, S. and Reisz, W. (2020). Sam newman: Monolith to microservices. [link].
Richardson, C. (2016). Refactoring a monolith into microservices. [link].
Samokhin, V. (2018). Why microservices fail. [link].
Santos, N. and Rito Silva, A. (2020). A complexity metric for microservices architecture migration. In 2020 IEEE International Conference on Software Architecture (ICSA), pages 169–178.
Silva, H., Carneiro, G., and Monteiro, M. (2019). Towards a roadmap for the migration of legacy software systems to a microservice based architecture. pages 37–47.
Sitnikova, A. (2021). Monolith vs microservices: Everything you need to know. [link].
Solingen, R. and Berghout, E. (1999). The goal/question/metric method: A practical guide for quality improvement of software development.
Taibi, D., Lenarduzzi, V., and Pahl, C. (2020). Microservices anti-patterns: A taxonomy. Microservices: Science and Engineering, pages 111–128.
Villaca, G. (2024). Strategies to mitigate antipatterns in microservices.
Wolfart, D., Assunção, W. K. G., da Silva, I. F., Domingos, D. C. P., Schmeing, E., Villaca, G. L. D., and Paza, D. d. N. (2021). Modernizing legacy systems with microservices: A roadmap. In Evaluation and Assessment in Software Engineering, EASE 2021, page 149–159, New York, NY, USA. Association for Computing Machinery.