如前所述,面向服务为我们提供了一个定义明确的方法——将软件程序整合为面向服务的逻辑单元,我们可以合理地将其称为服务。我们交付的每个这样的服务让我们能够更进一步地实现上述战略目标和利益所代表的期望目标状态。
有许多经验证的实践、模式、原则和技术支持面向服务。然而,由于面向服务要建立的目标状态具有明显的战略性质,因此有一系列基本关键因素充当着面向服务能否得到成功应用的共同先决条件。这些关键成功因素称为支撑点,因为它们共同建立了一个健全和健康的基础,用于构建、部署和管理服务。
面向服务的4个支撑点是
·团队合作——跨项目团队和合作是需要的。
·教育——团队成员必须基于常识和理解进行交流与合作。
·纪律——团队成员必须一致地应用他们的常识。
图3-34 将面向服务原则重复应用于作为集合体一部分而交付的服务,会产生基于面向服务计算相关战略目标声明的目标状态
·平衡范围——需要实现所需的团队协作、教育和纪律水平程度由有意义但可管理的范围来表示。
这4个支撑点的存在对任何SOA倡议至关重要。在很大程度上这些支撑点任何一个的缺失均会带来重要的风险因素。如果在早期规划阶段识别到缺失,则可以保证在该问题得到解决或项目范围缩小之前不进行该项目。
虽然传统的基于竖井的应用程序需要单个项目团队成员之间的合作,但是服务的交付和面向服务解决方案需要跨多个项目团队合作。所需团队合作的范围明显更大,可以引入新的动态、新的项目角色,以及建立和维持个人和部门之间新关系的需要。在整个SOA团队中的人需要相互信任和依赖,否则团队会垮掉。
实现SOA团队成员所需的可靠性和信任的一个关键因素是确保他们使用基于共同词汇、定义、概念和方法的公共通信框架,以及对团队共同努力实现的目标状态的共同理解。要实现这一共同理解,我们需要共同的教育,不仅仅是关于面向服务、SOA和服务技术的一般性主题,而且需要具体的原则、模式和实践,以及既定的标准、政策和方法。
将团队合作和教育的支撑点结合起来,可以建立知识基础,并了解如何在SOA团队成员中使用这些知识。由此产生的清晰度消除了许多传统上困扰SOA项目的常见风险。
所有SOA倡议的关键成功因素是如何使用和应用合作团队中的知识和实践的一致性。为了成为一个整体,团队成员必须对如何应用知识和如何履行各自的角色进行纪律规范制定。所需的纪律措施通常表现在方法、建模、设计标准和治理规范中。一个受过教育和合作的团队如果没有纪律,即使有最好的蓝图,那它也无法存活。
到目前为止,已经确定我们需要:
·这样的合作团队……
·有关行业和企业特定知识领域的共同理解和教育……
·我们还需要团队的持续合作,应用我们的理解,遵循统一的方法论和标准。
在一些IT企业中,特别是那些在构建竖井式的应用程序方面具有悠久历史的企业中,实现这些可能有挑战性。也许产生的一些文化、政治和各种其他形式的组织问题使得实现这3个支撑点所需的组织变革更加困难。那么,如何真正地实现它们呢?这一切都归结于平衡的采纳范围。
采纳范围需要有意义的跨竖井板块,同时也是现实可控的。这需要确定采用面向服务的平衡范围。
注意
平衡范围概念直接对应于SOA声明中的以下准则:
“SOA采用的范围可以不同。努力保持可控,并在有意义的界限内。”
有关完整的SOA声明和注释版SOA声明,请参阅附录D。
一旦确定了平衡的采纳范围,这个范围就决定了其他3个支撑点需要建立的程度。相反,你所能实现其他3个支撑点的程度将影响你如何确定范围(见图3-35)。
图3-35 平衡范围支撑点涵盖并确定了其他3个支撑点适用特定采纳工作的范围
确定平衡范围涉及的常见因素包括:
·文化障碍
·权威架构
·地理布局
·业务领域一致
·可用的利益相关者的支持和资金
·可用的IT资源
一个组织可以选择一个或多个平衡的采纳范围(见图3-36)。拥有多个范围就需要采用基于域的方法。每个域都建立了服务目录边界。在域之间,面向服务的采纳和服务的交付可以单独进行。由于它会在IT企业内建立有意义的服务域(也称为“服务大洲”),所以不会产生应用程序竖井。
图3-36 多个平衡范围可以存在于同一IT企业中。每个代表一个独立标准化、私有和管控的单一域服务目录
SOA模式
域服务目录源自域目录模式,这是企业目录模式的替代。