Many small to large organizations have adopted the Microservices Architecture (MSA) style to develop and deliver their core businesses. Despite the popularity of MSA in the software industry, there is a limited evidence-based and thorough understanding of the types of issues (e.g., errors, faults, failures, and bugs) that microservices system developers experience, the causes of the issues, and the solutions as potential fixing strategies to address the issues. To ameliorate this gap, we conducted a mixed-methods empirical study that collected data from 2,641 issues from the issue tracking systems of 15 open-source microservices systems on GitHub, 15 interviews, and an online survey completed by 150 practitioners from 42 countries across 6 continents. Our analysis led to comprehensive taxonomies for the issues, causes, and solutions. The findings of this study inform that Technical Debt, Continuous Integration and Delivery, Exception Handling, Service Execution and Communication, and Security are the most dominant issues in microservices systems. Furthermore, General Programming Errors, Missing Features and Artifacts, and Invalid Configuration and Communication are the main causes behind the issues. Finally, we found 177 types of solutions that can be applied to fix the identified issues. Based on our study results, we formulated future research directions that could help researchers and practitioners to engineer emergent and next-generation microservices systems.
翻译:众多中小型及大型组织已采用微服务架构(Microservices Architecture, MSA)风格来开发并交付其核心业务。尽管MSA在软件行业中广受欢迎,但关于微服务系统开发者所遇到的问题类型(例如错误、故障、失效及缺陷)、问题成因以及作为潜在修复策略的解决方案,目前仍缺乏基于证据的深入理解。为弥补这一空白,我们开展了一项混合方法的实证研究,从GitHub上15个开源微服务系统的问题追踪系统中收集了2,641个问题,进行了15次访谈,并完成了一项涵盖六大洲42个国家共150名从业者的在线问卷调查。我们的分析形成了关于问题、成因及解决方案的全面分类体系。研究结果表明:技术债务、持续集成与交付、异常处理、服务执行与通信以及安全性是微服务系统中最主要的问题。此外,通用编程错误、缺失功能与工件、以及无效配置与通信是这些问题的主要成因。最后,我们发现了177种可用于修复已识别问题的解决方案类型。基于研究结果,我们提出了有助于研究人员和从业者设计未来及下一代微服务系统的未来研究方向。