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.
翻译:众多中小型乃至大型组织已采用微服务架构风格来开发和交付其核心业务。尽管微服务架构在软件行业中广受欢迎,但对于微服务系统开发者所遇到的问题类型(例如错误、故障、失效和缺陷)、问题的成因以及作为潜在修复策略的解决方案,目前仍缺乏基于证据的、全面深入的理解。为弥补这一空白,我们开展了一项混合方法的实证研究,从GitHub上15个开源微服务系统的问题跟踪系统中收集了2,641个问题数据,进行了15次访谈,并完成了由来自六大洲42个国家的150名从业者参与的在线问卷调查。我们的分析构建了关于问题、成因及解决方案的综合分类体系。研究结果表明,技术债务、持续集成与交付、异常处理、服务执行与通信以及安全性是微服务系统中最主要的问题类型。此外,通用编程错误、缺失功能与工件、配置与通信无效是问题背后的主要成因。最后,我们发现了可用于修复所识别问题的177种解决方案类型。基于研究结果,我们提出了未来研究方向,以帮助研究人员和从业者工程化地构建新兴及下一代微服务系统。