当今社会,企业总是面临着激烈的竞争和复杂多变的商业环境,企业需要对各种变化快速和有效地进行响应,并且利用变更来得到竞争优势。这就意味着企业需要一种业务敏捷性IT系统架构来应对这种复杂多变的需求。SOA(Service-Oriented Architecture,面向服务的体系结构)的出现为企业信息化提供了新的思路和方法。基于SOA架构的IT系统,能够更快、更灵活地部署,同时又具有良好的扩展性和伸缩性,能够更好地将企业的信息资源进行整合,消除“信息孤岛”,使IT系统与不断变化的业务目标相一致,让企业能够随需应变。
一 关于SOA的定义
SOA概念自被提出之后,不少国内外机构、企业均对SOA进行了定义和阐释,但目前尚未有一个统一的、业界广泛接受的定义。一般认为,SOA是一种架构模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种这样的系统中的服务可以以一种统一和通用的方式进行交互。因此,本质上SOA不是一个产品,甚至算不上一项技术,而是一种构建以解决商业问题为中心的信息技术IT系统的思路。SOA的意义在于让IT变得更有弹性,使业务与IT保持同步,从而更好适应变化。SOA的核心价值在于用新的思维方式将企业信息化解构为“组件化”业务模式,这些“组件”是可以重复使用的,然后如搭积木一般,将这些“组件”高效、灵活地拼接成企业的业务流程,以此推动商业创新。
二 SOA的基本特征
虽然SOA没有标准的定义,但是SOA有以下几个被广泛认可的关键特性。
2.1 松耦合
SOA的一部分价值就在于它的服务的松耦合。服务是一个由服务提供者提供的、服务使用者请求的业务单元。松耦合指的是使用者能够随需应变将多种服务组合在一起来构建不同的组合服务,或者将组合服务进行解体,成为功能组件。同时,它要求这些服务之间保持一种相对独立、无依赖的关系,当业务流程启动时,这些服务彼此之间暂时地建立关联,并在整个流程中维系这种相关性,流程结束后又重新回到静止状态,与之前相关联的模块不再保持相关性。这就像电话系统,当按下“通话”键时流程开始,才可以和对方通话,建立一个松耦合连接;通话结束后,又重新回到了“静止”状态,直到下一个连接再次建立。这样电话服务商即使有一百万个用户,也不必提供一百万个实时的电话链路,只要保证最高通话量就可以了。对松耦合系统的需求源于企业不断变化的业务,业务应用程序需要变得更加灵活,以适应不断变化的需求。尽管紧耦合的系统通常比较快,也安全,传输误差的风险非常低,但是紧耦合意味着应用程序的不同组件之间的接口与其功能和结构是紧密相连的,因而当需要对部分应用或模块进行某种形式的更改时,它们就显得非常脆弱。而松耦合的系统,由于服务(应用程序)是独立的。这就减少了因部分应用或模块的变化而引发其他应用或模块变化的风险。因此,在这个层面上讲,松耦合系统更为可靠、灵活。
2.2 可重用
所谓重用性,就是指服务能够应用于不同应用和业务流程的能力。通过重用可以获得降低开发维护成本、缩短应用交付周期和提升质量等种种好处。服务的可重用性受创建该服务的颗粒度的直接影响,颗粒度可以理解为一个服务所包含功能的数量。通常颗粒度越小,重用性越好,但是粒度太小,会导致性能问题。并且业务任务与支持其的服务之间的映射会变得非常复杂。服务的粒度大小需要根据企业实际需求来权衡。
2.3 明确定义的服务接口
SOA本身就是为互操作性而生的,要实现这种交互就需要明确定义的接口,称作服务契约。这些契约定义了服务的使用方法及使用者期望的最终结果,还包含了服务质量指标要求、安全性要求等等。服务契约描述采用中立、基于标准的方式进行定义,它独立于底层平台和编程语言。Web服务是实现SOA的方式之一,随着Web服务标准的成熟和应用的普及,SOA的实现一般都会包含Web服务,甚至可以说Web成就了今天的SOA。对于用Web服务实现的SOA,WSDL(Web Services Description Language,Web服务描述语言)为定义接口和服务契约提供了可扩展的框架,它描述了服务交互所需的所有细节。同时它又屏蔽了服务实现的任何技术细节,这样即使服务实现修改了也不会影响到服务请求者的逻辑,提高了业务流程的适应性。
2.4 基于开放标准
SOA的实现建立在大量的开放标准和协议之上。服务的互联互通和互操作都存在相应标准,通过对标准的使用可以得到众多好处,包括:
(1)减少对特定厂商的依赖;
(2)为服务请求者增加了使用不同服务提供者的机会;
(3)为服务提供者增加了被更多服务请求者使用的机会;
(4)增加了使用开放源代码的标准实现以及参与这些实现的开发机会。目前在SOA系统中,除强调需要遵守技术标准(如SOAP、WSDL、UDDI)外,服务层的数据模型和流程模型也需尽可能基于一些成熟的业务领域标准或纵向的行业标准。
三 SOA对企业信息化需求的适应性
目前,很多企业的信息化面临两个困境,一是如何对各个应用系统进行整合,二是如何打造灵活的IT架构,以适应多变的业务需求。随着国内企业信息化进程的不断推进,早期以部门为导向的系统已经难以支撑企业的发展。企业需要一个面向企业的、集成的系统来处理更为复杂的业务。以新员工人职来说,需要涉及人力资源、财务和他将要服务的业务部门。从招聘、面试、入职、培训到薪资的整个过程,是一个多部门协作的业务流程,企业信息化目标就是将这个过程由人为干预转向自动实现。而很多企业中人力、财务、业务部门都有各自的系统,要实现企业的信息化目标,必须将这些建设在不同时期、与不同的厂商合作、应用不同技术、具有不同规模的应用系统集成起来。传统的应用系统集成是垂直整合的,通常是采取建立系统间接口,然后实现系统对接,见图1(a)。这种点对点的集成模式会造成逻辑关系随着企业的应用增加成级数上涨,并且存在实施代价高、实施周期过长的问题。同时,系统接口之间必须遵循同样的API(Application Programming Interface,应用程序编程接口)约束。当其中一个实体对象的代码有了更改,那么访问该对象的代码也必须做出相应更改,从而约束了企业敏捷服务和自由扩充的实现。而SOA的设计思想是水平整合,对于SOA架构来说,应用系统暴露出来的业务功能就是服务。将各个系统的业务功能封装成不同粒度的服务,通过定义明确的服务契约发布,然后利用企业服务总线(EntERPrise Service Bus,ESB)作为服务提供者和服务请求者之间的消息桥梁,对消息驱动和服务进行灵活的管理,使各应用系统实现互联互动,见图1(b)。
另一方面,目前很多企业都面临结构转型,业务创新和差异化竞争是企业保持竞争力和活力的必然选择。传统架构下的IT系统过于僵化,面对重大的业务和组织变更,常常需要花费很长的周期来调整系统,或者根本无法满足新的需求。企业需要一种新的更加灵活的IT架构来快速响应新业务、新流程、新组织结构。基于SOA架构的系统,只需要对封装好的服务进行重组,就可以快速部署新的业务流程。同时因为分离了业务逻辑和技术实现,业务人员通过流程、服务、数据对象、事件这些与他们有切实联系的词,就可以描述业务模型和业务需求,IT系统也更贴近企业的需求。
四 实现SOA的重要基础:ESB
企业服务总线(ESB)是逻辑上与SOA所遵循的基本原则保持一致的服务集成基础架构,它就像人的中枢神经,管理着所有服务、消息以及基于事件的交互。IBM定义了ESB应具备的4个基本功能:
(1)服务之间的消息路由;
(2)请求者和服务之间的传输协议转换;
(3)请求者和服务之问的消息格式转换;
(4)处理各种来自不同业务的事件。可以通过4个物品来对应理解这些功能:“路由器”:根据信息内容,在不同应用和服务之间进行信息传输和路由;“转换器”:进行应用之间的通信协议转换;“翻译机”:进行应用之间的消息格式转换;“收发室”:处理来自不同渠道的业务事件(同步传输、异步传输、发布,订阅等方式)。
SOA从根本上来说就是要解决两个问题:重用和异构。ESB从底层架构上对解决这两个问题提供了技术支持。对于服务的重用,ESB提供了服务仓库和消息的路由来实现服务之问的彼此调用。任何符合标准的服务都可以在服务仓库中注册并发布,一个应用如果需要调用一个服务,可以通过浏览或者订阅发现该服务,不用知道这个服务的物理位置及如何调用,只需要发送一个调用的请求,ESB就会将请求路由给最合适的服务提供者。而对于异构环境的连接,这是ESB天生就具备的能力。首先,由于SOA架构中的服务都是基于标准的,这样就极大简化了ESB在集成异构性上的考虑。其次,ESB明确强调消息(Message)处理在集成过程中的作用,这里的消息指的是应用环境中被集成对象之间的沟通。由于集成对象都是服务,消息在应用服务之间传递时的格式是标准的,直接面向消息的处理方式成为可能。ESB只要在底层支持现有的各种通讯协议,那么对消息的处理就完全不考虑底层的传输细节,而直接通过消息的标准格式定义来进行。
如果把SOA比作一座城市,ESB就是其中的道路。ESB技术和产品的出现为SOA的落地找到了一条捷径。
五 结语
SOA提供了一个从“服务”视角解决问题的思路和方法。这使得企业的IT资源能够最大程度地重用,同时又满足了IT系统对业务敏捷性的需求。SOA还指导企业信息资源的整合,让企业更具活力。IBM、SAP、Oracle、Microsoft等大型IT公司正在不断完善基于SOA的一些标准和构架,SOA已经成为企业信息化建设的必然趋势。
转载请注明出处:拓步ERP资讯网http://www.toberp.com/
本文标题:浅析面向服务的IT架构