局限和挑战
现在我们不妨分析一下成功实施SOA所面临的种种挑战。
一、文化障碍
消除组织孤岛的目标不仅仅带来了技术上的挑战。许多公司没有为这种理念带来的深层的文化变革做好准备。许多人习惯于完全控制自己使用的特定应用软件的各方面需求。如今他们却要依赖其他部门提供的服务。如果这种变革未认真处理好,就有可能导致有人对交出控制权心存不满,因为拥有数据和服务的是别人,而不是自己。如果不但与组织里面的部门共享服务,还与外面的交易合作伙伴共享服务,这个问题会进一步复杂化。
二、谁来负责
数据归属权和准确性方面有可能会让人混淆。设想一下:某个应用软件重复使用由另一个部门拥有或者开发的一项服务,这项服务可能反过来会使用属于几个不同部门的其他服务。如果该应用软件因底层服务出现问题而无法正常运行,想想一路查明问题出在哪一方,并且通过层层服务实行补救办法、最终修复应用软件会变得多么困难。
三、实施困难
除了文化和后勤方面的挑战外,成功实施SOA还涉及许多技术上的挑战。单单针对实施服务层,许多组织就在采取暂时性的措施。服务层其实只是SOA的一部分而已。即使如此有限的实施范围,人们也发现实际情况要比预计的来得复杂。他们发现,遗留系统的大小、数量和复杂性使得业务流程配置起来极其困难,这样实现SOA的其中一个主要目标就无从谈起。
新出现的大批服务导致数据管理方面存在可扩展性问题。一小批服务发布到注册中心、使用者发现后加以使用也许很容易。但SOA的真正优点、确实也是面临的挑战在于拥有成千上万的服务,它们必须有效地加以发布、发现及管理。
消除业务和IT之间的分歧、实现业务流程的灵活配置,这需要投资业务流程管理解决方案。可问题在于,正如服务层实施那样,如今BPM实施方面不但选择广泛,还同样让人混淆。
企业级SOA的组成部分
以下概述了实现企业级SOA所必要的几个组成部分。
一、服务层和注册中心
如今实施的SOA大多数关注服务层,进而关注发布及发现服务的注册中心。由于这种架构已落实到位,许多企业已经获得了大大改进的可见性,远胜过Web服务描述语言(WSDL)和UDDI等标准出现之前的时候。遗憾的是,正是由于满足于这种投资回报,大多数实施项目就止步不前——也就是说,等到试图对建立的模型进行扩展的时候,光有服务层和注册中心是根本不足以获得SOA的真正投资回报的。
二、SOA比看起来要复杂
等到通常基于服务层和注册中心的SOA实施项目开始获得一定成效时,IT部门和业务部门就会拼命添加越来越多的服务。发布及使用的Web服务数量急剧增加,这会立即让人把重点放在之前没有预料到的重要功能上。
需要的第一项功能就是联合信息管理功能。服务使用者一下子要面对成百上千的服务,所以需要数据和服务的联合视图,以便了解它们。需要的第二项功能是SOA数据缓存功能。要是没有某种缓存功能,就无法快速、可靠地访问来自SOA实施系统的海量数据。
人们清醒地认识到:数据和服务需要前所未有的治理水平,才能确保有效性,这就需要第三项功能:SOA治理。SOA治理是指定义及执行组织策略和标准的一种方法。这些策略针对诸多业务需求:管理责任和依赖关系、确保业务运作的连续性以及降低成本。因为这些策略定义了控制企业内部数量激增的服务的机制,集成了不断完善的标准,并且促进互操作性,IT部门也能从中得益。
只有组织采用有条不紊、精心制订的方法来满足这些需求,才能真正获得SOA的投资回报。
三、SOA存储库
SOA存储库能够提供的一套服务要比注册中心丰富得多,因为它不但可以访问围绕服务的元数据,还可以访问实际的SOA数据。因而,与注册中心基于元数据的简单服务相比,元数据以及存储库提供的基于数据的发现服务功能要强得多。存储库还提供了把策略管理与转换、联合、抽象及缓存SOA工件(SOA artifact)等功能集成在一起的优点。业务流程和组合式数据服务可以部署在SOA存储库上面并加以管理,以确保它们是集中的、透明的,因而是易于治理的。
由于所有上述原因,SOA存储库是精心设计的SOA的一个核心部分。
四、工作流和业务流程管理
我们前面提到了SOA的一个重要目标,获得业务流程的可见性和灵活性。服务层最能满足这个目标,可使用工作流或者业务流程管理系统。服务层已成为SOA当中发展速度最快的一部分。这个市场的厂商种类繁多,既有专业的BPM和工作流公司,也有企业应用集成(EAI)和应用服务器公司。
组织内部及组织之间流动的数据大部分是XML数据。只有基于最适合管理这种数据的基础设施来进行实施,才能充分发挥SOA的潜力。
经过周密计划的工作流或者BPM产品应当对业务用户和IT部门来说都很便利。它应当提供无需编写代码的流程建模、模拟、执行、监管和调试等功能。理想情况下,这种产品应当与SOA存储库紧密地集成在一起,那样工作流和业务流程就可以作为元数据来部署,以便集中治理。它还应当支持可重复使用的组合式数据服务的开发、部署及使用。