对于SOA和云架构设计方面的内容,前面已经有很多文章涉及到,在这里再重点谈下SOA和云架构设计和传统EA企业架构和单业务系统架构设计之间的一些区别和联系。
SOA和云架构设计更多的是在企业架构的应用架构和技术架构层面,然后才过渡到单个应用的架构设计约束,因此也可以理解为是传统软件架构设计更加上层的一个内容。SOA和云架构设计更加确切点来说应该是基于SOA和云计算思想的架构设计改进,而不是对面向对象架构设计思想的否定。
SOA思想强调的解耦,解耦思想最终落实到架构设计中是业务能力组件化,组件间的交互通过服务接口进行,粗粒度的服务本身就体现了松耦合,解耦不仅仅是组件的应用层,还包括了数据库和数据层都能够自成一套可以独立进行需求,设计,开发,测试和运维的全生命周期管理。另外为了最大限度的解耦,还需要借助消息中间件或服务总线,还需要考虑尽可能将同步服务转换为异步服务设计。
SOA思想强调的粗粒度,在架构设计中需要考虑的是不同的业务系统,组件或模块间只需要暴露需要暴露的服务能力而高内聚的屏蔽内部的数据和业务的复杂性。同时组件之间的交互要尽可能的减少传统意义上的数据库层的数据集成,数据集成和同步一方面是数据多点落地带来的数据实时性和一致性方面的问题,一方面是数据的集成同步导致大量组件内部逻辑外泄。同时尽量在架构设计过程中遵循领域设计和建模的思路,即在数据库上抽象领域对象层,以屏蔽底层数据模型细节。
SOA思想强调的可复用,在传统的架构设计中本身就有一个重要步骤即可复用的组件的抽取,可复用的组件朝外提供的服务能力自然也是可复用的服务,这是其一。传统架构设计中进行完模块和组件划分后,需要考虑组件之间的接口设计,那么在接口设计中需要考虑接口本身的服务化设计,接口本身的可复用性设计。对于底层技术组件或共享数据组件的可复用大家比较容易理解,而对于业务服务的可复用重点则在于可以复用到多个不同的业务场景或业务流程中服务的组合和组装。
SOA思想强调的服务本身的灵活组合和组装,这个内容往往偏EA架构设计层面的内容,即需要从端到端的业务流程层面来识别和分析服务。传统的架构设计往往关注的是一个个核心用例功能点,而服务组装编排关注的则是跨多个业务功能点的流程协同。提出这个的原因也正是,当我们在企业内规划和建设一个全新的系统时候,务必先考虑该系统在整个企业应用架构体系中的位置,该系统和其它业务系统间的横向纵向业务系统关系,然后再过渡到系统内架构设计。
对于单个系统,前面专门有文章谈过基于SOA的架构设计要点,这里再重点描述下即,单个系统能够组件化设计,组件之间能够做到从数据库到应用层相对独立,组件之间只能通过服务接口交互,这个重点解决了组件间的横向协同问题;其次,单个组件的设计建议的方法还是遵循领域建模的思路,最好是在原来的分层技术架构上,增加专门的服务层,即对于单个组件纵向来说也通过服务层来实现底层领域服务逻辑和上层界面展现和服务组装的分离。对于组件纵向可以采用传统API服务接口,而对于组件横向则采用WebService接口来实现进一步的解耦。
从以上分析来说,当我们谈到SOA架构设计的时候,不要一开始就被消息中间件,ESB服务总线等内容误导,如果没有充分的考虑SOA思想内涵并在传统的架构设计中引入SOA思想,那么即使采用了ESB服务总线最终也可能只起到了简单的接口平台的作用。
接着谈下云的思想,云思想的核心是终端能力朝云端的迁移,即集中化。SOA虽然强调了复用,但是这个复用可能还是在原来单个业务系统内部建设,然后再将服务能力共享出来,而云的思想更多的则考虑建设都不在传统的单个系统内部了,而应该集中化建设,能力集中提供,这个集中化提供的地方即平台。基于这个思想需要注意到的就是对于传统的软件架构设计而言,由于关注的是单个业务系统,可复用的组件或能力还在系统内部,而到了云架构设计阶段,关注的是企业内整个应用和技术架构体系,因此这些可复用的内容从传统的系统内转化到了完全的系统外,这个是云架构设计思想下很重要的一个转变,即准备有了完全独立于系统外的可为多个业务系统提供服务能力的云平台。这个云平台不是简单的IaaS平台,而更多是PaaS层面的流程平台,数据平台,集成平台,技术平台等。
云思想强调无限伸缩,对应到架构设计中即可扩展性,对于传统的架构设计我们更加关注的是组件或接口本身的技术可扩展性,而比较少关注业务系统本身所对应的IT基础设施或平台本身的资源弹性伸缩扩展性,这个在架构设计中也是可以考虑引入的,包括各种分布式存储,分布式处理和计算,数据拆分,对PaaS资源托管平台的统一接入和适配等。
最后,在涉及到云架构设计的时候,需要考虑多租户设计,多租户设计和传统架构设计中的多组织设计还有些区别,租户往往有更加严格的资源隔离和资源流量控制要求,而不仅仅是数据访问上的隔离。还有就是在基于云架构设计中,需要重点考虑自服务模式,即围绕服务全生命周期的管控来考虑云的能力的服务化提供。
青春就应该这样绽放 游戏测试:三国时期谁是你最好的兄弟!! 你不得不信的星座秘密