面向服务的体系结构(SOA)是开发与业务模型保持最佳一致性的软件应用程序。SOA会提高业务和信息技术(Information Technology,IT)以及IT部门和各个团队间所需的合作和协调级别。这个合作和协调是通过SOA治理提供的,涵盖了用于指定和管理如何支持服务和SOA应用程序的各个任务和流程。
若SOA不进行有效治理,那么即使部署很的好SOA也不会稳定健康运行。例如服务的提供和服务的使用都需要治理,在服务提供方面,你要对已提供的服务进行治理,包括服务的版本、服务的时间和服务的升级等。在服务使用方面,你也需要对服务的使用访问权限和服务的稳定提供作相应治理。
SOA治理主要包括指导可重用资产的开发、确立如何设计与开发服务,以及这些服务如何随时间增长进行更改。它将在服务提供者和服务使用者之间建立一个协议,告知使用者可以希望得到什么功能,告知提供者应该提供什么功能。SOA治理并不设计服务,而是指导将如何设计服务。治理更多的是政策问题,而不是技术或业务问题。治理并不会确定决策的结果是什么,而是考虑必须进行哪些决策以及谁进行这些决策。
SOA治理要负责建立策略并监督其执行,从而帮助确保企业的SOA成功。建立各种策略,以用于标识和开发服务、建立SLA、管理注册中心以及进行其他有效治理的工作。将这些策略付诸实施,指导和帮助团队开发服务和组合应用程序。
服务开发遵循生命周期原则即我们前面提到的SOA生命周期。SOA治理也同样遵循生命周期原则,即SOA治理生命周期。这两个生命周期相互配合、同时运行,并且一起被使用来产生SOA组合应用程序及其服务。SOA治理生命周期产生一个治理模型来管理SOA生命周期。SOA治理生命周期如图1所示
SOA治理生命周期
n 计划——确定治理的重点。
n 定义——定义SOA治理模型。
n 启用——实现SOA治理模型。
n 度量——改进SOA治理模型。
SOA治理的具体工作:
n 服务定义
SOA治理最基础的方面就是监视服务的创建过程。必须对服务进行标识,必须描述其功能,确定其行为范围并设计其接口。治理COE可以不执行这些任务,但要确保有人执行这些任务。COE对创建服务和需要使用这些服务的团队进行协调,以确保满足相关的需求,并避免重复工作。
n 服务部署生命周期
服务并不会瞬间立即形成,然后永远存在。和任何软件一样,需要进行规划、设计、实现、部署、维护,并最后退役。应用程序生命周期可以为公开性的,从而影响组织的很多方面;但服务的生命周期的影响甚至可能更大,因为多个应用程序可能会依赖于单个服务。
n 服务版本治理
提供服务后不久,这些服务的用户就开始需要进行一些相应的更改。需要对问题进行修复,需要添加新功能,需要重新设计接口,还需要删除不需要的功能。服务反映业务的情况,因此,随着业务发生变化,服务也需要进行相应的更改。
n 服务迁移
即使使用版本治理,使用者也不能期望永远提供和支持某个服务(或更准确地说,希望使用的一个服务版本)。服务提供者最终一定会停止提供此服务。版本兼容性可以帮助延迟这个“最后审判日”,但却不能消除这个问题。版本治理并不会使服务开发生命周期过时,而会允许生命周期扩展到多个连续的代。
n 服务注册中心
服务提供者如何提供和宣传其服务?服务使用者如何查找其希望调用的服务?这些都在服务注册中心的职责范围内。服务注册中心将担当可用服务清单的角色,并提供调用服务的地址。
服务注册中心还可以帮助进行服务版本的协调工作。使用者和提供者可以指定它们需要或提供的版本,注册中心将随后确保仅列举出使用者所需版本的提供者。注册中心可以管理版本兼容性,跟踪版本间的兼容性并列举出使用者所需的版本或兼容版本的提供者。注册中心还可以支持服务状态,如测试状态和(如前面提到的)已弃用状态,且仅向希望使用服务的使用者提供具有这些状态的服务。
n 服务监视
此类监视可以帮助在问题出现前检测和防止问题。可以检测不均衡和停机状况,能在这些情况造成重大影响前发出警告,甚至可以尝试自动纠正问题。可以对长时间的使用情况进行度量,以帮助预测使用率会变得更高的服务,以便为其提供更高的容量。
n 服务所有权
SOA应该能反映其业务。这通常意味着要更改SOA来适应业务,但在这种情况下,可能有必要更改业务来与SOA匹配。如果不可能,则需要提高多个部门间的合作水平,以分担开发公共服务的任务。这样的合作可以通过跨组织的独立委员会来实现,此委员会实际上拥有服务,并对其进行管理。
n 服务测试
服务部署生命周期包括测试阶段,在此阶段,团队将在激活服务前确认服务能正确工作。如果测试了服务提供者,且表明其工作正常,使用者是否需要也对其进行重新测试?是否采用同样的严格要求对服务的所有提供者进行测试?如果服务更改,是否需要对其进行重新测试?
n 服务安全
是否允许任何人调用任何服务?具有一系列用户的服务是否允许其所有用户访问所有数据?服务使用者和提供者之间交换的数据是否需要进行保护?服务是否需要足够的安全,以满足其最偏执的用户或最懒散的用户的需求?
SOA治理对企业的SOA成功非常关键。治理涉及到建立相关职责和授权负责方,而管理则涉及到确保治理策略实际执行。技术不仅可以用于设置治理,也可以用于执行管理。服务调用期间管理的治理可以由ESB进行有效的管理,可简化提供者和使用者的职责。只有好的SOA治理,才能让企业的SOA服务更稳定、健康和安全运行。