铁路统一开发测试平台体系架构及技术路线的研究

2019-01-03 08:21爽,杜巍,孙
铁路计算机应用 2018年12期
关键词:门户路线统一

任 爽,杜 巍,孙 美

(中国铁路信息科技有限责任公司,北京 100038)

传统IT企业或大中型企业IT部门的软件研发测试架构一般采取“一项目一环境”模式,此模式具有项目针对性强、单项目构建成本低的优点。但是,随着企业的业务不断增长和信息系统项目不断增多,特别是在项目研发初期的设备采购、环境搭建和项目执行过程中的流程控制上,这种模式存在很多缺陷[1]。随着信息化的迅猛发展和互联网的高速增长,企业对应用软件研发测试的速度、效率和质量要求越来越高,传统开发测试架构模式已不适应信息化快速发展的需要[2]。

铁路总公司发布的《铁路信息化总体规划》[3]中关于信息基础设施平台规划明确提出“引入云计算技术,建设基于云平台的开发测试平台,向全路提供统一的开发测试云环境,实现开发测试资源共享,提高开发测试标准化、规范化水平,提升业务应用系统开发测试环境部署效率”的目标。为此,本文提出基于云平台的铁路统一开发测试平台体系架构。利用源代码开发、自动化部署等技术,优化软件开发测试流程,实现应用集中开发管理、资源自动分配、软件自动部署、持续测试、软件快速发布等功能[4-6],为铁路信息系统开发、测试提供新模式。

1 统一开发测试平台体系架构

1.1 体系架构设计

为了进一步提升铁路应用自动化水平和创新能力,围绕如何从资源、应用、服务等多个维度支撑开发测试环境,对应用开发测试过程中项目管理、弹性供应、自动化部署、自动化测试、统一配置展开相关的研究和设计,体系架构设计如图1所示。

图1 统一开发测试平台体系架构

1.1.1 门户层

统一门户采用松耦合架构,为开发测试平台提供了统一的访问入口,提供自服务门户和管理门户;自服务门户面向业务使用人员提供了服务的申请、查看、使用等能力,为用户提供多样化的开发测试服务,包含项目管理、开发工具、测试工具、应用部署等服务;管理门户面向平台管理人员提供开发测试服务的统计、审批、定制、订单管理、系统维护等能力。

1.1.2 平台支撑层

项目生命周期管理为软件开发过程中相关人员提供统一的工作平台,包括项目管理、需求管理、任务管理、开发测试管理、缺陷问题管理、持续集成、文档管理、事务组织管理、统计功能、搜索功能等,实现软件开发与项目全过程的管理。具体管理流程如图2所示。

图2 项目管理流程

1.1.3 环境运行支撑层

运行环境基于基础设施云平台为开发测试平台提供PaaS层服务,包括Web服务器、应用服务器、消息中间件和数据库服务器。

基础设施云平台向开发测试平台提供对所有基础设施的利用,包括CPU、内存、存储、网络和其它基本IT资源,用户可按实际需要自由部署操作系统或应用程序。开发测试平台无需管理或控制任何基础设施,云平台可灵活提供、调整计算、存储和网络资源,满足开发测试平台需求。

PaaS层通过创建标准模板及接口封装,提供信息系统开发、运行时平台环境,帮助提高开发、测试、生产环境的部署效率;开发测试平台在PaaS层之上完成应用系统开发、配置和部署。

1.2 技术架构

基于云计算技术,建设铁路统一化、标准化、自动化的开发测试平台,实现开发测试资源共享,提升应用系统开发测试的环境部署效率,面向全路提供统一共享的开发测试云环境。铁路开发测试平台技术架构设计如图3所示。

1.2.1 门户管理

(1)自服务门户

图3 统一开发测试平台技术架构

自服务门户能够为最终用户构建一个多样化的综合服务门户,提供申请资源和审批服务,其中,审批流程可针对不同服务设置相应流程,包括门户内容管理、服务目录、消息通知、服务搜索和服务生命周期。

(2)管理门户

管理门户以应用运维为核心,提供应用节点管理、应用分区管理、交付件仓库管理、存储管理、后端服务接入与发布等,包括服务注册、服务发布/取消、服务访问控制、服务监控统计和流程审批。

1.2.2 开发测试平台云

(1)项目管理

项目管理为项目过程提供专业的知识库、技能分工、管理工具,在有限的资源条件下按用户期望完成项目的最终目标,包括项目的生命周期管理、风险管理、文档管理、任务管理、问题管理等功能。

(2)需求和变更管理

需求管理是开发测试平台的一个重要组成模块,应能够快速高效地对需求进行全周期管理。主要包括:定义需求属性、需求内容、需求流程、需求报表、需求跟踪矩阵、需求生成任务、需求版本管理。

(3)开发管理

开发测试平台中提供统一的交付模式,存在差异的应用环境应根据业务特性提供不同的部署方案,并且针对部署过程依赖的部署包进行统一管理。包括开发框架管理和开发工具管理,提供支持Java、.NET、Python等各语言环境,可自动构建,内置常用开发工具,覆盖在开发过程中涉及的代码管理、编译打包、集体开发环境(IDE)开发、部署发布。

(4)配置管理

配置管理解决开发测试环境下配置项统一管理问题,将项目中通用的配置项在配置中心进行统一管控,从而实现多业务应用的配置统一发布,配置变更实时推送。主要包括:运行环境配置、应用组件配置、配置仓库、部署配置和配置审计。

(5)持续集成管理

持续集成管理让开发团队持续生产可靠软件,审视软件质量,提升交付速度。提供代码托管、开发流水线、设置构建策略、管理构建依赖文件、自动化测试、生成交付件策略等功能。

(6)测试管理

根据铁路开发测试平台的测试管理要求,通过测试模块可以形成快速交付体系,帮助铁路用户进行自动化测试,构建应用全覆盖的测试体系。测试管理包括单元测试、系统测试、集成测试、功能测试、性能测试、安全测试6个方面。

(7)缺陷管理

缺陷管理是在软件开发过程中针对软件缺陷的识别、沟通、修复、关闭的处理过程,开发测试平台的缺陷管理包括软件缺陷申请、缺陷监管、缺陷处理、缺陷库、指派通知等功能,实现对信息运行缺陷的全过程管理。

2 平台关键技术

2.1 源代码开发技术

基于在线IDE的源码开发技术进行研究,在线编程技术涉及Web前端以及后端编译系统。Web前端需要识别开发语言类型(如Java、PHP、.net等),提供用户代码录入、行号、高亮语法、自动补全等功能。后端编译系统接收到用户的代码,判断用户的代码运行环境,并调用正确的编译器进行编译并将结果返回前端进行显示。在线IDE工具包括Web入口、编辑器、汇编器 (面向CPU或指令集)、编译器 (面向不同语言) 同时充当预编器、链接器、源码构建工具,其过程如图4所示。

2.2 持续集成技术

图4 在线IDE开发过程

持续集成是一种软件开发实践,它倡导团队开发成员经常集成开发测试运维的全生命周期,甚至每天都可能发生多次集成。而每次的集成都是通过自动化的构建来验证,包括自动编译、发布和测试,从而尽快地发现集成错误,让团队能够更快地开发内聚的软件。

2.3 自动化部署技术

自动化部署技术是以用户自定义的部署要求将应用需要的环境进行快速构建,部署过程不需要用户手动干预,并且能够根据应用的负载情况,自动选择部署策略,对部署过程进行实时反馈[7]。其原理如图5所示。

图5 自动化部署原理

2.4 流程编排技术

流程编排技术使用基于业务流程建模符号(BPMN,Business Process Modeling Notation)的自定义流程开发技术。BPMN定义了一个可视化的事件流程,该流程可用于创建业务流程操作的图形化模型。业务流程图由一系列的图形化元素组成。这些元素简化了模型的开发,且可让使用者便于理解和操作。

2.5 基于云计算资源优化技术

应用资源优化技术主要针对应用集群的负载过大。开发测试平台能够动态扩展应用的实例,以支撑应用能够正常承载访问情况,保障应用的持续、健康运行。该技术主要依靠弹性伸缩和动态资源管理实现,为应用实现了真正意义上的资源按需分配。资源优化技术涉及到的技术点包括:弹性伸缩策略条件、策略解析器、弹性伸缩行为、资源动态调度等几个方面,弹性伸缩主要由监控技术来发现负载的情况,并根据负载对应的策略条件来触发弹性伸缩行为。

2.6 云计算访问控制技术

云访问控制技术,指防止对任何云资源进行未授权的访问,从而使开发测试平台在合法的范围内使用[8]。借助用户身份及其所归属的某项定义组来限制用户对某些信息项的访问,或限制对某些控制功能的使用,如基于角色的权限访问控制(RBAC)、UniNAC网络准入控制的原理就是基于此技术之上。

3 原型平台技术路线选择

3.1 技术路线分析

技术路线分为两种:(1)商业软件平台+开源软件+自主研发路线,商业软件平台采用Atlassian公司开发的工具集,其工具集能够完成统一认证缺陷跟踪、需求收集、流程审批、任务跟踪、项目跟踪,知识库管理,持续集成,代码检测,代码托管等功能;采用开源Docker&K8S平台完成开发管理的功能;自研或使用开源ansible自动化部署工具使Atlassian工具集和K8S平台进行联动。(2)开源+自主研发路线:各个功能模块均使用目前较为流行的开源软件,包括TestLink,gitlab,redmine,Docker等,各软件基本能够完成开发测试平台所涉及到的功能,但是有些软件之间没有实现数据流的自动流转,需要二次开发。两种技术路线对比如表1所示。

表1 两种技术路线对比表

因为商用产品采用闭源形式,有些不满足统一测试平台的功能不能被修改,不能做到自主可控,且费用不菲,开发测试原型平台搭建采用开源+自主研发的技术路线。

3.2 原型平台技术路线

结合开发测试平台体系架构设计、关键技术及技术路线分析,基于“铁信云”的统一开发测试平台原型技术路线如图6所示。

图6 原型平台技术路线

(1)原型以Redmine工具与各模块进行对接,对接模块包括Testlink,Gitlab,jenkins。

(2)Redmine工具完成项目管理域需求管理的功能,TestLink工具完成缺陷管理的功能,Gitlab工具完成代码管理功能,Jenkins工具完成持续集成的功能。

(3)sourceTree作为代码管理客户端与Gitlab对接,Jenkins与Sonar Qube,Gitlab,Robot Framework集成,完成代码持续审查,自动化测试。

(4)通过ansible自动脚本调用Docker或K8S,完成自动化部署,同时,Docker能够提供标准化的测试工具。通过轻量目录访问协议(LADP)进行用户认证。

4 结束语

本文通过对铁路系统开发测试现状分析,引入云计算、自动化部署等技术,研究提出的基于云平台的铁路统一开发测试平台架构,可以有效解决现有系统开发、测试过程中,资源分散、独享、重复利用率低以及管理水平低等问题,为铁路信息系统开发、测试提供新模式。

猜你喜欢
门户路线统一
关隘:要道门户
西域门户——两关遗址
坚持严管和厚爱相统一的着力点
最优路线
碑和帖的统一,心和形的统一,人和艺的统一
『原路返回』找路线
统一数量再比较
基于内外网门户系统的研究
找路线
坚持“四纳入” 实施“四统一”