首先对于SOA是解决集成的问题,这个集成包括了数据集成,应用集成,流程集成和B2B集成。为了解决集成问题在实施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使业务系统灵活应对业务需求的变化,而云计算使软硬件环境灵活响应业务系统。
CIO之家 www.ciozj.com 公众号:imciow