SOA与云计算的集成探究
来源:软件导刊杂志 更新时间:2013-05-12
 
SOA与云计算都是近年来企业信息化发展中受到关注的技术。首先介绍了SOA和云计算的思想;然后对比分析了SOA与云计算;最后提出了SOA与云计算集成的方法。
1 SOA
    SOA是一个组件模型,将应用的不同功能单元通过服务之间定义良好的接口和契约联系起来。服务接口独立于实现服务的硬件平台、操作系统和编程语言。系统包含的服务以一种通用和一致的方式进行交互,使系统集成不必关注底层的实现细节。SOA具有以下基本特点:
    (1)面向服务。SOA以服务作为关注的重点,支持面向服务的开发方法。服务从更高的抽象层次上定义,与业务相对应,可通过面向过程、面向消息、面向对象等方法来实现。
    (2)松耦合。SOA强调服务间是松耦合的,包括了三层含义:一是接口松耦合,即服务接口封装了所有的实现细节,对服务请求者屏蔽实现细节;二是技术松耦合,指服务请求者和服务提供者的实现和运行不需要依赖特定的技术;三是流程松耦合,指服务不与特定的业务流程相关,能够重用于不同的业务中。
    (3)灵活性。在SOA的应用系统中服务是实现功能的基本单位。服务的可重用性和重组服务提高了业务的灵活性。
    (4)标准化。SOA应用系统中的服务应尽量支持开放的标准,通过标准化提高互操作性。
2 云计算
    目前关于云计算没有统一的定义。IBM给出的定义是:云计算是一种通过虚拟化的方式共享资源的计算,计算资源可以动态部署、动态调度、动态回收。云计算被视为一种计算模式,通过基于互联网连接的服务集合完成计算任务。云计算保证服务和数据在整个云中都可用,使得用户能够以较低的成本随时接入访问数据,提供了集成、共享的公共平台。云计算可以划分为3种服务模型:
    (1)基础架构即服务(IaaS)。指的是将服务器、存储和网络等底层设施作为服务提供给用户。IaaS一般按照需求利用服务器、连接、存储以及相关的必要工具构建应用环境。因此用户可以通过动态申请资源构建云应用。IaaS相对于软件的使用要更为困难,不过却为应用提供了更好的灵活性。
    (2)平台即服务(PaaS)。指的是一种易于配置的软件平台。这种平台一般包含数据库、中间件及开发工具,均以服务形式通过互联网提供给第三方开发人员。开发人员可以通过PaaS部署应用,不用在意系统的管理细节。PaaS的典型应用是Google App Engine2,包括了完整的Python应用环境。通常PaaS可以包含于IaaS中,与IaaS相比更为好用,但不够灵活。
    (3)软件即服务(SaaS)。指的是通过网络将应用程序以服务形式提供给用户。其中应用程序可以是公有云提供商提供的商用SaaS应用,或企业专用云提供的商用或订制的SaaS应用。SaaS的供应商基于多租户的体系架构为客户提供软件服务。
3 SOA与云计算的集成
    3.1 SOA与云计算的比较
    SOA与云计算在很多方面都有重叠,其中最为重要的交叉点是面向服务的概念。云计算关注的焦点是将计算当成可以买卖的商品,比如大规模在线存储、网络应用平台等。云计算提供的服务非常广泛,包括了从硬件层次到应用层软件。而SOA一般提供象Web Service应用这样的服务。SOA与云计算都非常依赖网络,这也是它们共同的缺陷。
    虽然SOA与云计算有很多共同点,但是它们有不同的侧重点。SOA实现是系统与系统之问进行集成的技术,允许通过不同的部署语言和平台进行系统集成。基于SOA实现的系统接口一致性能够降低集成的开销,提高系统的敏捷性。云计算的重点是利用网络购买需要的功能,允许市场以商品的形式提供各种功能,避免了用户花费过多成本实现所需功能。在公共标准方面SOA和云计算发展的阶段存在差异。SOA的软件服务实现已有成熟的标准,比如WSDL、SOAP等。云计算还没有形成成熟的标准,不同的服务供应商之间达成一致还比较困难。SOA与云计算的关系是一种互补的关系。云计算和SOA的供应商可以互相借鉴和学习。云计算中服务的设计和服务的扩展性都是值得SOA借鉴的。而SOA中的服务治理和架构驱动是云计算值得学习的地方。
    3.2 SOA与云计算的集成方法
    由于在SOA发展的早期一些企业没有从SOA的投资中收益,很多企业对SOA产生了怀疑。经过一段时间的思考,人们对SOA的理解回归理性,对SOA的应用场景有了更为准确的定位。云计算的出现为SOA提供了新的发展起点,将SOA与云计算结合在一起运用于企业的信息化是当前推进两者发展实现双赢的有效途径。本文提出从以下几个方面进行SOA与云计算的集成。
    (1)建立配套的规范标准。目前SOA和云计算都不是十分成熟,二者在标准化方面也有显著差异。S0A在标准化方面已经走到了前面,已经有了一系列的规范,而云计算还处于各方各自为战的局面。由于SOA和云计算最大的共同点就是服务,在服务方面也应该建立统一的标准,使得SOA可以通过云计算对外提供服务。另外SOA还可以根据服务的粒度采用云计算的服务进行新的服务组合。
    (2)提供高可用的服务。云计算中运维工作由云服务提供商和虚拟化等技术承担,而可伸缩性也导致云计算的用户在一定程度上失去了对资源的控制权。在云计算中服务出现故障或者供应商出现问题时,云计算的用户就面临应用无法使用的问题。使用SOA实现应用系统的组件化和服务化是解决这一问题的措施之一。在基于SOA构建应用系统时,将应用功能细分为细粒度、无状态的组件,然后将其封装为服务,将同一服务的不同实例分散到多个实例中运行,从而提高服务的可用性。在云计算环境中,使用中的云服务是不可控的。这就需要在架构设计时充分了解云服务的可用性。为了提供高可用的服务,在云计算标准化之后,还可以使用多个云服务提供商提供服务来实现高可用。
    (3)改进服务发现。服务发现是SOA中必不可少的功能,它帮助将经过注册的服务提供给用户使用。在云计算中与SOA类似,也需要服务发现功能的支持。与SOA不同的是,云计算中采取的是付费订购模式,需要用户申购才能使用需要的服务。结合SOA的服务发现技术,云计算中可以改进服务发现机制,支持用户从数量庞大的服务中进行选购。
    (4)完善服务治理和管理功能。服务的治理或管理对SOA的成功实施非常重要。在SOA的发展中,治理技术已经积累了一定的基础。而云计算中几乎没有任何治理的思想,也没有云计算控制和执行策略,对云计算在企业中的应用起到了阻碍作用。云计算中对服务进行定价收费也是服务治理的一个重要应用场景。因此,利用SOA中的服务治理管理经验来推动云计算的发展,完善服务治理是SOA与云计算的有效结合点。
4 结语
    云计算越来越受到企业的关注,已经成为了最炙手可热的瓶兴技术。云计算的发展也为SOA带来了新的活力,将二者结合运用成为了企业可选的新的发展路线。本文提出的SOA与云计算集成的方法为企业更好运用这两种技术提供了参考。