SOA模式:服务标准化有助减少冗余和浪费

在设计数据结构的时候,你可以轻松地采用不同的数据库,甚至可以采用包含同样的或者类似数据的不同的数据库表。这一直是有很好的说明文件的数据维护和质量问题的基础,有助于把数据标准化作为人们普遍接受的数据建模的最佳做法。在基础的层面上,数据标准化的目标是减少可能存在的内容的数据冗余。这将迫使需要使用一种具体类型数据的应用程序在一个地方访问这个数据。因此,通过消除数据冗余,数据标准化还能够促进数据的再利用。

当然,再利用也是面向服务的一个主要目标。因此,服务再利用的八个原则之一就是专门实现服务中的这种质量的。服务标准化是支持服务再利用的许多方式之一。不过,它的目标超过了这个范围。同数据标准化一样,服务标准化模式旨在减少冗余和浪费以便避免与维护和同步类似的或者复制的服务逻辑体有关的治理负担。

为了完成这个目标,服务标准化在沙子上画了一些线条以建立服务的边界,这样,这些服务就不会重复了。同数据标准化不同,服务标准化并不仅限于数据。其主要担心的问题是功能服务边界的标准化。因此,当这些服务首次概念化的时候,你将发现你在这个服务建模阶段使用了这种方式。

理解服务标准化的做法的最重要的方面之一是标准化努力实施的边界范围。正如本系列文章以前解释的那样,域清单模式能够让你在同一个IT企业中建立多个独立的标准化的和治理的服务。与这些域有关的服务清单仍会让你实现的面向服务的目标达到一个有意义的程度。

在分析和建模阶段还要定义一个服务清单蓝图。指定蓝图的边界一般确定使用哪一个服务标准化的范围。这意味着只要这个服务发生在跨域服务清单(不在指定的服务域中)中,就允许你有重叠的服务边界和冗余的服务逻辑。

服务标准化建立的规则已经应用到服务建模过程中和整个服务交付方法中。避免功能性的重叠已经成为一个经常的考虑,经常构成专门流程步骤的基础(特别是重复实施的建模流程)。当你有不同的团队并行工作为同一个服务清单建立服务模型的时候,避免功能性的重叠也是需要跟踪和协调的考虑之一。

虽然尽了最大的努力,功能性重叠仍然会发生。服务清单蓝图中也许会漏掉一些东西,然后漫不经心地建立具有相同能力的服务。甚至会有一些阻碍这种模式全面应用的硬局限性,例如,当不同的服务需要封装本身不能标准化的老式系统的时候。在这种情况下,也许有一些嵌入式或者确定的逻辑不可避免地形成某种程度的冗余。当然,接下来还有性能问题。你也许会遇到这种情况,交付全面标准化的服务将增加没有理由的运行时间延迟。避免这种现象的唯一方法是在这些服务中特意设计一些反向正常化的措施。

虽然你能够增加一个现实世界的修改并且把这种模式解释为“在一个指定的服务清单中,但是,没有任何两个服务边界可以重叠。如果它们重叠了,最好要有一个重叠的充分理由。”关键的问题是服务标准化的总目标是建立一个支持面向服务的许多目标的一个牢固的基础。