浅析SOA与云计算的集成方法

1 SOA与云计算的比较

SOA与云计算在很多方面都有重叠,其中最为重要的交叉点是面向服务的概念。云计算关注的焦点是将计算当成可以买卖的商品,比如大规模在线存储、网络应用平台等。云计算提供的服务非常广泛,包括了从硬件层次到应用层软件。而SOA一般提供象Web Service应用这样的服务。SOA与云计算都非常依赖网络,这也是它们共同的缺陷。

虽然SOA与云计算有很多共同点,但是它们有不同的侧重点。SOA实现是系统与系统之问进行集成的技术,允许通过不同的部署语言和平台进行系统集成。基于SOA实现的系统接口一致性能够降低集成的开销,提高系统的敏捷性。云计算的重点是利用网络购买需要的功能,允许市场以商品的形式提供各种功能,避免了用户花费过多成本实现所需功能。在公共标准方面SOA和云计算发展的阶段存在差异。SOA的软件服务实现已有成熟的标准,比如WSDL、SOAP等。云计算还没有形成成熟的标准,不同的服务供应商之间达成一致还比较困难。SOA与云计算的关系是一种互补的关系。云计算和SOA的供应商可以互相借鉴和学习。云计算中服务的设计和服务的扩展性都是值得SOA借鉴的。而SOA中的服务治理和架构驱动是云计算值得学习的地方。

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与云计算的有效结合点。