云计算与SOA在信息化建设中的融合应用

2014-01-16 09:21尹培培
电子设计工程 2014年5期
关键词:中间件应用程序架构

尹培培

(国家广电总局信息中心 北京 100866)

1996 年Gartner最早提出了SOA的概念设想[1],但在当时只是个预言,后来随着软件和信息化程度的发展,以及Web服务的提出和应用,SOA概念才逐渐走入实质性应用。SOA全称为面向服务的体系架构(Service Oriented Architecture),是一类分布式系统的体系架构。其主要思想是在传统的业务层和技术层之间增加一个服务层,服务层通过一套协议或规范把应用程序从底层技术层调出去,加以封装,再根据业务层需求灵活组合。SOA是一个组件模型,它将异构平台上的应用程序拆分为不同的功能单元(服务),服务之间通过定义良好的接口和规范以松耦合的方式整合在一起。从2005年开始,很多专家学者、软件厂商都开始关注SOA,SOA推广与普及工作开始加速。各大厂商共同协作制定了SOA的多个重量级规范,SOA进入了实施阶段。

同时,在20世纪80年代网格计算、90年代公用计算,21世纪初虚拟化技术、SOA、SaaS应用的支撑下,云计算作为一种新兴的资源使用和交付模式逐渐为学界和产业界所认知。根据wiki百科的定义[2],云计算是一种通过Internet以服务的方式提供动态可伸缩的虚拟化的资源的计算模式。云计算是分布式计算、并行计算、效用计算、网络存储、虚拟化、负载均衡等传统计算机和网络技术发展融合的产物。近几年来,在各大厂商和研究机构的努力下,云计算开始真正落地实施,各个厂商的云技术、云方案陆续出台,如亚马逊的Cloud Drive,苹果公司推出的iCloud,Google的云计算平台,微软的System Center 系统等等。云计算也成了IT界乃至全社会的热点。

从概念上看来,SOA和云计算之间好像并无太大联系,但它们都涉及到软件架构问题,并且各自提出了不同方向的解决方案。关于SOA和云计算的关系,自从云计算概念提出至今,始终是产业界、学术界和用户界关注的焦点问题。业界观点大致有以下3种:SOA和云计算融合发展;云计算将取代SOA;SOA中包含云计算。本文将从各个方面分析这两种架构之间的区别和联系,以及在业界的发展趋势。

1 云计算架构与SOA架构的概念

1)云架构

云计算的一开始出现主要是为了解决计算机硬件资源问题,它通过虚拟化方式大大降低企业数据中心的应用成本。在这些年的发展之后,云计算的概念和范畴已经扩展为3个层次[3]:基础架构云(Infrastructure as a Service,IaaS)、平台云(Platform as a Service,PaaS)和软件应用云(Software as a Service, SaaS)。IaaS指基础设施即服务,这一层的作用是提供虚拟机或者其他资源作为服务提供给用户。PaaS指平台即服务,其作用是将一个开发平台作为服务提供给用户。SaaS指软件即服务,是指将应用作为服务提供给客户。它们主要提供的服务如图1。企业利用云计算架构去进一步解决它的烟囱式问题,但主要目标是降低IT运营成本、提升IT资源的利用率,促进企业自身IT建设从粗旷型向集约型进行转变。

图1 云计算的3个层级架构Fig. 1 The 3-tier architecture of cloud computing

从上图可以看出,从底至上,IaaS层主要是将服务器、存储及网络资源虚拟化,将虚拟后的资源作为服务提供给用户;PaaS层可以为用户提供一个包括开发、测试环境以及文档等的开发平台,用户可以在此开发平台上编写应用,并且不用关心服务器部署、网络和存储等问题;SaaS层主要是给普通用户提供无需安装就能直接使用的应用。

由于SOA架构主要涉及的是软件体系的架构,而云计算的三层架构中的PaaS的平台开发中亦涉及到软件架构问题,所以本文中主要将云计算中的PaaS模式与SOA进行分析。在PaaS模式中,对用户提供的服务是一种分布式平台服务,包括开发环境、测试环境、服务器平台、硬件资源等。通过PaaS提供的服务,用户可在分布式平台上定制开发应用程序,并通过互联网传递给其他客户。PaaS能够给企业或个人提供研发的中间件平台,提供应用程序开发、数据库、应用服务器、试验、托管及应用服务。Gartner将PaaS分成两类[4],APaaS(application platform as a service)和 IPaaS(integration platform as a service)。APaaS主要为应用提供运行环境和数据存储,能够将企业内部自建的简单三层架构的应用直接部署到APaaS;IPaaS主要用于集成和构建复合应用。据Gartner称,虽然PaaS市场的规模相对较小,但在市场上提供不完全PaaS产品的公司却有超过150多家。目前市场上的PaaS产品既包括综合PaaS产品,例如网站Salesforce.com旗下的Force.com,也包含独立的应用基础架构组件,如数据库及其它为云计算服务提供支持的功能型中间件。目前代表产品有Google App Engine, Salesforce的force.com平台,八百客的800APP等。以Google App Engine为例,它是一个由python应用服务器群、BigTable数据库及GFS组成的平台,为开发者提供一体化主机服务器及可自动升级的在线应用服务。用户编写应用程序并在Google的基础架构上运行就可以为互联网用户提供服务,Google提供应用运行及维护所需要的平台资源。

另外,云计算除了三层架构之外,从横向范畴来说,云还可以划分为公有云、私有云、社区云和混合云等。公有云是指第三方提供商为用户提供的能够使用的云,可在整个开放的公有网络中提供服务。在公有云中,云服务提供商通过自己的基础设施直接向外部用户提供服务,外部用户通过互联网访问服务,并不拥有云计算资源。私有云是为一个客户单独使用而构建的,该客户拥有基础设施,并可以控制在此基础设施上部署应用程序的方式。私有云可由公司自己的IT机构,也可由云服务提供商进行构建,可部署在企业数据中心的防火墙内,也可部署在一个安全的主机托管场所。社区云是由几个组织共享的云端基础设施,支持特定的社区。混合云由两个或者更多云端系统组成云端基础设施,这些云端系统中可能包含公有云、私有云、社区云等,这些系统保有独立性,但借由标准化或封闭式专属技术相互结合,可确保资料与应用程序的可携性。

2)SOA架构

长期以来企业面临的关键问题是如何解决已形成的烟囱式的企业计算环境,SOA的出现就是为了解决独立系统间的整合问题,或者说系统架构的问题。SOA作为一种面向服务的架构,是一种软件架构设计的模型和方法论。SOA将异构平台上的应用程序拆分为不同的功能单元(服务),服务之间通过定义良好的接口和规范以松耦合的方式整合在一起。接口是采用中立的方式进行定义的,它独立于实现服务的硬件平台、操作系统和编程语言,这使得构建在各种系统中的服务可以使用一种统一和通用的方式进行交互。

从业务角度来看,SOA利用企业现有的各种软件体系,重新整合并构建起一套新的软件架构。这套软件架构能够随着业务的变化,随时灵活地结合现有服务,组成新软件,共同服务于整个企业的业务体系。我们可以把SOA看作是模块化的组件,每个模块都可以实现独立功能,而不同模块之间的结合则可以提供不同的服务,模块之间的接口遵循统一标准,可以实现低成本的重构和重组。在SOA的技术框架下,可以把杂乱无章的庞大系统整合成一个全面有序的系统,从而增加企业在业务发展过程中应用系统的灵活性,实现最大的IT资产利用率。

2 云架构与SOA架构各自的优缺点

从上两节云架构和SOA架构的概念来看,它们的出现也是为了解决不同的问题,但它们都是企业或政务信息化实施的架构,在业界看来属于竞争关系,甚至有些学者认为云计算可以取代SOA成为新的架构风格。实质上,云计算和SOA架构应用在企业或政务信息化中,各有优势,也有自己的局限性。

从发展至今,云计算主要有处理能力强大、应用高度集成、用户成本低、大规模数据存储等优势。但云计算还处于发展初期,局限性也有明显。云的安全性是企业或政府需要考虑的首要问题。另外,现在不同云服务之间的交互能力非常弱,混合云架构缺乏成熟的技术支撑。同时网络带宽的限制也会给云的部署和实施带来一定影响。

SOA的优势主要有模块的重用性、模块之间的交互能力以及快速应变能力。SOA 方法从服务提供者和服务消费者的角度对功能方面涉及的对象、数据、组件、业务流程、界面等进行层次化,为所有服务提取安全架构、数据架构、集成架构、服务质量管理等中的共用部分。SOA 架构契合了企业信息化建设过程中业务创新的需要,同时也可以达到业务重用的效果,充分降低了企业的成本。

但是SOA 在企业信息化实施过程中仍有一些不足。目前SOA最好的实现方式是web服务,但web服务本身也有不成熟的地方[5],比如在可靠消息传递、web事务处理等方面的标准还有待完善。另外,如何快速组装服务以及控制服务颗粒度这两方面,还有待进一步研究,而服务颗粒大小问题在某种程度上决定了整个系统的灵活性和效率。

3 云架构与SOA架构的交叉与结合

上一节提到云架构与SOA架构在信息化建设中各有优缺点,但其实它们之间除了竞争之外,还有着比较复杂的关系。我们认为,云架构和SOA架构之间可以取长补短,在一定程度上结合起来形成新的架构来更好地支撑复杂的信息化建设。

首先,从云计算的架构和SOA的概念来看,SOA在云计算中最广泛使用的地方是PaaS平台的中间件组件。PaaS的中间件包含事务型中间件、消息中间件、远程过程/对象调用中间件、应用服务器、数据库服务器、ESB、BPM等多种类型,SOA架构本身即是一种组件模型,可以组合异构平台中的各种应用程序,而目前PaaS平台的能力还尚未成熟,PaaS架构中正是需要这种标准化的组件模型,来支持其平台中应用程序的开发及部署。同时,SOA架构的特性决定了它可用于包括PaaS在内的任何云服务(包括基础设施服务IaaS和软件服务SaaS)的创建与交付中。

其次,云计算对于SOA有着良好的促进作用。由于SOA架构是一个好的架构方法,使用SOA架构建成的信息系统间的运行与协作更加方便、标准化。为了获得云计算的优势,企业用户需要通过接口和架构延展出去连接到云计算资源。为了更好的使用云计算的资源,企业内部需要一定的架构在核心企业信息系统和云计算资源之间建立链接,而这正是SOA可以做到的。

另外,市场上云的类型很多,私有云、公有云、社区云将长时间在市场上共存,形成混合云架构。在这种情况下,SOA架构可以很好的支持混合云的发展,利用模块化架构既可以更好地将模块迁移到云,同时还可帮助云端的应用程序进行整合。SOA在企业应用与混合云架构中的作用大致如图2所示。

图2 SOA架构应用于混合云Fig. 2 SOA architecture used in hybrid cloud

如图2所示,企业内部应用可通过SOA与混合云中某种云的应用进行互相迁移,同时混合云中不同平台的应用及服务也可通过SOA来进行整合或迁移。

总的来说,云计算的发展对于SOA架构在网络、基础架构上的应用都造成一定的影响,它们并不是排斥的关系,相反云计算的发展不仅对SOA不是一种取代关系,而是有显著的促进作用,同时云计算中也需要SOA架构的应用,有效地部署云计算服务需要SOA方法。云计算时代的到来,给SOA架构带来了更大的发展空间。

4 发展趋势

通过对云计算和SOA架构之间关系的分析,可以看出两者之间的关系比较复杂,并不是简单的替代关系。上一节最后也提到,SOA与云计算架构是密不可分的,对于将来的发展趋势来说,由于两种架构各自的优势,更实际的方式是将两种架构结合应用。将两种架构结合起来有两种方式,一种是在SOA架构中引入云计算,另一种是在云计算架构中引入SOA,两种方式各有偏重,主要区别是解决问题的出发点和侧重点不一致,而实现的途径基本一致。

1)在SOA中引入云计算

在SOA架构中引入云计算,主要目的还是为了更好的集成软件服务,包括企业内部信息系统与外部服务的集成,如SaaS和IaaS。有研究表示[6],使用SOA整合SaaS是可以实现的。通过SOA来整合SaaS服务,可以将较小粒度的SaaS服务集成到一起,提供更抽象、粗粒度的软件服务。SOA平台中的ESB总线可以将云计算中的分布式计算模块、云存储等以服务的方式接入。同时SOA平台需要的IT硬件基础设施,可以直接使用云计算中IaaS层的虚拟化的计算能力单元和存储能力单元,均以服务的方式接入到ESB总线上。

前文中提到了,SOA中的中间件平台类似于云计算中的PaaS平台,SOA中所包含的ESB总线、流程引擎、规则引擎等都可以发展为PaaS平台的能力。

2)在云计算中引入SOA

在云计算中引入SOA,主要是为了解决云计算中不同云服务之间的交互能力弱的问题。如图2所示,混合云架构中不同云服务之间通常很难进行整合和迁移,将SOA应用到此处将有益于解决此问题。同时,通过引入SOA中的ESB总线,还可实现云计算中SaaS、PaaS、IaaS三层架构之间的集成。

另外,PaaS层可以将SOA中的数据、业务、流程、展现服务均纳入,提供给在线开发环境中应用,这些服务在线进行服务编排和组装可借助SOA本身已有的流程引擎和规则引擎来完成。

5 结 论

前文分析了云计算与SOA两种架构各自的概念、优缺点,分析了两种架构之间的关系,以及业界将来可能的发展趋势。

云计算和SOA均有自己的优缺点。SOA使业务系统灵活应对业务需求的变化,而云计算使软硬件环境灵活响应业务系统。同时云计算面临不同云服务之间的交互问题,而SOA有利于整合技术平台,统一技术标准,打通不同云平台上的服务,促使云上的软件和服务日趋成熟。

在实际工作中,企业或政府可以根据自身特点和实际需求,选择通过适当的方式将两种架构结合应用,发挥两种架构各自的长处和优势。如果能将云计算和SOA进行科学的结合,必将进一步提高各自应用时的效用,也有助于实现分布式系统和云计算产业的新一轮高速发展。

[1] W.Roy Schulte, Yefim V.Natis."Service Oriented" Architectures,Part 1[M].SSA Research Note,1996.

[2] Wikipedia.云计算[EB/OL].(2013-06-29)[2013-07-15].http://zh.wikipedia.org/wiki/%E4%BA%91%E8%AE%A1%E7%AE%97.

[3] 美国国家标准和技术研究院(NIST).NIST Cloud Computing Reference Architecture [S]. 2011.

[4] Massimo Pezzini, Benoit J. Lheureux. Integration Platform as a Service: Moving Integration to the Cloud [R].March, 2011.

[5] 王郑. Web服务安全性研究[D]. 合肥:合肥工业大学, 2007.

[6] 朱志良,苑海涛. SOA与云计算:竞争还是融合[J].计算机科学,2011,38 (12):6-11.ZHU Zhi-liang, YUAN Hai-tao. SOA and cloud computing:competition or integration[J].Computer Science,2011,38(12):6-11.

猜你喜欢
中间件应用程序架构
基于FPGA的RNN硬件加速架构
功能架构在电子电气架构开发中的应用和实践
基于云服务的图书馆IT架构
删除Win10中自带的应用程序
谷歌禁止加密货币应用程序
RFID中间件技术及其应用研究
基于Android 平台的OSGi 架构中间件的研究与应用
WebGIS架构下的地理信息系统构建研究
中间件在高速公路领域的应用
一种支持智能环境构建的中间件