标准化成熟度级别
随着要满足的业务能力需求越来越多,服务数量也在不断增加,强烈推荐在你的SOA架构和设计实践中包含标准化成熟度级别的能力。
企业治理:
你总应该有一个根据分类法划分服务的服务模型。除此之外,我还强烈推荐创建和使用你的模式所依赖的领域数据模型。如,被称为“公共信息模型(CIM)”的数据模型。参见“公共实体”。
除了设计时治理,服务版本管理相关的运行时治理将会在“部署管理”和“高级监视”能力部分中谈到。
统一契约:
这个消费能力就是“标准化的服务契约”原则。它通过契约制品的标准化统一设计策略对“明确的契约”基本能力进行了扩展。对于简化潜在消费者发现、辨别和使用服务来说,拥有标准化的契约至关重要。正如Thomas Erl所推荐的,使用公共数据模型,这个能力跟“公共实体”实现能力紧密地关联到了一起。
服务的可发现性:
“服务的可发现性”是SOA核心原则之一。正如我们在那篇InfoQ文章中解释的,组合不仅仅取决于针对重用而设计的服务和模式,它们还必须能够被潜在消费者轻易发现。推荐使用存储库作为你的服务目录管理系统,它将给你提供SOA治理的工具和注册发布机制。
服务的可发现性是SOA治理的核心,它起到了控制契约及其版本数量的作用,这将使服务的开发和运营都从中受益。强烈推荐将契约元数据制品(如服务和模式)纳入版本管理和治理的范围。这是我们那篇InfoQ文章的主要内容。
松耦合组合:
这个实现能力的命名并不妥当,因为它混合了相关的“服务松耦合”原则和“服务可组合性”原则。松耦合和“服务抽象”原则及“服务可重用性”原则一起都是可组合服务的核心驱动力。正如我们在那篇InfoQ文章中数据模型部分指出的,在设计你的模式(以及你的服务)时,你必须为实现松耦合而奋斗,不要在契约中暴露任何底层逻辑或系统的实现细节。
针对可重用性而设计以及拥有版本管理和兼容性策略是实现可组合性的核心。要记住重用和可重用性的区别;避免针对未来才使用(重用)服务的广泛的潜在消费者进行投机性契约设计。相反,要把服务设计成组合服务和流程中的规范元素——可重用性。当然,要是多个消费者能够共享所提供的服务,这也是有好处的。
设计模式:
这个实现能力跟基本的“开发过程效率”能力密切相关。,这些策略和指导方针随着你的成熟度发展到使用诸如“统一契约”,“公共实体”,“可消费的类型系统 ”这些原则而被识别出,它们必须被作为SOA治理设计策略的一部分被定义和执行。使用公共设计模式是和“标准化的服务契约”SOA原则保持一致的核心驱动力。
公共实体:
这个实现能力指的是,让在整个企业业务流程中使用的数据拥有公共的格式。这个企业数据模型还有一大堆其他的名字,最为人熟知的是公共信息模型(CIM)。它是EAI领域中规范数据模型(CDM)在SOA领域的对应物,CDM一词是由Gregor Hohpe和Bobby Woolf在他们的经典书籍《企业集成模式》中定义的。
注意,不要把“使用CIM”解释成是对在所有系统中使用“唯一正确的模式”的建议。相反,应该基于领域驱动设计的方法使用几个联邦的CIM模型。
正如我们在那篇InfoQ文章中描述的,数据模型是创建和维护在服务和业务流程中无处不在的模式的基础。消息和数据的模式都是基于数据模型的——消息模式是一个或多个数据模式的投影。数据模式必须针对重用而设计,而消息模式则要针对它们的操作来设计。这个建模概念是高级成熟度级别“可消费的类型系统”能力的一部分。
高级成熟度级别
任何软件系统中都存在的一个真理是:唯一不变的是变化。变更业务需求将迫使你的服务演变,这应该驱使你在你的SOA架构和设计实践中包含服务生命周期管理(SLM)。
部署管理:
服务生命周期管理是SOA治理的核心部分。SLM包括设计时和运行时两个方面。SLM和版本管理一起成为了管理“部署管理”能力的核心。除了让现有服务退役之外,你的SDLC过程还需要有一个关于如何部署新服务和新服务版本的清晰模型。
“部署管理”必须跟“企业治理”能力相结合,这将给服务目录管理员在SLM的软方面(如将服务生命周期的变更告诉给受影响的消费者)提供帮助。
在那篇InfoQ文章中,我们推荐让“活动服务版本”策略成为这个能力的一部分,并与所选的作为服务虚拟化机制一部分的企业服务总线模式结合起来。关于服务虚拟化的详情请参见那篇InfoQ文章。
高级监视:
这个能力支持推荐的契约生命周期策略(在SOAMM图中由虚线椭圆标出)。
作为服务生命周期管理模型的一部分,你应该监视所有服务个体,以便让服务目录管理员看到服务的使用情况。因此他们能够告知相关消费者正在使用过时或退役的服务,需要进行升级,这将简化服务目录管理员引入新版本的工作。
文章来源于领测软件测试网 https://www.ltesting.net/