业务交付平台(SDP)是电信设备提供商为电信运营商提供的增值业务解决方案,用于第三方基于平台快速进行增值业务的开发和交付。该平台提供从业务开发、执行、测试、部署和管理等各个阶段的完整解决方案,对外开放电信业务能力,并支持与第三方的系统或应用的对接和集成。SDP在电信领域已经是一个比较成熟的产品,它吸引了大批的业务提供商(SP)和专业开发团队基于平台所开放的业务能力应用程序编程接口(API)来开发丰富的增值业务。然而,基于SDP的业务交付方案是一种电信领域内的专业性行为,对平台的使用人员而言,有其必需的专业性要求,而普通的个人开发者或非专业人员难以参与其中。在服务社会化的今天,这种高门槛的要求也限制了SDP平台所能产生的价值[1-2]。
云计算技术[3-5]的发展和成熟,为SDP平台的优化提供了新的思路。云计算技术以服务为理念,提供了3种不同层次上的服务:基础设施即服务(IaaS)[6-7]、平台服务(PaaS)和软件即服务(SaaS)[8-9]。其中,PaaS将软件计算与业务能力进行抽象,形成通用的API,对外提供服务接口,而且还支持应用的托管式集中部署和运行,在降低业务开发难度的同时降低了服务提供的成本。目前,公有PaaS云平台在技术上和商业模式上已逐步成熟,google的GAE[10]和新浪的SAE是其中的典型代表。
电信SDP和云计算PaaS平台的构建目标是一致的,即开放能力服务,提供应用开发和执行环境,提高应用开发效率,缩短应用上线时间。另一方面,PaaS平台具备存储与计算能力开放接口、应用托管、应用实例弹性可扩展等特征的服务模式和理念,这使得SDP和PaaS的结合变得尤为必要,并且形成了一种电信域增值业务交付的新方案,即SDPaaS云平台。
SDPaaS云平台是电信SDP和云计算PaaS的融合,是在传统SDP的技术基础上,结合云计算的技术特性,以服务为理念而实现的新的解决方案。它针对信息通信技术(ICT)网络融合的大环境,在支持第三方开发人员快速开发和交付业务的基础上,进一步实现了业务自动部署和托管运行、专业化集中式维护等功能,是对传统电信增值业务交付方案的一种拓展,为创建良好的电信增值业务生态环境提供了必需的技术支撑。
1SDPaaS云平台系统架构
SDPaaS云平台构建的主旨是提供一种社会化的平台服务,使得专业的增值业务开发团队和普通开发者都能基于平台进行ICT融合服务的创新,并降低服务创新的难度及服务创新的成本。图1为SDPaaS云平台的总体架构,该方案采用松耦合、组件化的理念设计。
BSS:业务支撑系统
OSS:运营支撑系统
SLA:服务等级协议
图1 SDPaaS云平台系统架构图
SDPaaS云平台主要由开发者社区、应用开发测试环境、应用执行环境、资源汇聚网关、能力引擎、托管环境和管理平台七大部分组成,该平台可以为应用开发者(AP)提供应用开发、测试、发布、运维相关的资源和服务,同时支持资源提供者(RP)接入新的能力资源到SDPaaS平台中。
SDPaaS云平台可以灵活部署,和IaaS没有必然的依赖关系。SDPaaS可以部署在IaaS提供的设备之上,此时利用IaaS的设备管理能力可以实现底层设备资源的管理,也可以直接部署在物理设备上,由SDPaaS本身实现对底层设备的管理功能。当然,基于虚拟化技术的应用托管可以有效降低应用托管的成本。
(1) 开发者社区
开发者社区一方面可以让应用开发者学习如何开发应用、获取相关资源等;另一方面,应用开发者可以将自己开发出来的应用通过运营商的发布渠道进行销售,而开发者社区提供相应的自助服务功能。
开发者社区主要包括开发者注册、能力超市、资源下载、应用发布管理和论坛等功能。
(2) 应用开发测试环境
SDPaaS应用开发环境满足应用开发者简易快速地完成应用逻辑生成、编译的功能要求,业务开发环境有离线业务开发环境和在线业务开发环境两种。从应用种类上讲,SDPaaS应用开发环境可以支持系统类的应用,也可以支持移动终端上的应用,例如Android应用。
● 在线业务开发环境
应用开发者可通过Web页面在线进行应用开发,无需安装客户端环境。在线业务开发环境主要用于以创意为主并且应用逻辑简单的应用开发,比如功能相对简单的融合应用或者基于内容聚合的移动应用。它主要面向对程序语言不太熟悉的开发者,并且对开发者的技能没有太高要求。
● 离线业务开发环境
应用开发者需要下载并安装客户端环境,对开发者有一定的硬件配置要求。对于应用逻辑复杂、功能要求复杂的应用,特别是需要开发者自行扩展较多组件的应用,可以使用离线的业务开发环境来开发。离线业务开发环境主要面向熟悉编程语言的专业开发者。
离线业务开发环境提供图形化的开发界面和软件开发工具包(SDK),开发者可以根据自己的使用习惯选择使用图形化的开发界面,或者基于SDK进行应用开发。
应用测试环境(STE)提供业务模拟测试环境,应用开发者可以进行端到端的模拟测试,并可以查看应用模拟运行结果。
(3) 应用执行环境
应用执行环境负责提供应用运行所必需的容器或沙箱,它是应用运行时的环境,也是应用隔离的实现保证。第三方应用的执行或者二次编排的组合能力的执行,都需要应用执行环境进行控制和检测,并将应用的运行状态和资源使用情况等参数上报给管理平台。
应用执行环境根据应用的种类分为java应用执行环境、dotnet应用执行环境以及基于SOA中间件的应用执行环境。应用执行环境可以运行在物理机上,也可以运行在虚拟化平台提供的虚拟机之上。
(4) 资源汇聚网关
资源汇聚网关负责封装能力引擎所提供的能力服务接口,并以通用的服务接口方式暴露出来,它为应用开发者提供统一的开放接口。资源汇聚网关可汇聚电信能力、互联网能力,并提供开发工具供开发者编排出新的能力。
资源汇聚网关上汇聚的能力可以动态扩展。资源提供者可通过管理平台提交新的资源接口,并通过审核的资源将自动加载到资源汇聚网关上,这样便可实现动态加载,且不会影响现有能力资源和应用的运行。
资源汇聚网关是能力调用的入口,它可以在管理平台的配合下,由资源汇聚网关负责对能力调用的请求进行认证、鉴权和计费。
(5) 能力引擎
能力引擎负责平台所提供的能力的实现。对于传统的电信业务能力,能力引擎负责电信业务能力的适配,并通过与多种电信网元按照标准的电信协议进行交互,从而实现电信业务能力。对于互联网业务能力、IT能力和其他的业务能力,能力引擎的主要作用是接口适配。当然,对于接口已经是Webservice等通用形式的能力,也可以不需要能力引擎的适配,直接由资源汇聚网关进行集成。
(6) 管理平台
管理平台提供SDPaaS云的管理门户和后台管理服务,包括AP管理、RP管理、工作流管理、资源管理和签约管理等功能,实现了应用从提交、审核、部署到发布全生命周期的管理,
管理平台还负责向开发者社区、应用开发测试环境、应用执行环境和资源汇聚网关同步数据,开发出的应用可以通过管理平台发布到应用商店。
此外,管理平台需要和业务支撑系统(BSS)/运营支撑系统(OSS)、应用商店等外部网元进行交互,以便实现网管、计费、应用交易等功能。
(7) 托管环境
应用托管环境是应用部署和运行的物理环境。在应用测试完毕后,开发者可以根据应用运行的实际需要申请应用部署所需的资源和服务,包括需要部署的应用实例数量、应用实例的动态调整策略和应用的生命周期等。审批通过后,系统根据应用的类型和所需要的执行环境,自动打包并生成应用的虚拟机模板(即镜像文件),并加载到虚拟机中并完成启动。通过这些简单方便的操作,就可以用最快的速度完成应用的部署并即刻开始提供服务。当然,如果是通用的业务运行环境,应用托管系统也可以预先准备好应用模板,再通过应用开发者加载应用的开发包到模板之中,这样以来应用部署的时间将进一步缩短。
2SDPaaS云平台关键技术及其解决方案
SDPaaS云平台是传统电信域能力开放与云计算技术的结合,主要涵盖了以下关键技术。
2.1 能力集成与开放
服务能力集成与开放是云平台服务需要解决的关键问题之一。SDPaaS平台需要对外提供包括电信能力、互联网能力和IT能力在内的多种能力服务接口,并实现参数封装与映射、接口鉴权、SLA控制、消息路由和资源有效性监控等功能,从技术实现上讲,需要重点考虑以下内容:
(1) 接口封装与适配
接口封装基于面向服务的体系结构(SOA)架构,并采用互联网通用的接口服务形式,提供基于简单对象访问协议(SOAP)的Webservice和RESTful Webservice等多种形式,从实现语言的角度,支持java、C和Android等多种编程语言。
(2) 接口鉴权
应用在调用资源汇聚网关能力接口时,平台需要根据应用所携带的信息,如资源的应用标志(APPID)和开发者标志(APID)等对接口调用进行鉴权和认证,判断应用是否有权限来使用相应的能力资源。
(3) SLA控制
SLA控制是平台即服务的一个重要特征,它允许不同的应用申请不同水平的服务策略(能力许可、流量控制)。平台则会根据这些策略对应用的接入请求进行控制,并确保业务能力调用的服务质量。对于违反SLA中规定的请求予以拒绝,并返回对应的异常错误代码,并记录日志。
(4) 消息路由
注册到平台的能力接口,有从网络侧发起的上行消息,也有从应用侧发起的下行请求,平台需要根据该消息类型和接口规范来实现消息的分发和路由。同时,在存在多个能力引擎的情况下,还需要根据一定的路由策略实现下行消息的分发。
(5) 资源有效性监控
平台需要对能力资源的状态进行监控,当对能力引擎的调用出现连续异常,且次数超过系统配置值时,资源汇聚网关会向管理平台上报该资源异常。资源异常的情况包括:资源响应时长超过警界值、资源无法连接等。
(6) 能力编排
平台需要提供可视化的能力编排工具,该工具能够将多种下层网元提供的能力接口按照一定的逻辑进行编排,形成一种新的能力,进行接口封装后,可将新能力对外开放。
2.2应用隔离
应用隔离是应用执行环境安全运行的关键,对于非信任域内的第三方应用,需要确保某一个应用运行时故障不会引起整个系统出现故障。应用隔离的实现方案主要有3种:虚拟机隔离、容器隔离和应用实例隔离。
(1) 虚拟机隔离
虚拟机隔离功能,即一个应用独占一个虚拟机,每个虚拟机上安装独立的应用执行环境。应用部署时,系统根据应用类型从虚拟机资源池中获取对应的虚拟机及应用执行环境,并将应用安装在虚拟机上。
虚拟机部署的优点是应用隔离比较彻底,应用之间相互不影响,比较安全。但是对于移动互联网应用来说,大部分是小众应用,如果一个应用独占一个虚拟机,则会消耗大量的虚拟机资源,成本较高。因此虚拟机隔离适合于有大量并发用户访问的应用。
(2) 容器隔离
容器隔离是以应用运行的容器为单位来进行应用隔离的,一个应用独立部署在一个容器中,一个虚拟机或者一台物理机上可以部署多个容器。容器隔离方案的缺点是无法给某一容器分配或者限定资源,只能对容器所消耗的资源进行监控,一旦发现某一容器占用的资源达到指定阈值,就执行既定的策略(比如杀掉该容器进程),但这样会中断业务,影响用户体验。和虚拟机隔离方式相比,容器隔离对资源的消耗相对较低。但是,该方案在物理上还是要占用较多的内存、CPU等系统资源。
(3) 应用实例隔离
应用实例隔离是指在一个应用运行的容器中部署多个应用,每个应用的实例运行在一个独立的沙箱中,由沙箱对应用运行时的安全进行控制,如图2所示。
图2 应用实例隔离
应用实例隔离方案具有以下特点:
● 进程内隔离
虚拟机上安装一个或多个容器,其中一个容器就是一个独立的进程。应用部署在容器内的沙箱中,应用实例的运行安全则由沙箱去保证。这种隔离方式是进程内的隔离,占用系统资源最少。同时,采用沙箱技术也可以控制单个应用实例对资源的占用。
开放服务网关协议(OSGI)[8]是解决应用实例隔离的方案之一,其缺点是目前只能针对java应用。Google为了解决跨平台的浏览器插件隔离问题,还提出了NACL的解决方案,但是这些技术都有它们的局限性。
● 资源访问控制
在容器内部署多个相同或不同的应用实例,通过类加载白名单机制对应用可访问资源进行控制,应用不能访问系统内部的资源文件,只能访问其自身应用的资源文件和类文件。该方案还禁止应用对某些关键系统资源(如本地存储、线程、网络等)的访问,在屏蔽这些系统资源调用的同时,也必须为应用提供必须的替代功能,这也是GAE、SAE等提供分布式存储、任务队列等计算和存储能力暴露接口的原因之一。
2.3 弹性伸缩与调度
SDPaaS云平台可以在两个层面实现弹性伸缩调度。
(1) 硬件基础设施层面。SDPaaS云平台通过与IaaS的整合,使系统具有IaaS所拥有的虚拟化计算与存储服务能力。SDPaaS与IaaS的整合需要虚拟化平台暴露相关的接口,主要包括创建虚拟机、启动虚拟机、关闭虚拟机、删除虚拟机和状体上报等5类接口。
(2) SDPaas层面。SDPaaS云平台可以在一个虚拟机上部署多个应用实例,通过进程级别的监控来识别每个应用的CPU/内存使用情况,并根据每个应用的CPU/内存使用情况进行应用级别的动态伸缩。也就是说,监控程序监控各个应用实例的运行参数,当某一单实例应用的性能出现瓶颈时,监控程序可以通过复制一个新的应用实例的方式来提高处理性能;在业务性能指标要求下降时,可以通过动态减少应用实例的方式来节省资源。
2.4 负载均衡与域名转换
SDPaaS需要实现动态的应用请求二级域名转换和负载均衡,以便支持应用的动态加载、即时服务。SDPaaS在功能实现上可以基于Apache或者NGINX等开源软件。同时,考虑到应用请求接入协议多样,负载均衡设备需要支持四层交换、七层交换、GSLB等功能。作为系统最前端,负载均衡还要尽可能解决接入安全等问题,并提供攻击防护、流量控制、脚本检测等功能,帮助应用解决性能、扩展性、可靠性、安全性问题。
在应用部署时,通过接口动态更新负载均衡设备的配置策略,可以实现应用的二级域名地址到虚拟机IP地址的映射转换,并可以动态分发请求。当一个应用部署到多个虚拟机时,还可以起到负载均衡器的作用,如图3所示。
IAG:智能业务网关
图3 负载均衡的实现
3 SDPaaS云平台的应用场景
SDPaaS云平台目前已经有3种商用的应用场景,分别是能力开放平台、企业应用数据中心和应用工厂,每种应用场景都有自己的侧重点。
(1) 能力开放平台
SDPaaS云平台接入各种电信能力、互联网能力及其它能力,并提供能力开放服务。电信能力包括短信能力、彩信能力、wappush能力、数据类能力、IP多媒体子系统(IMS) 能力以及定位能力等。互联网能力主要有股票行情查询能力、航班查询能力等互联网上开放出来的能力。开发者也可以通过能力编排,创新出新的能力,并作为服务开放出去。
(2) 企业应用数据中心
对于中小企业或专业开发者,开发出的服务端应用需要托管到互联网数据中心(IDC)机房,不仅费用高昂,而且技术要求高、调试运维难。SDPaaS云平台底层可以基于IaaS平台,而计算能力、存储能力和网络能力等可以由SDPaaS云平台统一监控、管理,自动具有弹性伸缩、按需分配和故障迁移等云计算特性。中小企业开或者专业开发者可以直接将自己的应用托管在SDPaaS云上,构建企业私有的应用数据中心(ADC)。
(3) 应用工厂
SDPaaS云平台提供了应用开发环境、应用执行环境、应用仿真测试环境,并为应用的开发、测试、部署提供完整的生命周期管理,开发者基于平台可以方便地开发、测试、部署自己的应用。开发出来的应用既可以托管在SDPaaS云平台,又可以快捷地放到运营商的应用商店里销售,从而形成“前店后厂”的模式。
4 结束语
作为促进电信和互联网“长尾”业务模式快速发展的重要手段之一,能力开放平台的发展得到了全球产业界的广泛关注。我们在长期增值业务平台技术实践的基础上,通过吸收、消化互联网和云计算技术,创造性地提出了SDPaaS这一具有云计算特性的融合业务开放平台并付诸研发实践。以SDPaaS平台提供了完整的端到端产品解决方案,是电信运营商向移动互联网转型的尝试,也是电信设备商从传统的卖产品向卖服务的战略转型的尝试。
5 参考文献
[1] 董振江,陆平,杨勇.具备云计算特性的业务交付平台及其关键技术研究[J].中兴通讯技术,2011,17 (5):55-57.
[2] 倪洪章.IBM SDP 实现电信运营商业务水平整合[N]. 计算机世界, 2008-02-04.
[3] 马苏安.云计算在电信领域的应用[J].中兴通讯技术,2010,16(4):44-47.
[4] 罗黎霞.基于云计算的服务平台--Google APP Engine[J].信息与电脑:理论版,2009(8):93-94.
[5] 刘鹏,云计算[M]. 2版. 北京:电子工业出版社,2011.
[6] 吴朱华. 云计算核心技术剖析[M]. 北京:人民邮电出版社,2011.
[7] 雷葆华,饶少阳,江峰等.计算解码:技术架构和产业运营[M]. 北京:电子工业出版社,2011.
[8] 林昊,曾宪杰.osgi原理与最佳实践[M]. 北京:电子工业出版社,2009.
[9] McGrath M R.Understanding PaaS[M].New York,NY,USA:O'Reilly Media,2012.
[10] 唐学韬,何继业等. sanderson d. GAE编程指南[M].北京:机械工业出版社,2011.