Context: Microservices Architecture (MSA) has received significant attention in the software industry. However, little empirical evidence exists on design, monitoring, and testing of microservices systems. Objective: This research aims to gain a deep understanding of how microservices systems are designed, monitored, and tested in the industry. Method: A mixed-methods study was conducted with 106 survey responses and 6 interviews from microservices practitioners. Results: The main findings are: (1) a combination of domain-driven design and business capability is the most used strategy to decompose an application into microservices, (2) over half of the participants used architecture evaluation and architecture implementation when designing microservices systems, (3) API gateway and Backend for frontend patterns are the most used MSA patterns, (4) resource usage and load balancing as monitoring metrics, log management and exception tracking as monitoring practices are widely used, (5) unit and end-to-end testing are the most used testing strategies, and (6) the complexity of microservices systems poses challenges for their design, monitoring, and testing, for which there are no dedicated solutions. Conclusions: Our findings reveal that more research is needed to (1) deal with microservices complexity at the design level, (2) handle security in microservices systems, and (3) address the monitoring and testing challenges through dedicated solutions.
翻译:研究的目的是深入了解微服务系统是如何设计、监测和在该行业中测试的。方法:进行了混合方法研究,对106项调查作了答复,对微观服务从业人员进行了6次访谈。结果:主要结论是:(1) 将域驱动设计和业务能力结合起来,是用来分解微服务应用的最常用战略;(2) 一半以上的参与者在设计微服务系统时使用了建筑评价和建筑实施;(3) 远端模式的API网关和后端是最常用的管理服务模式;(4) 资源使用和负荷平衡,因为监测做法广泛使用,监测指标、日志管理和例外跟踪;(5) 单位和端对端测试是最常用的测试战略;(6) 微服务系统的复杂性对其设计、监测和测试构成挑战,而没有专门的解决办法。 结论:我们的调查结果表明,需要开展更多的研究,以便(1) 处理微服务复杂性测试;(3) 在设计层面处理微服务方面的具体挑战。