《Information and Software Technology》:Structural coupling metrics for microservice architectures with dependency weighting
编辑推荐:
中文摘要翻译
上下文. 微服务架构支持模块化和独立部署,但也引入了复杂的服务间依赖结构,可能增加变更传播的风险。现有耦合度量捕捉了服务连接性,但它们通常将依赖视为二元或可加性的,并且关于依赖方向、内部结构可达性以及交互中所涉及的被调用方逻辑比例提供的信息有限。
中文摘要翻译
上下文. 微服务架构支持模块化和独立部署,但也引入了复杂的服务间依赖结构,可能增加变更传播的风险。现有耦合度量捕捉了服务连接性,但它们通常将依赖视为二元或可加性的,并且关于依赖方向、内部结构可达性以及交互中所涉及的被调用方逻辑比例提供的信息有限。
目标. 本文旨在为面向对象的微服务系统提供一种更具表现力的结构耦合静态表征。目标是提供实现感知的指标,用于分析与架构可维护性评估相关的成对、传入和传出依赖模式。
方法. 研究人员引入了三个度量:用于成对耦合的微服务质量度量(Microservice Quality Measure,MQM)、用于传入依赖强度的传入微服务质量度量(afferent Microservice Quality Measure,aMQM)以及用于传出依赖强度的传出微服务质量度量(efferent Microservice Quality Measure,eMQM)。这些度量在类级别定义,并捕获了两个额外因素:内部类之间的距离以及调用方所使用的被调用方逻辑的比例。一项探索性评估在15个开源Java/Spring Boot微服务系统(包含100个服务)上进行。所提出的度量与已建立的参考度量进行了相关性分析、主成分分析和区分力评估的比较。
结果. 所提出的度量与已建立的耦合度量显示出强相关性,表明与现有的结构耦合指标具有一致性。同时,分析表明MQM、aMQM和eMQM通过区分具有不同内部结构特征的服务对和服务,提供了关于依赖结构的互补信息。在所分析的系统中,所提出的度量比选定的基线实现了更高的区分力,表明对考察数据集中的结构变化具有更高的敏感性。
结论. MQM、aMQM和eMQM构成了用于分析面向对象微服务架构中结构依赖模式的互补静态指标。它们通过捕获现有度量中仅部分反映的耦合方面,丰富了架构审查。由此产生的结构洞察可以在维护和演化活动期间支持架构审查。
论文解读文章
一、研究背景、问题与研究意义
随着软件系统复杂度的持续攀升,微服务架构(Microservice Architecture)因其在模块化、可扩展性和独立部署方面的显著优势,已成为分布式系统开发的主流范式之一。然而,这种架构风格在带来灵活性的同时,也编织了一张错综复杂的服务间依赖网络。这种依赖关系并非简单的“是否存在”问题,其结构性嵌入方式——即依赖深入到被调用方内部结构的程度、以及调用方使用了被调用方多大比例的实现逻辑——对系统的可维护性、变更传播风险乃至整体架构质量有着深远影响。
现有针对微服务系统的耦合度量(Coupling Metrics)虽然能够提供服务连通性和相对架构位置的重要信息,例如基于传入耦合(Afferent Coupling)和传出耦合(Efferent Coupling)的度量,以及微服务耦合指数族(Microservice Coupling Index Family),但它们普遍存在一个核心局限:主要运作于可见的服务层级关系或聚合的连接计数层面,有时会按服务规模进行归一化处理。这些度量通常不显式建模依赖在调用方或被调用方内部结构中的传播深度,也不衡量被调用方逻辑的实际参与比例。因此,两个在结构上截然不同的依赖情景可能会得到相似的度量值,导致对架构健康状况的误判。
正是为了填补这一空白,研究人员开展了此项研究。研究的目标是为面向对象的微服务系统提供一组更具表现力的静态结构耦合度量,旨在提供实现感知的指标,用于分析成对、传入和传出的依赖模式,从而更精准地支撑架构可维护性评估。该论文发表于《Information and Software Technology》。
二、关键技术方法概述
为实现上述目标,研究人员首先建立了一套形式化的基本概念,将微服务建模为一组类(Classes),并定义了类间关系、服务间关系等集合。在此基础上,提出了三个核心度量:微服务质量度量(Microservice Quality Measure,MQM)用于量化特定调用方-被调用方之间的成对耦合强度;传入微服务质量度量(afferent Microservice Quality Measure,aMQM)用于聚合传入依赖强度,表征一个服务被其他服务依赖的程度;传出微服务质量度量(efferent Microservice Quality Measure,eMQM)用于聚合传出依赖强度,反映一个服务对外部功能的依赖程度。这三个度量均在类级别定义,并纳入了三个核心维度:依赖方向、内部结构可达性以及调用方使用的被调用方逻辑比例。实证评估阶段,研究人员选取了15个开源的Java/Spring Boot微服务系统(共含100个服务)作为分析样本,通过与已建立的参考度量进行相关性分析(Correlation Analysis)、主成分分析(Principal Component Analysis,PCA)和区分力评估(Discriminative-Power Assessment)来验证新度量的有效性。
三、研究结果
结果一:与现有度量的一致性
相关性分析结果显示,所提出的MQM、aMQM和eMQM与已建立的结构耦合度量之间存在强相关性。这表明新度量在基础层面上与现有的结构耦合指标保持了内在一致,并非凭空产生,而是建立在已有理论基础之上。
结果二:提供互补的结构信息
主成分分析进一步揭示,MQM、aMQM和eMQM能够通过有效区分具有不同内部结构特征的服务对和服务个体,提供现有度量未能覆盖的、非冗余的结构信息。这意味着它们在捕捉依赖结构的细微差别方面具有独特价值。
结果三:更高的区分力
在所有被分析的15个系统中,所提出的三个度量均展现出比选定基线度量更高的区分力。这证实了新度量对所考察数据集中存在的结构变异具有更强的敏感性,能够更精细地区分不同的依赖配置情形。
四、讨论与结论总结
讨论部分总结:
论文的讨论部分指出,实证评估的结果应当被理解为在所分析的数据集内,新度量在结构一致性、非冗余性和区分粒度方面有效的证据。同时,研究人员也坦诚地指出了研究的局限性,包括:模型是静态的,不包含运行时属性如调用频率、延迟或故障传播;形式化模型是基于类的,适用于面向对象的实现(如Java/Spring Boot),但在应用于函数式、动态类型或API中心系统时需要适配。更广泛的、针对外部可维护性指标的验证被视为未来工作的重要方向。
研究结论翻译:
MQM、aMQM和eMQM构成了用于分析面向对象微服务架构中结构依赖模式的互补静态指标。它们通过捕获现有度量中仅部分反映的耦合方面,丰富了架构审查。由此产生的结构洞察可以在维护和演化活动期间支持架构审查。