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 informthat 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 propose a future research framework that outlines key problem dimensions and actionable study strategies to support the engineering of emergent and next-generation microservices systems.
翻译:许多中小型乃至大型组织已采用微服务架构(MSA)风格来开发和交付其核心业务。尽管MSA在软件行业中广受欢迎,但对于微服务系统开发者所遇到的问题类型(例如错误、故障、失效和缺陷)、问题的成因以及作为潜在修复策略的解决方案,目前仍缺乏基于证据的深入理解。为弥补这一不足,我们开展了一项混合方法的实证研究,数据来源包括:从GitHub上15个开源微服务系统的问题追踪系统中收集的2,641个问题、15次访谈,以及一项由来自六大洲42个国家的150名从业者完成的在线调查。我们的分析构建了关于问题、成因和解决方案的完整分类体系。研究结果表明:技术债务、持续集成与交付、异常处理、服务执行与通信以及安全性是微服务系统中最主要的问题类型。此外,通用编程错误、功能与构件缺失以及无效配置与通信是这些问题背后的主要成因。最后,我们归纳出177种可用于修复已识别问题的解决方案类型。基于研究结果,我们提出了一个未来研究框架,该框架勾勒了关键问题维度与可操作的研究策略,以支持新兴及下一代微服务系统的工程实践。