论文部分内容阅读
微服务架构是软件工程实践的最新趋势,2020年IDC(互联网数据中心)发布的行业分析报告指出,到2022年将会有90%的新软件系统使用微服务架构。作为一种新的架构风格,微服务架构通过将应用分解为小而独立的服务进行开发和部署,为软件系统带来可部署性和高可伸缩性等诸多优势。然而,微服务如果设计不合理,也会给软件系统的质量属性造成诸多负面影响。微服务架构设计目前仍然有很多问题亟待解决,尤其是如何将单体系统拆分为合适的微服务,是当前微服务实践中公认的难点。从科学的角度系统化地理解现有的微服务化拆分技术研究现状,探究微服务化拆分的实践模式,能够为相关领域的研究提供坚实的理论基础,并为实践者提供相应的决策支持。此外,面向微服务架构的软件系统来开发高效、灵活的微服务化拆分技术以支持合适粒度的微服务边界识别具有较高的研究价值和实践意义,这也是向微服务架构迁移过程中首先要解决的关键问题。相关问题的解决可以帮助实践者在落地实施微服务之前进行投资回报比的分析,并实现更加有效的微服务架构设计。尽管业界在上述问题上已经展开了较多的探索,但尚不成熟。目前的研究针对本文所关注的研究问题尚缺乏系统化的理解,且现有的方法在有效支持系统向微服务架构的迁移实践上还存在诸多问题,需要进一步探索和优化研究。为此,本文通过应用实证软件工程方法来开展面向单体系统微服务化拆分技术的探索性研究,从学术界和工业界分别收集相关证据来帮助深入理解微服务化拆分技术的分类模型和实践模式,继而提出一种系统化、高效、灵活、易用的微服务化拆分方法和技术支撑平台并进行评估,以指导面向微服务架构的单体系统的拆分实践,促进传统软件系统架构向微服务架构的平滑快速迁移。具体来讲,本文的主要研究内容、方法和贡献点如下:1.提出一种微服务化拆分技术的分类模型:本文通过系统化文献评价的方法建立关于微服务化拆分技术研究现状及分类的深入理解,包括拆分对质量属性的影响、技术类型和不足等,进而提出一种微服务化拆分技术的分类模型。该部分研究的贡献在于,发现并评价了微服务化拆分影响的六个关键质量属性,从实施微服务化拆分的三个主要阶段(单体系统分析和理解阶段、微服务边界确定阶段、候选微服务评估与验证阶段)建立技术分类模型,对比分析了现有技术的类型和特点,并讨论了微服务化拆分技术的四个不足之处(拆分方法的易用性、灵活性、普适性和评估体系的完善性)以及待攻关的研究方向。基于该部分研究所建立的理解可以为微服务架构的实践者提供理论支持,尤其是关于技术的不足和待研究方向的理解可以为本文后续深入研究合适粒度的微服务化拆分技术提供方向指引。2.探究微服务化拆分技术在工业界的实践模式框架:本文对不同领域实践微服务的企业开展基于深度访谈的探索性调查研究,深入探究了微服务化拆分在企业中的实践现状、模式及约束点。该部分的研究贡献在于,根据调研结果梳理了微服务化拆分实践的动机、收益与成本集合,提炼并建立了微服务化拆分的实践模式框架,包含三个单体系统分析和理解模式、七个微服务边界确定模式、三个系统重构和迁移模式,此外还发现了微服务化拆分在实践过程中的两个约束点,即微服务化拆分需要兼顾Database per Service原则以保证有效性,以及需要保证技术的易用性。在系统化文献评价研究的结果基础之上,该部分研究给本文进一步研究更加有效且易用的服务拆分技术提供了具备实践指导意义的模式框架,也可以帮助实践者合理决策并为其提供适当的实践经验参考。3.设计—种更加有效且易用的微服务化拆分方法:基于前两部分研究所建立的技术分类模型和实践模式框架,本文探索性提出一种数据流驱动的微服务化拆分方法(Data-Flow Driven Decomposition,DFD),旨在结合数据流图具备表示系统业务操作和存储的耦合关系的特性,实现兼顾Database per Service原则的有效的服务和数据库拆分。具体来讲,根据“高内聚、低耦合”的原则设计了一系列自定义的规则和算法,根据业务操作与存储的交互特点(耦合关系)对不同层级的数据流图使用算法进行服务拆分,从而帮助生成不同粒度的候选微服务和数据库拆分方案,以权衡微服务化拆分对于系统相关质量属性的负面影响。典型案例的应用和研究结果说明了本文所提出的DFD方法的有效性和易用性。4.实现一种增强的微服务化拆分技术及支撑平台:基于前一阶段所提出的微服务化拆分方法DFD的基本原理,本文从效率和灵活性方面对其进行改进优化,设计了一种增强的、更加高效灵活且兼顾数据存储的数据流驱动的服务拆分方法DFD-A,通过动静态分析技术相结合的方式来更准确、全面、高效地收集和自动分析能客观反映内聚和耦合关系的操作、数据交互信息,在此基础上构建带权图并实现两阶段的聚类算法来进行服务拆分。结合研究1和2中所探究的技术分类模型和实践模式框架,本文设计并实现了一个技术支撑原型平台,以帮助实践者使用增强的DFD-A方法完成微服务化拆分以及候选微服务的评估和自定义调整。案例研究结果说明,在保证拆分得到的候选微服务的有效性的基础上,本文所设计的增强的微服务化拆分方法DFD-A及实现的技术支撑原型平台更加高效且灵活。综上所述,本文系统性归纳了学术界和工业界当前微服务化拆分技术研究和实践现状,分别提出了微服务化拆分技术分类模型和拆分实践模式框架,继而针对单体软件系统提出、验证并实现了有效且易用的微服务化拆分方法和高效且灵活的技术支撑平台,为企业传统软件系统快速导入微服务架构提供拆分设计理论方法及工具支持,也为该领域的研究和技术进一步发展做出具有实践意义的贡献。