王 乔
(中国铁道科学研究院集团有限公司 电子计算技术研究所, 北京 100081)
我国铁路信息化起步较早,现有应用软件种类多样,有Client/Server结构的,也有Browser/Server结构的,这些应用依赖于不同的操作系统和不同的开发平台,开发工具和开发环境多种多样,由于这些历史因素的原因,造成铁路应用各个系统之间存在系统交互难度大、无法支撑业务部门业务融合、资源无法得到重复利用、项目建设周期长、成本高、同类型同功能的产品反复购买和重复学习、增加运维成本等问题[1]。
随着互联网行业迅猛发展和大型业务的不断扩张,单体应用架构逐渐无法满足互联网时代的快速变化,高昂的维护成本、较长的交付周期、较差的可扩展性等问题直接制约了企业信息化的发展。Cloud Foundry是一个开源平台即服务(PaaS)云平台[2-4],不限定供应商,不会把用户禁锢在专用软件或云基础架构内。本文拟从统一规划、统一标准、统一平台设计理念出发,基于Cloud Foundry开发的云环境和统一开发框架[5-9],建立统一应用开发平台,快速响应企业信息化建设过程中的发展和维护需求。
蒙西华中铁路(简称:蒙华铁路)由浩勒报吉站作为开端,中途经过7个省,跨越内蒙古、陕北地区、晋中地区、黄河中下游地区、湘、赣等地,止于江西吉安,全线正线长1 814 km。 蒙华铁路作为铁路投融资改革的示范项目,面对新机遇、新挑战和新要求, 必须要立足高标准、高起点和高质量进行信息化集中统一建设。“统一规划、统一标准、统一平台” 是信息化的一个长期建设思路,因此开发平台在设计过程中遵循规范要求,工作成果符合标准要求,利用先进、成熟、稳定的技术手段,满足蒙华铁路所需系统的开发需求,同时还要保障开发平台的先进性适应未来一段时间的发展变化,并具备不断演进的基础条件。在设计、实现时需要考虑业务系统需求的差异性,底层组件必须具有一定的灵活性。
Cloud Foundry是VMware推出的开源PaaS云平台,支持多种开发框架、编程语言、运行环境及应用服务,开发人员可以在短时间内快速部署应用和扩展,无需担心任何基础架构问题,Cloud Foundry由多个相对独立的组件通过消息机制组成分布式系统,使平台可以在各层级都可水平扩展,既能运行在大型数据中心也可以在桌面电脑上运行[7]。
开发框架:Cloud Foundry支持Java™代码、Spring、Ruby、Node.js和自定义框架[8]。
应用服务:Cloud Foundry提供了对MySQL、PostgreSQL、Redis和自定义服务的支持[8]。
统一应用开发平台,跨域了业务系统开发平台的定位局限性,以先进的设计开发理念立足于业务系
统开发、运行、运维等各阶段全方位的 PaaS。 统一应用开发平台是技术平台的的核心组成部份,与客户服务平台、数据服务平台、集成服务平台等技术平台紧密结合,平台从功能上划分为基础设施、公共套件、集成开发、系统治理、集成包管理、数据管理等6大模块, 上层战略管理、决策支持、设备管理、经营开发等业务系统对技术平台功能实现透明化运转,平台总体架构,如图1所示。
图1 统一应用平台总体架构图
统一应用开发平台为业务系统研发和实施人员提供了包括业务系统设计、开发、测试、发布、运行的完整工作环境,还将具有PaaS、数据即服务(DaaS)的特性,即在云资源管理平台基础上,通过平台治理工具完成应用系统的部署、升级、配置等运维工作,为应用系统提供统一的中间件管理,构建基于云环境的统一应用开发和运维平台。
(1)基于统一应用开发平台可以统一蒙华铁路信息化技术路线,确保技术架构一致性;
(2)减少系统开发难度,提升开发效率,快速响应业务需求,有效地控制信息系统建设质量;
(3)为项目总体管控提供支撑;
(4)为应用软件提供交互渠道,加速多业务集成、融合。
平台功能架构,如图2所示。
3.2.1 系统治理工具
系统治理工具是基于开发平台的应用系统配置、管理、发布、采集、监听、控制的集中式工具,提供查看管理服务器、中间件、应用、配置、存储日志、性能,以及预警功能,通过分析工具定位故障产生原因,提供故障解决知识库,可依据知识库中故障处理策略和配置规则,选择自动或者手动的方式,快速及时恢复故障点。
图2 统一应用开发平台功能架构
3.2.2 集成开发平台
集成开发平台以Cloud Foundry为基础, 为统一应用开发平台提供多种主流的应用系统集成开发工具,使开发人员可以自主选择软件的布局设计,为开发人员提供代码辅助、导航与管理,为管理人员提供自定义的工程管理方式等,同时可以提供支撑业务系统测试、运行、调试的平台容器。平台为业务系统开发人员提供了高效、便携、可靠的技术保障,提高了业务系统功能开发的效率和质量。
3.2.3 平台基础设施
平台基础设施是平台中最底层的部分,其中,包含核心框架和平台微内核,实现事件监听、界面交互、数据管理、请求处理、异常处理等功能。
3.2.4 平台公共套件
平台公共套件是为统一应用开发平台提供各类业务系统松耦合的公共服务,如:任务调度、即需报表、数据缓存、消息通信、BPM和统一权限等。公共服务是由平台实现的各种高级功能和服务,基于这些功能和服务可以快速开发业务系统,比传统的代码开发效率高且质量高,可以保障业务系统的稳定和高效[10]。
3.2.5 集成包
集成包可以看作一种接口封装组件,集成包为统一应用开发平台提供了一体化平台服务的集成与系统软件的集成。开发人员在业务系统开发的过程中按照集成包运用规则编写配置文件,即可实现集成包组件的自启动,与相关信息系统自动集成。
3.2.6 数据服务
数据服务是由平台提供的业务应用数据源、中间数据、应用数据接入的服务,可通过传递有用的信息帮助用户进行优化决策及精准营销等。
平台在逻辑上采用分层架构设计实现,包括展现层、服务交互层、业务逻辑层、持久层[11]。用户与应用系统交互过程中,各层之间相互协作,依次进行数据展现与输入、数据传输与接入、服务请求派发、业务逻辑执行和数据持久化操作等多个阶段[12],分层结构,如图3所示。
图3 统一应用开发平台分层架构
利用复用和封装的原则,业务逻辑层为统一应用开发平台提供了通用组件与服务,代码实现了集中通用和优化。在应用开发过程中,为实现某些通用业务可直接调用业务逻辑层的相应组件与服务,有效减少重复代码,提升代码性能。
在应用交互过程中,数据基于不同的传输载体和特有的传输格式,以不同的展现形态,在各层中移动,实现应用系统响应与业务处理,满足开发人员与用户需求。
统一应用开发平台后台管理使用“主-从”式架构设计,通过命令转发、解析和执行的信息处理方式,中心控制节点控制全部Cloud Foundry客户终端,实现Cloud Foundry后台的统一管理。同时,基于Cloud Foundry的统一应用开发平台,使用jquery portls技术,实现轻量级灵活的门户架构和统一的平台层权限管理控制,采用运维管理统一入口,实现运维模块单点登录,具有视图自定义功能。
统一应用开发平台后台运行机制依赖Cloud Foundry 云平台架构。Cloud Foundry 是一个复杂的分布式系统,由数10个组件组成。Cloud Foundry中的Droplet把应用软件源代码和Cloud Foundry相应的运行环境与所需的管理脚本全部压缩到tar包里。Cloud Controller模块会发送start/stop等基本的apps管理请求给数据包络分析(DEA),dea.rb接收这些请求后,从NFS里面找到合适的Droplet。DEA解压tar包,根据start请求脚本运行应用软件,其运行机制,如图4所示。这种完善的运行机制与后台管理体系为加速企业信息化建设提供了有力条件。
Cloud Foundry在铁路信息化领域应用较少,本文提出的基于 Cloud Foundry的统一应用开发平台建设方案是一次新架构的尝试。统一应用开发平台可以快速响应用户需求,支持水平扩展、快速交付、快速部署,提高开发效率、降低运维成本和业务应用建设融合成本,减少开发人员不必要的重复劳动。今后将针对平台的可定制化运行环境做进一步研究。
图4 基于Cloud Foundry架构的统一应用开发平台运行机制