Vincent's profile异国情调 世界视野 One World On...PhotosBlogListsMore ![]() | Help |
|
September 21 SOA 反模式传统交付方法以系统开发生命周期为基础,不同的组织负责实现不同的生命周期部分。此外,在这种方法中,强调一个供应商交付一个完整的系统或子系统。下文图 1 展示了一个简单的交付生命周期视图和一个典型的组织职责分配。 图 1. 传统交付生命周期和组织职能分配 SOA 的出现推导出一个分层架构模型。这为实现多种交付方法提供了机会,从而由不同的部门负责交付服务层的特定元素。这种协作 SOA 约定体验确定了可能出现的问题场景。在本文中以反模式的形式描述。 第一个反模式是 Interface Bloat,其中过份强调的是概括从特定架构层传入传出的数据结构。结果导致接口 “膨胀”,在层之间传递了不必要的数据。 第二个反模式是 Architecture Redundancy,其中忽略了不同架构层的职责。结果导致有些层没有实现架构价值,而仅仅起到数据传输通道的作用。
图 2. SOA 参考架构
SOA 参考架构如图 2 所示。它代表了一个概念级企业架构,一个面向服务解决方案。它为组织内的架构服务提供了框架。参考架构的基本前提在于,它使架构本身提升为底层服务集合。所有这些服务都可以看成为一个 Architectural Building Block (ABB)。构建初步解决方案定义和确定范围时,Architectural Building Block 的概念可以参见 TOGAF 8.1(Open Group Architecture Framework,见 参考资料)中提供的定义。 SOA 参考架构的目的在于:
可以用多种方式使用参考架构。示例有:
在本文中,使用参考架构来说明如何在 IT 交付合作伙伴之间分配工作,这也是为了便于解释反模式引起的深层缺陷。
这种反模式(也称为 Data Tsunami)与 Presentation Services 层和 Process Services 层之间的接口额外规定有关。 规范
该反模式的环境是协作 IT 交付,其中客户组织和系统集成商交付合作伙伴(本例为 IBM)负责交付一个完整解决方案的组件。这是一种非常常见的情况,对于 SOA 计划尤其如此。 IT 合作伙伴负责提供 Web 门户,而客户组织负责生成业务组件和支持数据服务。因此,按照图 2 中展示的参考架构,按层划分的组织交付职责如下:
这种跨参考架构的职责分配是导致反模式的根本原因。具体来说,客户组织在它的设计流程中不够成熟,无法有效地支持 SOA 交付,表现在以下几个方面:
此外,要实现 SOA 的关键好处之一,需要构建能够重用的服务。这导致对参考架构的 Process Services 层中构建可重用服务的过度强调。这导致 Portal 应用程序(Channel Services 层)和 Process Services 层的组件之间的接口变得过于一般化。 尝试一般化这些层之间的连接被认为是次优选择。支持用户界面的特定 Process Services 不可能能够一般化为 B2B 通道,其中交互操作的动力本质上是不同的。一个更好的方法实际上是提供一般化的 Process Services 来支持该通道的特定需求,本例中是一个基于 Web 的门户。整个参考架构层的重用重点如图 3 所示。 图 3. 重用和业务逻辑映射 该反模式的最后一个因素就是交付的时间压力。也就是说,无法在详细的技术设计和代码编写之前得出正确的分析。 这些情况的最后结果是,Presentation Service 组件和 Process Services 组件之间传递了过量的数据。它的影响包括:
反模式 2. 参考架构冗余(Reference Architecture Redundancy) 第二个反模式(也称为传递包裹(Pass the Parcel))与以下情况有关:每个架构层的组件设计中指定了相同的传输对象和方法。它的影响在于,大量处理逻辑将推入到一个架构层,让其他层完全冗余,而仅仅起到数据 “传输” 的作用。 规范
出现该反模式的环境是,SOA 模式对于客户组织相对较新。这种情况常常出现,因为很多组织现在才开始实施它们的第一个 SOA 计划。 在这种环境下,SOA 参考架构可能已经明确定义或者隐含。但是,客户组织还没有深入理解参考架构及其实践应用程序。 这种情况的结果是,错误地理解参考架构中每个层的职责。这又表明:
结果导致:
重构解决方案是以应用参考架构的方式支持灵活性。灵活性的程度可以根据任何参考架构都有的架构原则集来确定。例如,仅仅检索或更新数据的数据服务操作如果没有应用业务逻辑,那么不应该允许直接从 Channel Services 层调用。在这种环境中不需要穿过 Business Services 层。该原则应该作为参考架构定义的一部分嵌入。
基本的误解导致这两个反模式都需要在 Channel Services Layer 中应用一个通用数据格式。这通常不是一个合理的设计目标。Channel Services 层之间的连接应该利用特定于该通道的数据格式。 因此理想的方法是在 Process 和 Business Services 中仅使用 “规范化” 数据。例如,如果通道包含一个提供更新业务数据视图的 Web 应用程序,那么应该优化数据的传输,使之仅返回和更新视图中提供的数据。类似地,如果通道是使用特定行业数据标准的 B2B 网关,那么应该使用中间件将特定于通道的数据格式转换为 Process 和 Business Services 层中所选的规范化数据形式。这种首选 “规范数据区域” 如 图 3 所示。 重构解决方案应该允许各种不同的服务调用 Channels Services 层,而不是尝试一般化。这又会在 Business Services 层而不是 Process Services 层提升服务重用。这种方法还更好地遵从了面向服务架构的易组合性原则,因而可以利用现有的细粒度服务组成新的粗粒度服务。
本文展示了两个交付 SOA 计划的过程中可能产生的反模式。这些反模式的影响是巨大的,导致交付延迟、性能降低和缺乏重用。在严重的情况下,可能失去对模式的信心,从而取消 SOA 计划。 这些环境导致出现这些反模式,即在许多 SOA 工作中都存在客户和 IT 合作伙伴之间的协作约定,且缺少模式的实践经验。交付组织应该意识到这些反模式并做好防范措施。在实际交付中,他们应该能够发现表明出现这些反模式的各种表现,正如本文所述。 重构和确定清晰的架构原则链接集是避免这些反模式的关键所在。设计的开放性和强大的解决方案治理、广阔的商业范围也可以防止发生这些反模式。 TrackbacksThe trackback URL for this entry is: http://vincentibm2007.spaces.live.com/blog/cns!1656C6D42D1E61!1596.trak Weblogs that reference this entry
|
|
|