首先再对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更好的集成。