面向数据是面向服务的基石

  • Boris Lublinsky
  • 黄璜

2009 年 12 月 16 日

话题:SOA设计模式DevOps语言 & 开发架构

现今大多数的 SOA 文献与实现都专注于定义业务对齐的服务,而很少讨论企业数据在 SOA 环境中扮演的角色与产生的影响。David Linthicum如是说:

那些投向 SOA 的人们看似对于 SOA 中数据的使用颇为疑惑。虽然其中大部分将数据视为... 其实,数据,在懂行的人看来,是 SOA 作为一个项目能够成功的战略部分,或者是说是整体性的架构战略。当所有的焦点都在 SOA 的“S”即服务上的时候,问题也就来了。那些负责构建架构与系统的人,往往只注意了将服务作为交付功能行为的主张,而忽视了管理底层数据的需要。在许多场合中,数据质量与一致性的问题很快就显现出来,而由于需要在底层数据的更改后直接修改服务,SOA 的灵活性也大打折扣。

David 关于数据集成作为 SOA 基础的重要性这一观点,在 Ash Parikh 最近的文章里得到了进一步的阐述。

越来越明显的是,任何面向服务的基础设施努力都必须从认真的研究数据集成开始...“数据集成”对于任何想要以速度与灵活性架构基础设施的人来说,都必须摆在首位。所以,如果你想将你的基础设施面向服务化,我建议你首先面向数据化。检查以下这五点以保证其根基满足相应的能力:
  • 方便地访问所有相关的数据,包括新的和经常更新的数据源。
  • 批处理或实时的处理数据,包括处理大容量的大数据集。
  • 预先辨认与解决数据不准确与不一致。
  • 对数据应用复杂的数据变换。
  • 在需要数据的时候能精确地交付数据,要作为一项基于标准的服务。

在他接下来的文章里,Ash 讨论了如何将面向服务的基础数据化的实用手段。他描述了几种规范的推荐纲要,为企业实现数据集成提供了整体的解决方案。

  • 由一个支持“标准化”访问所有企业数据源而无论其组织形式 (结构化,非结构化,等) 和访问方式 (SQL,APIs,Web 服务,等) 的数据集成平台开始。保证该平台的扩展性——快速加入新的数据源或者修改现有的数据源的能力。
  • 确保所选择的平台可以有效地支持任选数据处理的延迟,不管是批处理,类实时,还是变更数据获取及实时。
  • 理解不同的数据访问模式,包括大容量的小数据集,大容量的大数据集,庞大 (兆) 数据集等等。并且保证它们都能被所选择的数据平台所支持。在需要的时候要有相应的附加技术作为补充。
  • 保证服务所消费和产生的数据在服务间的一致。许多数据平台能够提供集成的数据剖析,能够不考虑复杂性而预先地认定及修复问题。
  • 除了数据访问,一个数据平台通常还提供一个集中式的数据转换场所。如果是简单的格式转换,任一现代的数据集成平台都可以支持。然而,如果有复杂转换的需求,例如聚合,连接,查找,结构转换等等,你也许就需要更为 先进的平台。
  • 一个数据集成平台通常需要支持服务实现要求的多种访问机制,包括基于 SQL 的访问,Web 及 REST 服务,等等。
  • 一个数据集成平台需要将服务实现与底层数据源分隔开。实际上,它需要引入一个抽象层,以允许数据层的更改而不影响服务实现或将这种影响降到最低。

总的来说,一个数据平台

... 需要是一个单一的,能够交付这里列出的所有功能的集成平台。这是有道理的,因为所有这些推荐都是从时间和节省成本的角度考虑的。如果每一项功能都需要使用一项单独的技术,那么就违背了使用面向服务方案的初衷,即通过简洁性与灵活性以保持系统的机动能力...[这一] 平台必须支持并驱动数据集成逻辑的重用。

随着 SOA 实现的范围从有限的部门解决方案延伸到企业级的实施,企业数据访问的问题很快就成为了实施过程中最重要的问题之一。如果不能一开始就正确地进行构架,企业数据访问将成为实施道路上的一个拦路虎。

查看英文原文:Service Orientation Requires Data Orientation

SOA设计模式DevOps语言 & 开发架构