再谈SOA和云架构设计的一些要点

标签: IT咨询 | 发表时间:2014-08-25 20:27 | 作者:人月神话
出处:http://blog.sina.com.cn/cmmi
对于SOA和云架构设计方面的内容,前面已经有很多文章涉及到,在这里再重点谈下SOA和云架构设计和传统EA企业架构和单业务系统架构设计之间的一些区别和联系。

SOA和云架构设计更多的是在企业架构的应用架构和技术架构层面,然后才过渡到单个应用的架构设计约束,因此也可以理解为是传统软件架构设计更加上层的一个内容。SOA和云架构设计更加确切点来说应该是基于SOA和云计算思想的架构设计改进,而不是对面向对象架构设计思想的否定。

SOA思想强调的解耦,解耦思想最终落实到架构设计中是业务能力组件化,组件间的交互通过服务接口进行,粗粒度的服务本身就体现了松耦合,解耦不仅仅是组件的应用层,还包括了数据库和数据层都能够自成一套可以独立进行需求,设计,开发,测试和运维的全生命周期管理。另外为了最大限度的解耦,还需要借助消息中间件或服务总线,还需要考虑尽可能将同步服务转换为异步服务设计。

SOA思想强调的粗粒度,在架构设计中需要考虑的是不同的业务系统,组件或模块间只需要暴露需要暴露的服务能力而高内聚的屏蔽内部的数据和业务的复杂性。同时组件之间的交互要尽可能的减少传统意义上的数据库层的数据集成,数据集成和同步一方面是数据多点落地带来的数据实时性和一致性方面的问题,一方面是数据的集成同步导致大量组件内部逻辑外泄。同时尽量在架构设计过程中遵循领域设计和建模的思路,即在数据库上抽象领域对象层,以屏蔽底层数据模型细节。

SOA思想强调的可复用,在传统的架构设计中本身就有一个重要步骤即可复用的组件的抽取,可复用的组件朝外提供的服务能力自然也是可复用的服务,这是其一。传统架构设计中进行完模块和组件划分后,需要考虑组件之间的接口设计,那么在接口设计中需要考虑接口本身的服务化设计,接口本身的可复用性设计。对于底层技术组件或共享数据组件的可复用大家比较容易理解,而对于业务服务的可复用重点则在于可以复用到多个不同的业务场景或业务流程中服务的组合和组装。

SOA思想强调的服务本身的灵活组合和组装,这个内容往往偏EA架构设计层面的内容,即需要从端到端的业务流程层面来识别和分析服务。传统的架构设计往往关注的是一个个核心用例功能点,而服务组装编排关注的则是跨多个业务功能点的流程协同。提出这个的原因也正是,当我们在企业内规划和建设一个全新的系统时候,务必先考虑该系统在整个企业应用架构体系中的位置,该系统和其它业务系统间的横向纵向业务系统关系,然后再过渡到系统内架构设计。

对于单个系统,前面专门有文章谈过基于SOA的架构设计要点,这里再重点描述下即,单个系统能够组件化设计,组件之间能够做到从数据库到应用层相对独立,组件之间只能通过服务接口交互,这个重点解决了组件间的横向协同问题;其次,单个组件的设计建议的方法还是遵循领域建模的思路,最好是在原来的分层技术架构上,增加专门的服务层,即对于单个组件纵向来说也通过服务层来实现底层领域服务逻辑和上层界面展现和服务组装的分离。对于组件纵向可以采用传统API服务接口,而对于组件横向则采用WebService接口来实现进一步的解耦。

从以上分析来说,当我们谈到SOA架构设计的时候,不要一开始就被消息中间件,ESB服务总线等内容误导,如果没有充分的考虑SOA思想内涵并在传统的架构设计中引入SOA思想,那么即使采用了ESB服务总线最终也可能只起到了简单的接口平台的作用。

接着谈下云的思想,云思想的核心是终端能力朝云端的迁移,即集中化。SOA虽然强调了复用,但是这个复用可能还是在原来单个业务系统内部建设,然后再将服务能力共享出来,而云的思想更多的则考虑建设都不在传统的单个系统内部了,而应该集中化建设,能力集中提供,这个集中化提供的地方即平台。基于这个思想需要注意到的就是对于传统的软件架构设计而言,由于关注的是单个业务系统,可复用的组件或能力还在系统内部,而到了云架构设计阶段,关注的是企业内整个应用和技术架构体系,因此这些可复用的内容从传统的系统内转化到了完全的系统外,这个是云架构设计思想下很重要的一个转变,即准备有了完全独立于系统外的可为多个业务系统提供服务能力的云平台。这个云平台不是简单的IaaS平台,而更多是PaaS层面的流程平台,数据平台,集成平台,技术平台等。

云思想强调无限伸缩,对应到架构设计中即可扩展性,对于传统的架构设计我们更加关注的是组件或接口本身的技术可扩展性,而比较少关注业务系统本身所对应的IT基础设施或平台本身的资源弹性伸缩扩展性,这个在架构设计中也是可以考虑引入的,包括各种分布式存储,分布式处理和计算,数据拆分,对PaaS资源托管平台的统一接入和适配等。

最后,在涉及到云架构设计的时候,需要考虑多租户设计,多租户设计和传统架构设计中的多组织设计还有些区别,租户往往有更加严格的资源隔离和资源流量控制要求,而不仅仅是数据访问上的隔离。还有就是在基于云架构设计中,需要重点考虑自服务模式,即围绕服务全生命周期的管控来考虑云的能力的服务化提供。
  青春就应该这样绽放   游戏测试:三国时期谁是你最好的兄弟!!   你不得不信的星座秘密

相关 [soa 架构 设计] 推荐:

SOA架构咨询

- - 人月神话的BLOG
对于SOA架构咨询,其核心还是在于组件化和服务化,然后才是服务管控和治理,基于服务化思想对传统软件开发生命周期过程的改进. SOA架构大家刚接触时候很容易将其理解为一种单纯的技术架构,或者更多的人仅仅是将SOA理解为service服务接口,这些都是对SOA方法论很大的误解. SOA咨询一个重点就是业务驱动IT,而非单纯的IT架构咨询,SOA咨询一般都会结合企业架构和云的思想,结合组件化架构和领域服务的思想,高层结合BPM端到端流程整合目标,并对这些内容进行有效的融合.

再谈SOA和云架构设计的一些要点

- - 人月神话的BLOG
对于SOA和云架构设计方面的内容,前面已经有很多文章涉及到,在这里再重点谈下SOA和云架构设计和传统EA企业架构和单业务系统架构设计之间的一些区别和联系. SOA和云架构设计更多的是在企业架构的应用架构和技术架构层面,然后才过渡到单个应用的架构设计约束,因此也可以理解为是传统软件架构设计更加上层的一个内容.

eBay开源SOA-Turmeric架构

- - 人月神话的BLOG
参考: https://www.ebayopensource.org/wiki/display/TURMERICDOC/Turmeric+Documentation+Overview. Turmeric是一个综合的、由策略驱动的SOA平台,提供了对SOA服务及其消费者的开发、部署、保护、运行和监控等方面的支持.

SOA面向服务架构

- - 人月神话的BLOG
今年在这点上谈的比较多,也逐步开始落地实施,将SOA咨询和实施方法论从系统间真正的引入到系统内,将面向对象的需求分析方法和SOA思想进一步融合,从业务建模到系统用例建模,从流程分析到服务识别和分析,从业务组件化到系统模块化,这些工作都逐步开始落地实施. 这样做的好处就是进一步的体现SOA可复用组件的价值,真正的做到业务组件化和组件能力化.

谈企业架构和SOA的融合

- - 人月神话的BLOG
本篇讲主要强调下在常规的企业架构规划和顶层设计中与SOA规划设计之间的融合. 再次强调下SOA的核心思想是解耦,在首先满足解耦的要求下实现共享,协同和复用. 一个完整的业务系统被拆分了应用,服务和资源层能力三个方面的内容. 资源层的能力最终以粗粒度的服务方式暴露出来,应用的构建需要大部分的借助于共享服务层抽取和接入的各种服务能力.

面向服务的架构SOA

- - CSDN博客架构设计推荐文章
SCA实现SOA的最佳方式. Apache开源框架Tuscany实现SCA架构. SOA(Service-Oriented Architecture)面向服务的体系架构. 为了能够深入理解还专门查了单词:Oriented:面向,Architecture:架构,没办法英语太烂. 实际上是一个组件模型,他将应用程序的不同功能单(称为服务)通过定义良好的接口联系起来.

SOA和微服务架构沟通(2.8)

- - 人月神话的BLOG
今天在广州交流SOA和微服务架构,特对关键内容做简单记录. 对于SOA和微服务架构的区别,在知乎一个回答里面我已经进行了详细的说明,即微服务架构强调的第一个重点就是 业务系统需要彻底的组件化和服务化,原有的单个业务系统会拆分为多个可以独立开发,设计,运行和运维的小应用. 这些小应用之间通过服务完成交互和集成.

对SOA架构思想的一些说明

- - 人月神话的BLOG
传统业务系统的构建更多的是竖井式的纵向思想,这个主要是从单个业务系统孤立来看都是垂直应用. 那么SOA架构的视角是从整个企业应用架构环境来看,思想的核心转变就是从传统的纵向独立构建模式转变为横向从底朝上逐层构建模式,在这个构建模式中首先是底层的资源层(独立的业务组件),然后是服务层,再上面才是应用层和门户展现层.

浅谈SOA面向服务化编程架构(dubbo)

- - ITeye博客
并非淘宝系的技术啦,淘宝系的分布式服务治理框架式HSF啦 ,只闻其声,不能见其物. 而dubbo是阿里开源的一个SOA服务治理解决方案,dubbo本身 集成了监控中心,注册中心,负载集群...等等. 代码和整体的框架还是很优雅滴呀. github地址 https://github.com/alibaba/dubbo.

论SOA架构的几种主要开发方式

- - CSDN博客推荐文章
 面向服务架构soa以其独特的优势越来越受到企业的重视,它可以根据需求通过网络对松散耦合的粗粒度应用组件进行分布式部署、组合和使用. 服务层是SOA的基础,可以直接被应用调用,从而有效控制系统中与软件代理交互的人为依赖性. Soa的开发方法一般主要有开源的dubbo、dubbox、mule、wso2、cxf,以及付费的oracle soa、ibm soa等.