IBM 全球服务中心最近发布的一份白皮书描述了 IBM 技术研究院(Academy of Technology)为取得 SOA 实施的成功所运用的经验。具体地讲,他们关注于以下五个优先考虑事项:
- 以面向未来的眼光进行架构开发——对 SOA 实施来说,最需要的就是:不要仅把眼光局限于简单的连通性上,而要更关注架构。
- 预见到 IT 与业务流程之间的联系——所实现的架构要将 IT 转变为一个业务功能服务提供者的角色。
- 为支持 SOA 设立一个组织结构,具体涉及到文化、技能、培训、团队建设、组织架构、决策、奖励机制、协作及治理等方面。
- 构建一个可伸缩的基础设施——用适当的方法与度量,为服务的性能与可伸缩性设置基线。
- 允许运营可视性——关注于治理和服务管理。
根据 IBM 的经验:
要取得 SOA 部署的成功,必须先建立起核心架构领导团队,以确保付出的努力符合需求、并指导架构的发展。针对架构的最佳实践可分为重用、数据管理等几个不同的方面。
SOA 的重用不仅仅是传统的代码重用。它必须做到架构重用——创建一个可重用的架构框架,通过细致的规划、工程与管理来推动企业内各 SOA 项目的发展。
你不应假定已有的 Web 服务是符合标准的,或它们是可以轻易合成与集成的。服务合成(service composition)是相当复杂的,而且常常涉及到事务、工作单元边界、错误处理、安全性与证书分发、以及业务逻辑聚合等方面的问题。与此相关的最佳实践是,你从刚开始进行服务设计时就要考虑到重用,并随着商业案例的发展增加可重用性。
白皮书里说。
许多 SOA 实施关注于服务的实现(implementation),而没有对 SOA 的数据管理方面予以足够重视。如此掉以轻心可能会造成数据管理不当、不可靠的数据、并威胁到数据完整性。许多专业人士仍以过去点对点式的数据需求来看问题。
根据 IBM 的经验:
随着你将数据实现为服务,有效的信息元数据管理与公用信息模型(Common Information Model,CIM)的运用是成功的一个关键因素。使用 CIMs,令你可以设立标准并为适用于所有接口、消息、数据结构与数据转换的信息创建描述性元数据,以支持重用,并由此加快开发速度。用模型驱动的方法把最佳实践标准化,可以加快开发速度,并能够在接口与信息结构之间建立起更好的一致性。使用这种模型驱动的方法有助于减少对转换(transformation)的需求,并使之更容易在需要时设计转换。
在 IT 与业务之间的建立联系:
这需要通过有目的的工作,把 IT 与业务流程联系起来,并关注于未来的业务流程设计——也就是说,你在设想 SOA 方案时,应该着眼于业务流程应该如何运行,而不是目前如何运行。业务流程建模提供了一种跟踪重要业务实体生命周期的有效办法,由此获得的业务流程模型不但简单灵活,而且具有一致的任务粒度,这更易于在不同利益相关者(无论是业务级、还是 IT 级的)之间达成一致。
只有依靠扎实的方法学确保模型正确,这种建模方法才会有用。若高层业务流程模型不正确,那么要把它细化为可执行的业务流程(executable business processes)就会变得困难而昂贵。根据 IBM 的经验:
组件业务建模(CBM)以及面向服务的建模与架构(SOMA)都为以最佳实践的方式来建模提供了支持。 CBM 可以帮助你对企业进行分析:它首先将企业划分为若干相对独立、不相交的业务组件,然后再寻找革新或改良的机会。要创建一种面向服务的架构(SOA),面向服务的建模(service oriented modeling)是必须的。其输入是业务组件化分析(business componentization analysis)的结果、业务目标(business goals)以及关键业绩指标(key performance indicators);其输出是一个独立于任何特定技术与模型的 SOA。
在 IBM 研究得出的经验与最佳实践中,有关机构因素的影响的最多:
要脱离一种筒仓式的(siloed )组织结构,这种组织结构往往只从各个项目内部进行考虑。假如没有某种集中控制,要将大量项目按它们各自的日程整合起来,恐怕是难以实现且多半低效的。与此相关的最佳实践是:设立一个有各技术相关利益者参与的权威机构来监管设计,并推进早期的架构决策。
IBM 发现,要成功通过 SOA 获得持续效益,另一个关键因素是 SOA 治理(SOA governance)。SOA 治理令业务团队与 IT 团队可以更好地协作,以识别出那些对实现业务目标最有贡献的项目。
应该在最初的 SOA 试点项目之中和首个重要 SOA 项目开始之前引入 SOA 治理。这令你们机构可以成功处理重要项目的复杂性,而不是像训练任务一样对待它。SOA 治理也应当与你们机构的企业架构计划一致。
为避免各个项目使用重叠、不一致的治理模型,造成混乱与阻碍,需要有企业级、跨项目的视野。
通常,SOA 实施会涉及到许多彼此交互的服务。因此,对于 SOA 实施来说,可伸缩性、可靠性及高可用性(availability)是最重要的需求。根据 IBM 的经验:
你应尽量采用那些已知的方案以满足可靠性与性能需求。然后,设计、测试、再测试,以确保性能、可伸缩性及互操作性需求得到了满足。不要在尚未正确解决并测试这些非功能性需求的情况下就部署一个方案。
SOA 成功的另一个关键因素是:确保运营的可视性及实施的可控制性:
问题与事件管理系统,以及问题判定与检修工具,应在架构的各个层次提供充足的可配置的信息。同时,选择那些简化了 SOA 基础设施管理的技术方案,将有助于限制复杂性。
这份 IBM 白皮书里提出的这五点最佳实践可以帮助公司及 SOA 专业人员关注于 SOA 实施里最重要的环节(与我之前的报道形成对比),从而能够在计划并部署SOA 的过程中更有效地满足投资目标。随着各个企业方案均采纳SOA,它们还将有助于提供持续效益。
评论