Microservices team practices: a systematic mapping study
DOI:
https://doi.org/10.32870/recibe.v10i1.218Keywords:
Microservice Architecture, Development Practices, Systematic Mapping, Thematic SynthesisAbstract
Due to the growing adoption of Microservices Architecture, a style that emphasizes the division of systems into a collection of small services with a single responsibility, there is a need to build this type of system with quality and to adapt the practices of development teams to achieve better scalability, maintainability, ease of deployment as well as greater agility and a clear separation of interests. As with other types of systems, the development of microservices brings with it different challenges that organizations must face. These challenges are related to the technical side and imply a change in the practices and organization of the development teams. This study aims to analyze the development practices carried out by the teams, the way they are organized, and the challenges they face during the development of microservices. Following a systematic literature mapping process, 26 primary studies were collected and analyzed through a thematic synthesis. The results show that teams tend to be small and cross-functional. Their practices are related to an agile and independent culture, complemented by decentralized governance and independent lifecycle models. The challenges are related to the complexity of the domain, specific aspects of the organization, and the skills that developers must-have. In conclusion, the importance of the characteristics of an organization and its development teams, the close relationship that a DevOps culture has with the development of microservices, independence, and decomposition are vital aspects that must be taken into account, and several challenges were detected where the human factor plays an important role.References
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