求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Modeler   Code  
会员   
 
  
 
 
     
   
分享到
谈SOA和云计算的关系
 

作者:人月神话,发布于2012-2-16

 

首先对于SOA是解决集成的问题,这个集成包括了数据集成,应用集成,流程集成和B2B集成。为了解决集成问题在实施SOA时候需要分两个大步骤,即SOA本身的定义:其一是将业务系统能力分解为独立,自治,离散和可复用的服务;其二是对服务进行组装和编排来满足业务和流程的变化。

谈SOA的时候我们谈到两个方面的解耦,其一是业务需求和技术实现的解耦,其二是业务操作和业务数据的解耦。可见谈SOA的时候我们更多的还是从软件层面再谈,关注的是软件架构,对于SOA期望达到的目标可以从下图来看:

对于这个图再做些解释,包括如下内容:

  • 应用系统涉及的跨系统边界的主数据抽象到主数据管理系统,提高数据服务能力。
  • 业务系统下层,业务模块分为界面和逻辑两个部分内容,业务模块下沉为提供业务服务能力的单元
  • 流程引擎+业务规则引擎可以进一步对业务服务,数据服务进行服务的编排
  • 展现层可以实现界面层的组装,可以调用数据服务能力和业务服务能力

SOA实现的一个终极目标我们原来谈的比较多的是流程整合,现在可以进一步理解为通过已有的数据服务,业务服务,展现层组件,借助界面建模,流程引擎和规则引擎实现灵活的应用组装,而不仅仅是服务集成。

对于这个图再做些解释,包括如下内容:

  • 应用系统涉及的跨系统边界的主数据抽象到主数据管理系统,提高数据服务能力。
  • 业务系统下层,业务模块分为界面和逻辑两个部分内容,业务模块下沉为提供业务服务能力的单元
  • 流程引擎+业务规则引擎可以进一步对业务服务,数据服务进行服务的编排
  • 展现层可以实现界面层的组装,可以调用数据服务能力和业务服务能力

SOA实现的一个终极目标我们原来谈的比较多的是流程整合,现在可以进一步理解为通过已有的数据服务,业务服务,展现层组件,借助界面建模,流程引擎和规则引擎实现灵活的应用组装,而不仅仅是服务集成。

而对于云计算,我还是强调本身的定义一定是终端能力向云端的迁移过程,那我们在谈应用系统的时候一定是根据关注应用系统的部署架构和开发运行环境,而不是应用系统的软件架构本身。云计算重点是解决业务系统和IT硬件环境的解耦,在这个过程中也是需要分两个关键的步骤:

  • 底层的虚拟化,包括计算能力,存储能力和网络能力,形成可调度的标准资源池
  • 根据业务系统的需求和并发情况对底层虚拟化资源进行动态调度

这个是我们谈云计算的时候谈的最多的方面。当我们谈到PaaS层的时候,那概念就不仅仅限于这方面了,更多的是我们希望业务系统本身的开发环境,测试环境和执行环境都能够迁移到云端。

PaaS层的这个迁移虽然很困难,但是具有很重大的意义。首先是整个开发,测试和执行全部在云端。这样应用程序在开发测试环境后,可以直接调用IaaS层的能力后对应用进行自动部署,而自动部署的应用可以发布为SaaS应用,提供应用租赁和计费功能。其次PaaS层提供的执行环境有效的衔接SaaS层和IaaS层,能够根据业务和应用的并发访问量动态的调度IaaS的计算资源和存储资源,真正实现云计算三层的一个融合。

SOA和云计算的关系

从前面SOA和云计算各自单独的分析,可以看到要进一步分析两者的关系和集成并不是一件特别容易的事情。在这里我们可以从两个方面的考虑,一个是在SOA架构中引入云,一个是在云计算架构中引入SOA。

在SOA架构中引入云,首先可以考虑SOA平台本身的ESB能力,流程引擎能力,规则引擎能力,这些能力可以演化为云计算中PaaS层平台的能力。其次对于SOA平台也需要IT硬件基础设施,这些基础设施可以直接使用云计算平台IaaS层的计算能力单元和存储能力单元,这些单元也可以服务的方式接入到ESB总线上,包括我们说的云存储,分布式计算等能力都可以集成到ESB总线。

在云平台中引入SOA,这个可以看前面谈到的云计算中间件,当形成云计算中间件的时候,ESB总线是该中间件平台必须要具备的一个能力,通过ESB总线可以实现IaaS,PaaS和SaaS层之间通过ESB的总线式集成。其次,我们再谈PaaS的时候谈到它既是一个在线开发环境,也是一个在线执行环境,而不管是对于开发和执行,在SOA中我们谈到的数据服务,业务服务,流程服务,展现服务等都可以作为PaaS层在线开发的时候的能力单元。而这些能力单元在线进行服务编排和组装又可以借助SOA本身已有的BPEL和规则引擎来完成。只是SOA中间件本身的很多能力都云化了,而不再是为单个应用提供服务。

SOA解决业务需求到技术实现的分离,而云更多解决技术实现到IT基础设施单元的分离。SOA使业务系统灵活应对业务需求的变化,而云计算使软硬件环境灵活响应业务系统。

首先再对SOA和云计算的核心做一个简单的阐述。对于SOA其重点是包括两个内容,一个是找到服务,一个是编排服务;找到服务重点是服务分析识别方法,同 时保证服务的自治性,粗粒度和可重用性等;编排服务重点是服务通过编排能够满足业务和流程的需要。对于云计算重点则首先是能力由电脑,手机等各种终端朝云 端的迁移和集中,其二是迁移后的云端资源池能够自动伸缩扩展,统一管理和调度。

对于SOA和云计算,可以看到都在谈能力,SOA注册上线的服务本身是一种能力,而云平台中的能力本身也需要服务化提供出去。能力和资产库始终是后续围绕 SOA的一个关键。对于两者比较也需要从能力方面入手,结合SOA和云计算本身的定义特点来分析。具体包括如下几个方面:

1.能力如何来?能力集成还是能力产生

对于SOA要注意的是本身是一个集成平台,其本身并不产生能力,本身也不存储和结构化数据,更重要的是消息协议转化,路由和数据的传输。SOA服务目录库能力来源于业务系统,业务系统提供服务注册到SOA的服务目录库中,因此SOA更多是能力集成平台。可以将业务系统各个层面的能力转化为数据服务,业务服务,流程服务和展现层服务。通过SOA来集成这些服务,提供统一的服务目录库来屏蔽底层业务系统。

对于云计算则根据强调能力的集中化,特别是原有业务系统,原有终端都具备的能力要全部迁移到云端集中,然后由云平台统一来提供这种能力,调配这种能力。同一个能力不应该在各个业务系统反复的建设,而是应该集中到云端来统一建设和管理。建设完成的能力再通过服务化方式提供出去。

2.能力如何用?能力复用还是能力调度

对于SOA和IaaS层云计算都有一个共性特征,即先通过解耦方式拆分再进行合并和组合。一个通过解耦形成的是标准的可复用的服务单元,而一个通过解耦形成的是标准的计算资源或存储资源。对于SOA的解耦重点是实现了业务和技术的剥离,而对于云计算解耦重点是实现业务系统和硬件环境的剥离。

从拆分的过程来看,SOA拆分是要打破原有业务系统的紧耦合,识别出可重用的服务,形成粗粒度的业务组件或服务组件;而云计算中资源池的拆分更多是已有硬件环境通过虚拟化方式的整合,将大的计算或存储能力通过虚拟化后形成更小的可以调度的计算单元或存储单元。

从合并的过程来看,SOA重点是对服务进行重新组装和编排,以满足业务或流程的需要。而对于云计算则是对计算单元或存储单元进行调度和组合,满足不同业务系统对计算或存储能力的需要。再次服务单元可以看到复用本身不会带来太多的硬件开销,而计算单元在复用则具有独占性,不能同时供给多个消费系统使用。

3.能力如何融合?SOA能力云化还是云平台服务化

首先可以看到SOA平台提供的ESB,BPEL和BPM能力本身就可以看做企业私有云里面的PaaS平台层能力,这个能力不在业务系统内部,而是在云端。这个能力是从业务系统迁移出来的能力,具备PaaS平台特点。

SOA和云平台融合,可以考虑企业业务系统中的平台层和基础层得能力全部迁移到云端集中。平台层能力包括了数据集成平台,流程管理平台等;而基础层能力则包括了主数据管理,规则引擎,安全引擎等。硬件层比较容易说,则业务系统对应的硬件层能力全部迁移到企业私有云的IaaS平台,提供统一的虚拟化资源池和资源动态调度。在上面一步做到后,可以考虑的是企业内部业务系统的SaaS化,特别是对于大型集团型企业,这个是有必要的,SaaS化的重点不仅仅是支持内部多租户,更多的是要考虑SaaS应用构建模式变化,其构建过程会更多依赖IaaS和PaaS层能力的提供。

对于云平台在能力集中后,需要考虑的就是能力的提供,能力的提供仍然需要通过服务的方式发布出来,即我们说的能力本身要服务化。其一是云平台本身的三层之间可以通过SOA进一步集成,其二是企业多个业务能力私有云之间可以通过SOA更好的集成。

 
分享到
 
 
     


专家视角看IT与架构
软件架构设计
面向服务体系架构和业务组件的思考
人人网移动开发架构
架构腐化之谜
谈平台即服务PaaS
更多...   

相关培训课程

云计算
Windows Azure 云计算应用开发