Prácticas de los equipos de desarrollo de microservicios: un mapeo sistemático de la literatura
DOI:
https://doi.org/10.32870/recibe.v10i1.218Palabras clave:
Arquitectura de microservicios, Prácticas de desarrollo, Mapeo sistemático, Síntesis temáticaResumen
Debido a la creciente adopción de la Arquitectura de Microservicios, estilo que hace énfasis en la división de los sistemas en una colección de pequeños servicios con una sola responsabilidad, existe una necesidad de construir este tipo de sistemas con calidad y de adaptar las prácticas de los equipos de desarrollo para alcanzar una mejor escalabilidad, mantenibilidad, facilidad de despliegue así como una mayor agilidad y una clara separación de intereses. Al igual que con otro tipo de sistemas, el desarrollo de microservicios trae consigo diferentes retos que las organizaciones deben enfrentar. Dichos retos no solo tienen que ver con la parte técnica, sino que también implica un cambio en las prácticas y organización de los equipos de desarrollo. El objetivo de este estudio es analizar las prácticas de desarrollo que llevan a cabo los equipos, la forma en que estos se organizan y los retos que enfrentan durante el desarrollo de microservicios. Siguiendo un proceso de mapeo sistemático de la literatura se recopilaron 26 estudios primarios los cuales fueron analizados mediante una síntesis temática. Los resultados muestran que los equipos tienden a ser pequeños y multifuncionales, las prácticas que realizan están relacionadas con una cultura ágil y de independencia, lo que se complementa con los modelos de gobernanza descentralizada y ciclo de vida independiente. Los retos se relacionan con la complejidad del dominio, aspectos específicos de la organización y las habilidades que los desarrolladores deben de tener. Como conclusión se obtuvo la importancia de las características de una organización y sus equipos de desarrollo, la estrecha relación que tiene una cultura DevOps con el desarrollo de microservicios, la independencia y descomposición son aspectos clave que deben tomarse en cuenta y se detectaron diversos retos donde el factor humano juega un papel importante.Citas
Ahmad, N., Naveed, Q. N., & Hoda, N. (2018). Strategy and procedures for Migration to the Cloud Computing. 2018 IEEE 5th International Conference on Engineering Technologies and Applied Sciences (ICETAS), 1–5. https://doi.org/10.1109/ICETAS.2018.8629101
AWS. (2020). Deployment Strategies - Introduction to DevOps on AWS.
Bogner, J., Fritzsch, J., Wagner, S., & Zimmermann, A. (2019). Microservices in Industry: Insights into Technologies, Characteristics, and Software Quality. 2019 IEEE International Conference on Software Architecture Companion (ICSA-C), 187–195. https://doi.org/10.1109/ICSA-C.2019.00041
Bucchiarone, A., Dragoni, N., Dustdar, S., Larsen, S. T., & Mazzara, M. (2018). From Monolithic to Microservices: An Experience Report from the Banking Domain. IEEE Software, 35(3), 50–55. https://doi.org/10.1109/MS.2018.2141026
Buchgeher, G., Winterer, M., Weinreich, R., Luger, J., Wingelhofer, R., & Aistleitner, M. (2017). Microservices in a Small Development Organization. En A. Lopes & R. de Lemos (Eds.), Software Architecture (pp. 208–215). Springer International Publishing. https://doi.org/10.1007/978-3-319- 65831-5_15
Conway, M. E. (1968). How do committees invent. Datamation, 14(4), 28–31.
Cruzes, D. S., & Dyba, T. (2011). Recommended Steps for Thematic Synthesis in Software Engineering. 2011 International Symposium on Empirical Software Engineering and Measurement, 7491, 275–284. https://doi.org/10.1109/ESEM.2011.36
Di Francesco, P., Lago, P., & Malavolta, I. (2019). Architecting with microservices: A systematic mapping study. Journal of Systems and Software, 150(April), 77–97. https://doi.org/10.1016/j.jss.2019.01.001
Di Francesco, P., Lago, P., & Malavolta, I. (2018). Migrating Towards Microservice Architectures: An Industrial Survey. 2018 IEEE International Conference on Software Architecture (ICSA), 29–2909. https://doi.org/10.1109/ICSA.2018.00012
Dieste, O., Grimán, A., & Juristo, N. (2009). Developing search strategies for detecting relevant experiments. Empirical Software Engineering, 14(5), 513–539. https://doi.org/10.1007/s10664-008- 9091-7
Dybå, T., & Dingsøyr, T. (2008). Empirical studies of agile software development: A systematic review. Information and Software Technology, 50(9), 833–859. https://doi.org/https://doi.org/10.1016/j.infsof.2008.01.006
Fan, C.-Y., & Ma, S.-P. (2017). Migrating Monolithic Mobile Application to Microservice Architecture: An Experiment Report. 2017 IEEE International Conference on AI & Mobile Services (AIMS), 109 112. https://doi.org/10.1109/AIMS.2017.23
Fowler, S. J. (2016). Production-Ready Microservices: Building Standardized Systems Across an Engineering Organization (1st ed.). O’Reilly Media, Inc.
Francesco, P. Di, Malavolta, I., & Lago, P. (2017). Research on Architecting Microservices: Trends, Focus, and Potential for Industrial Adoption. 2017 IEEE International Conference on Software Architecture (ICSA), 21–30. https://doi.org/10.1109/ICSA.2017.24
Fritzsch, J., Bogner, J., Wagner, S., & Zimmermann, A. (2019). Microservices Migration in Industry: Intentions, Strategies, and Challenges. 2019 IEEE International Conference on Software Maintenance and Evolution (ICSME), 481–490. https://doi.org/10.1109/ICSME.2019.00081
Garriga, M. (2018). Towards a Taxonomy of Microservices Architectures. En A. Cerone & M. Roveri (Eds.), Software Engineering and Formal Methods (pp. 203–218). Springer International Publishing. https://doi.org/10.1007/978-3-319-74781-1_15
Ghofrani, J., & Bozorgmehr, A. (2019). Migration to Microservices: Barriers and Solutions. En H. Florez, M. Leon, J. M. Diaz-Nafria, & S. Belli (Eds.), Applied Informatics (pp. 269–281). Springer International Publishing. https://doi.org/10.1007/978-3-030-32475-9_20
Gundelsby, J. H. (2018). Enabling autonomous teams in large-scale agile through architectural principles. Proceedings of the 19th International Conference on Agile Software Development: Companion, 1–4. https://doi.org/10.1145/3234152.3234183
Hassan, S., Bahsoon, R., & Kazman, R. (2020). Microservice transition and its granularity problem: A systematic mapping study. Software: Practice and Experience, 50(9), 1651–1681. https://doi.org/10.1002/spe.2869
Idoughi, D., Abdelouhab, K. A., & Kolski, C. (2017). Towards a microservices development approach for the crisis management field in developing countries. 2017 4th International Conference on Information and Communication Technologies for Disaster Management (ICT-DM), 1–6. https://doi.org/10.1109/ICT-DM.2017.8275679
Kalske, M., Mäkitalo, N., & Mikkonen, T. (2018). Challenges When Moving from Monolith to Microservice Architecture. En I. Garrigós & M. Wimmer (Eds.), Current Trends in Web Engineering (pp. 32–47). Springer International Publishing. https://doi.org/10.1007/978-3-319-74433-9_3
Larrucea, X., Santamaria, I., Colomo-Palacios, R., & Ebert, C. (2018). Microservices. IEEE Software, 35(3), 96–100. https://doi.org/10.1109/MS.2018.2141030
Lotz, J., Vogelsang, A., Benderius, O., & Berger, C. (2019). Microservice Architectures for Advanced Driver Assistance Systems: A Case-Study. 2019 IEEE International Conference on Software Architecture Companion (ICSA-C), 45–52. https://doi.org/10.1109/ICSA-C.2019.00016
Luz, W., Agilar, E., de Oliveira, M. C., de Melo, C. E. R., Pinto, G., & Bonifácio, R. (2018). An experience report on the adoption of microservices in three Brazilian government institutions. Proceedings of the XXXII Brazilian Symposium on Software Engineering - SBES ’18, 32–41. https://doi.org/10.1145/3266237.3266262
O’Connor, R. V., Elger, P., & Clarke, P. M. (2016). Exploring the impact of situational context. Proceedings of the International Conference on Software and Systems Process, 6–10. https://doi.org/10.1145/2904354.2904368
Pahl, C., & Jamshidi, P. (2016). Microservices: A Systematic Mapping Study. Proceedings of the 6th International Conference on Cloud Computing and Services Science, 1(Closer), 137–146. https://doi.org/10.5220/0005785501370146
Ponce, F., Márquez, G., & Astudillo, H. (2019). Migrating from monolithic architecture to microservices: A Rapid Review. 2019 38th International Conference of the Chilean Computer Science Society (SCCC), 1–7. https://doi.org/10.1109/SCCC49216.2019.8966423
Premchand, A., & Choudhry, A. (2018). Architecture Simplification at Large Institutions using Micro Services. 2018 International Conference on Communication, Computing and Internet of Things (IC3IoT), 30–35. https://doi.org/10.1109/IC3IoT.2018.8668173
Salah, T., Jamal Zemerly, M., Chan Yeob Yeun, Al-Qutayri, M., & Al-Hammadi, Y. (2016). The evolution of distributed systems towards microservices architecture. 2016 11th International Conference for Internet Technology and Secured Transactions (ICITST), 318–325. https://doi.org/10.1109/ICITST.2016.7856721
Soldani, J., Tamburri, D. A., & Van Den Heuvel, W.-J. (2018). The pains and gains of microservices: A Systematic grey literature review. Journal of Systems and Software, 146, 215–232. https://doi.org/10.1016/j.jss.2018.09.082
Sousa, P. S. de, Nogueira, N. P., Santos, R. C. dos, Maia, P. H. M., & Souza, J. T. de. (2020). Building a prototype based on Microservices and Blockchain technologies for notary’s office: An academic experience report. 2020 IEEE International Conference on Software Architecture Companion (ICSA-C), 122–129. https://doi.org/10.1109/ICSA-C50368.2020.00031
Srikaew, P., & Kim, I. (2017). A microservice development for document management system. 2017 4th International Conference on Computer Applications and Information Processing Technology (CAIPT), 1–4. https://doi.org/10.1109/CAIPT.2017.8320721
Taibi, D., Lenarduzzi, V., & Pahl, C. (2017). Processes, Motivations, and Issues for Migrating to Microservices Architectures: An Empirical Investigation. IEEE Cloud Computing, 4(5), 22–32. https://doi.org/10.1109/MCC.2017.4250931
Taibi, D., Lenarduzzi, V., Pahl, C., & Janes, A. (2017). Microservices in agile software development. 1–5. https://doi.org/10.1145/3120459.3120483
Wang, Y., & Kadiyala, H. (2020). Promises and Challenges of Microservices : an Exploratory Study. 1–45.
Waseem, M., & Liang, P. (2017). Microservices Architecture in DevOps. 2017 24th Asia-Pacific Software Engineering Conference Workshops (APSECW), 13–14. https://doi.org/10.1109/APSECW.2017.18
Waseem, M., Liang, P., & Shahin, M. (2020). A Systematic Mapping Study on Microservices Architecture in DevOps. Journal of Systems and Software, 170, 110798. https://doi.org/10.1016/j.jss.2020.110798
Zhang, H., Li, S., Jia, Z., Zhong, C., & Zhang, C. (2019). Microservice Architecture in Reality: An Industrial Inquiry. 2019 IEEE International Conference on Software Architecture (ICSA), 51–60. https://doi.org/10.1109/ICSA.2019.00014