谈SOA和云计算关系和相互演进融合
今天整理下SOA和云计算的关系和相互演进,在前面我谈中台,微服务的相关文章的时候也多次提到,实际上当前的中台,微服务更多也是SOA和云计算思想的进一步发展。因此还是有必要将我原来整理的SOA和云计算关系的内容分享下。SOA和云计算的关系
首先对于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使业务系统灵活应对业务需求的变化,而云计算使软硬件环境灵活响应业务系统。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更好的集成。SOA和云计算的相互演进
企业私有云中云能力的进化
早期系统重要特点是相互分割的烟囱式的系统,这些系统的构建独占各种物理资源和技术资源,系统之间相互割裂和异构,系统之间通过各种不标准和统一的方式交互信息和传递数据。
演进的第一阶段首先是基础设施层能力的集中化,即通过IaaS层建设构造企业内部私有云的虚拟资源池,提供统一的计算能力和存储能力。在这个阶段同时会引入SOA中间件进行异构系统之间的数据集成和应用集成。
演进的第二阶段重点讲放在PaaS层能力和数据层能力的构建上,一方面是将SOA中间件中的ESB,BPM等发展为内部的PaaS云平台,一方面是考虑各种业务系统中可抽取公共技术资源和数据的抽取,形成各种公共技术引擎和主数据管理中心。PaaS平台首先是数据库,中间件的平台化,即我们所说的执行环境的云化;其次才是开发环境和测试环境的云化。
演进的第三阶段重点是IaaS层和PaaS层构成了完整的快速构建SaaS应用所需要的硬件层能力和软件公用平台层能力,基于IaaS层和PaaS层可以快速的构建SaaS层应用。其次对于IaaS层和PaaS层可能会形成多朵云,各司其职,这些内部私有云之间可以通过ESB总线更好的进行协同。
SOA架构下的云化-硬件和平台层面
从硬件和平台层面来看,SOA架构下的云化包括了基础设施层和平台层两个方面的内容,首先是进行虚拟化资源整合和资源统一动态调度。其次是考虑数据库,中间件各种运行环境云化,再次是考虑各个业务系统都需要的开发环境的云化。有了这个即可以快速过渡到阶段3。具体三个阶段如下:阶段1 : 实现IT硬件基础设施层面的云化和资源动态调度阶段2 : 实现开发平台,开发环境层面的云化,业务基础数据层面云化阶段3 : 实现应用的快速组装和构建,满足SaaS多租户等架构
SOA架构下的云化-软件和技术层面
从软件和技术层面来看,SOA架构下的云化可以实现能力集成中心和能力产生中心的进一步融合,首先考虑基础设施和平台层云化。 SOA的集成点将由业务系统间的集成转化为云化后各能力中心的集成。
在剥离了IT硬件基础设施后,对于业务系统解耦后的数据层,业务规则层,流程层,界面展现层都可以考虑是否存在共性和公有,是否可以朝云端迁移和集中化。在云端形成类似主数据平台,规则引擎库,公共流程平台等。
云平台下SOA中间件的集成
首先要说明的是,在各方面的能力都云化后,在云端会形成多朵云,云之间交互可以通过ESB集成进行。云端提供了从开发环境,测试环境,自动部署,执行环境,底层硬件环境,平台技术环境等一系列的支撑云。在有了这些能力提供后,业务系统可以根据快速的通过组装这些能力快速的构建应用。
即业务只关注业务本身,不关注技术和基础设施,基础设施和平台全由云端提供。传统的应用开发模式会变成真正意义上的应用编排和组装方式,原有的业务系统真正变成了瘦应用。