本文提出一种基于微服务架构的一体化教务系统架构并研究其关键问题,结合一体化教务理念,分析单块架构运行缺陷,给出教务系统向微服务架构转型的方案,研究微服务粒度与划分原则,并对新老教务系统迁移过程提出平滑过渡方法。
:面对新形势下高校教学业务改革以及本研一体化教务融合趋势,传统教务系统采用的单块架构已无法应对日益增长且快速变化的新需求。本文提出一种基于微服务架构的一体化教务系统架构并研究其关键问题,结合一体化教务理念,分析单块架构运行缺陷,给出教务系统向微服务架构转型的方案,研究微服务粒度与划分原则,并对新老教务系统迁移过程提出平滑过渡方法。最后通过同济大学教务系统实际案例,具体展示微服务架构转型实践中的实施方案。
一、引言
围绕创建世界一流大学的目标,高校教学改革日新月异,如:人才分类培养模式、本科新生导师制、本研课程互选、拔尖学生培养实验计划、大类招生改革、国际交流合作创新等。同时,目前高校的本科生、研究生教务管理仍处于相对分散独立的状态,且相应的教务管理系统大多采用传统的单块架构或SOA架构。这导致教务管理系统的需求响应速度已赶不上高校业务需求变化速度,且无法支撑实现充分的教育资源共享。
微服务(Microservices)架构作为当下流行的一种云原生的软件架构风格,能够以更加灵活、轻便、松耦合的方式来构建复杂的应用[3],为传统教务系统单块架构的转型,提供了可行的技术路线。本文基于微服务架构对传统单块型教务系统的架构转型进行研究,按照微服务架构思想,拆分一体化教务系统为多个小而自治、协同工作的服务实体,化大而复杂为小而简单,有效降低系统业务逻辑之间的耦合,提升系统的灵活性与扩展性,使其能够有效支撑本研业务融合与一体化教务系统建设工作。
二、一体化教务理念
1.理念思想
一体化教务理念涵盖对本科生、研究生的统一教务管理思想,追求本、硕、博教学资源的统一调配与共享。整体规划本研教学业务,以一体化教学模型和数据为基础,一体化服务和管理为导向,以稳定开放的平台为运行支撑,借助弹性灵活的系统架构,搭建柔性伸缩应用,打通高校各部门业务,实现跨部门业务融合与数据共享,构建一体化教学服务平台,实现本研教育贯通式培养[1]。
2.具体表现形式
(1)模型数据一体化。整体构建教学业务模型数据,综合设计本研学生的一体化数据结构,利用数据交换引擎实现数据集成、共享,构建统一教学数据库。采用连续信息模型,实现数据分段式管理,按需组装,能够展现学生教学信息全貌与全生命周期下的教学事件节点等。划分业务模型,包含资源类与功能类。资源类模型包含教学业务实体,相对独立,不相互依赖,属于下层模型,包括人员全生命周期、课程等;功能类模型依赖于资源类模型,属于上层模型,其与教务业务紧密结合,包括学籍管理、培养方案、排课、选课、考试、成绩等。
(2)服务管理一体化。基于一体化教务整体规划,突出学生培养模式和教学管理个性化特点,对本研教务从顶层设计角度进行业务融合,形成整套一体化教学管理与服务系统。采用灵活的微服务架构,建设服务中心,实现教学服务注册、管理、发布、监控等。构建优质、稳定、高效的信息化教学服务体系,为教职工、学生提供“一站式”的教学服务,提供服务搜索、收藏、定制功能以及跨终端的服务体验。
(3)教学资源一体化。统一管理本、硕、博的课程、教师、教室、设备等教学资源,合理调配师生教学业务运行过程中的资源流转,实现资源共享与资源利用率最优化。
(4)应用开发一体化。构建校园教学服务应用的基础支撑平台,打造应用开发生态圈,提供应用服务全生命周期管理。面向校内应用开发者、体验者全面开放平台,提供标准接口。支持与公共数据平台、校园卡等其它业务系统无缝对接。
(5)界面入口一体化。提供统一的本科生、研究生访问入口,集成高校内部统一身份认证,支持和其它校内系统之间的SSO单点登录,面向不同身份用户提供风格一致的界面效果和使用体验。
(6)报表统计一体化。提供一体化的报表统计功能,对本、硕、博学生和教职工等各项评价、监控指标提供丰富的报表统计功能,提供师生学习效果和教学质量等信息,为学校调整人才培养方案提供决策支持。[2]
三、微服务架构简介
1.微服务架构定义
微服务架构是当下流行的软件架构风格。[3]该架构将复杂的单块应用分解成一组小而专一、耦合度低、高度自治的服务;每个服务围绕各自业务功能确定服务边界,独立开发、测试、部署;每个服务都是单独的应用,运行于独立进程中;使用和语言无关的轻量级通信机制,相互协同工作实现完整系统功能;每个服务仅关注和完成某个特定功能,一个功能代表一个小的业务能力。
2.微服务架构优势
微服务架构通过有效拆分复杂单块应用,降低系统耦合度,从而实现应用敏捷开发和灵活扩展。越是在规模庞大的软件项目中,微服务架构优势就越明显。[4]首先体现在独立性方面,每个服务都是松散耦合的,有明确的业务边界,低耦拆分的服务在开发、测试、部署阶段都能带来更高效率,使业务变更成本与风险更低。其次是技术选择更为灵活,由于微服务采用语言无关的API进行相互通信,因而不同服务可以针对业务特性和团队技能使用不同语言框架进行开发,使得技术转型成本降低。再次是系统复用性和伸缩性更强,微服务能将已有代码、对象和模块的复用转变为服务的复用,降低项目成本,并可针对特定服务独立伸缩。最后是服务容错性更高,微服务通常使用Docker容器独立部署,进程隔离,每个服务独立运行,某个服务出现故障也不会影响其它服务正常工作。[5]
四、微服务架构在一体化教务系统中的应用
1.传统教务系统架构与缺陷
高校传统教务系统由于架构形成时期较早,因此大多采用单块架构,如图1所示。系统仅以实现业务功能为目的,将所有功能集中在同一工程内部,业务逻辑耦合紧密。随着教学业务改革,单块架构下的教务系统缺点也愈发明显:①需求变更困难。无法满足新业务需求快速上线,难以在原有复杂工程上开发新功能。②扩展性差。只能基于整个系统扩展,无法针对特定功能模块按需扩展。③可靠性差。某个模块故障会导致整个系统宕机,影响其它正常模块运行。④维护成本高。只有原开发者才理解工程结构和实现,新成员难以维护工程。
2.微服务架构转型方式
单块架构无法应对本研一体化教务融合所带来的复杂性,为此采用微服务对其进行架构转型。如图2所示,左侧为传统教务系统单块架构,所有功能模块均运行于单个进程内,紧耦合,不易扩展,灵活性差;右侧为转型后的教务系统微服务架构,不同业务作为服务分散于不同进程中,每个服务进程功能完整且独立自治,能够单独输出业务能力,松耦合,易于扩展且更为灵活。随着一体化教务理念带来的系统重组与业务融合,教务系统业务复杂度将不断增大,此时采用微服务架构所带来的松耦合优势将愈发明显。
3.微服务架构平滑过渡
微服务架构转型需要注意新老系统之间的平滑过渡,保证业务流程协同,最终实现新老系统完全替换。老系统迁移过渡可参考下述步骤:①定义范围。明确业务改造范围,选取业务范围影响较小、非关键功能进行业务试点,明确成员责任范围,确保改造目标清晰。②功能剥离。将功能从原系统拆分出来,并构建新服务,在原系统前端使用代理机制,使用遗留系统和新服务组合为用户提供服务。③数据解耦。从原有单块架构数据库中剥离相关业务数据,尽量满足对于每个服务有独立、隔离的业务数据库。④数据同步。对于复杂业务逻辑,改造时间和成本较大,可能在较长时间内,由于新服务独立出来导致无法同其它现有系统协作,此时可采用将新服务中的业务数据同步回原系统数据库中,保障原有功能可继续使用。
五、微服务粒度与服务划分原则
1.微服务粒度
服务划分是微服务架构实施的重要一步,良好的服务拆分能使系统保持松耦合、高内聚。服务划分旨在“按照业务领域组件创建服务,使服务独立开发、管理和扩展”,即对业务领域功能按照组件形式进行拆分,其关键是业务领域组件所含业务边界大小,即服务粒度。
合理的服务粒度是保证微服务架构高效运行的重要因素。粒度过细会导致服务数量过多,交互关系复杂,系统集成效率和可用性降低,后期难以维护;反之,粒度太粗,会导致解耦不足,多个服务逻辑相互耦合,无法满足上层对某个细分服务的使用需求,缺乏灵活性。因此,服务粒度太细或太粗均不合理,原则上应根据业务需求,能够满足上层对所划分服务自由编排从而获得更多业务能力。