《应用SOA》是由四位一流SOA 专家合著关于SOA 的新书,他们是:Michael Rosen、Boris Lublinsky、Kevin Smith 和Marc Balcer。这是一本旨在帮助你成功实施SOA 的手册。在评论这本书之前,我们就几个问题采访了作者。
除了我们的评论之外,InfoQ 有幸能得到书籍的一个样章。第3 章:SOA 入门可由这里下载。
InfoQ:人们在实施 SOA 过程中遇到的主要障碍是什么?
Boris:我认为大部分人对 SOA 技术(如 Web 服务)比对业务分解和建模这种 SOA 根本问题更感兴趣。例如,在 SOA 领域,人们常常争论 REST 和 SOAP,但对我们为什么需用这些服务漠不关心。不要误会,技术争论是重要的,而且我也喜欢这种争论。但是,今天这种争论的结果事实上是 JBOWS(Just a Bunch Of Web Services,只是一组杂乱无章的 Web 服务)规则。这就是为什么我们在书中刻意避免这种或那种实现争论的原因,并试图表达 SOA 的核心问题:架构基础。
Kevin:我们有许多因缺乏规划和治理而造成大量混乱 SOA 实现的痛苦经历。就像 Boris 所说的,很多时候,人们在缺乏任何规划、语义互操作性和企业数据标准的条件下,很快就部署了 JBOWS。这给新业务伙伴最终想要使用这些服务造成了集成难度。如果服务在未进行服务变更管理计划时就被部署,企业管理和实时操作将会变得相当困难和痛苦。我们写这本书的目的之一就是以我们在这领域学到的教训为基础,给出一些指导意见,它们主要集中于实用的实施技术,包括规划、管理和治理。
另一个我们已经知道的障碍是安全性。现实的业务解决方案需要真正有用的安全措施,这一点在新的 SOA 项目中有时会被低估或忽视——这伴随着可怕的后果。在 SOA 安全领域,充斥着大量令人眼花缭乱、相互重叠(有时是相互竞争的)的标准、规范和技术,并且大多数 SOA 安全标准包括各种选项,它们每个都需要深厚的信息安全基础知识。我们已经发现,一些业务的主要挑战是业务伙伴之间的身份认证和属性联邦,身份认证和属性传播的细微区别,安全措施、性能和可用性之间的折衷,以及访问控制策略管理与执行——这还只是列出了一部分。人们常问的问题包括:“如何入门?”,“在 SOA 中构建安全,我们有哪些选择?”,“如何平衡安全性与性能?”以及“我们如何应用标准?”。我们将在书中回答这些问题,提供 SOA 安全实用指南,解决方案蓝图和帮助简化决策制定流程的决策流(decision flow)。
Michael:对大多数新技术解决方案而言,其挑战不是技术,而是促进并管理有效实施新技术所需要的结构性改变。任何人都可以构建服务。挑战在于构建正确的服务,而且是在企业环境中做到这一点,而不仅仅针对单个项目。这些都是我们使用书中给出的架构明确解决的问题。
InfoQ: “技能不足”往往被认为是 SOA 中的头号问题,公司该如何解决它,除了与架构师和分析师分享《应用 SOA》之外?
Boris: “技能不足”是一个严重的问题,问题在于我们需要何种技能?在我看来,SOA 是一个业务问题而不是技术问题,所以动用更多熟练的技术人员并不能总能解决 SOA 之痛。我们需要“真正的架构师”来推动 SOA。我也希望说:“买本书,它将搞定你所有的问题”,但实际上,读书可以帮助定位问题和评估某些解决方案,真正的解决方案仍需要从企业内部得出。
Kevin: 我亦有同感。首先,我们需要拥有较强架构和设计背景的技术专家——以及本书中的部分指导。可能重要的事实是,企业需要了解某一特定领域业务问题的架构师。例如,如果你负责建立医疗社区的企业 SOA,而你的团队中没有深入了解这个医疗社区内部流程的人员,则你很难较好地完成这个工作。企业真的需要雇佣来自他们所支持业务领域的专家,因为就象 Boris 说的,SOA 要解决的是业务问题而不是技术问题。
Michael: 当今有很多关于重要主题的培训可供选择,例如业务流程设计,SOA 分析和设计,架构等等。企业需要首先确定的重要事情是在特定的需求、环境和文化下,什么流程和方法可以发挥作用,然后再延伸到能实际提供它们价值的特殊技能。某种形式的能力认证中心通常是建立大量急需合适技能的好途径。
InfoQ: SOA 发展到什么程度了,是否真实?现在成熟度如何?下一步如何发展?
Boris: 我认为现在 SOA 是真实的,但是并不成熟。大多数公司选择了较简单的方法——面向服务的集成(SOI,Service Oriented Integration)。Barton 小组最新的报告指出,这是当今 SOA 失败的普遍原因。除非我们将 SOA 和企业业务模型与组织结构认真地联系起来,否则 SOA 也许永远无法完全成熟和按照其预期来发展。
Kevin: 我得说 SOA 是真实的,但是其实现技术还不能帮助 SOA 达到其所能达到的景象。许多提供商敦促你购买他们的“盒装 SOA(SOA in a box)”解决方案产品套件,如果全部采用他们的产品可以得到很好的互操作性,但和其他系统集成就是另外一回事了。许多 WEB 服务工具包具有方便的即指即点(point-and-click )Web 服务工具组件,开发者可以很容易地使用这些组件,结果则是服务不再象最初组件那样经过了良好的设计。典型的情况是,POJO 一开始就没有有意识地使用相应的模式进行设计,所以将它们转化成 Web 服务时,一般会丢失语义可操作性,因为得到的服务差不多完全和对象实现紧密地耦合在了一起。我确实认为 SOA 实现技术已经有了很大进步,但是应该约束架构师、设计师和程序员不要选择快餐式(quick-and-dirty)的实施策略。
我认为 SOA 的炒作正在逐渐消失,这是个好现象。过去,SOA 的传道者式的销售们试图销售乌托邦式的 SOA 愿景,可以带来世界和平,是解决所有痛苦的银弹。认识一点很重要,SOA 可以帮助解决业务问题,SOA 实现里使用了许多技术和标准。同样重要的还有,SOA 本身是技术无关的。我认为 SOA 作为架构纪律将继续完善,具有光明的前景。
Michael:SOA 当然是真实的。我们知道许多公司已经使用 SOA 了 10 年。所有主流工具、平台和成品应用一直都在向 SOA 迁移,有越来越多的 SaaS 服务可用。但是,大多数公司才刚刚开始实施 SOA,在以典型的 0 至 5 来计算成熟度,大部分大概处于 1 附近,因而现在正是他们集中于架构而不是服务的时候。
书评
所有主题都经过了深加工。无论你是架构师、分析师、设计师或 CTO/CIO,都可以应用它们轻易解决你在实施 SOA 时可能遇到的大量问题。所有章节都使用来自真实项目的具体和相关的例子进行举例说明:
现有的 SOA 书籍和文章有很多高层理论,而缺乏实际的建议
尤其是,这本书将帮助你把你的 SOA 项目与企业架构、IT 治理、核心数据和 BPM 项目结合起来。
作者写道,在和不同公司合作之后,他们发现存在一些常见模糊不清的领域:
- 第一,SOA 是什么,它与 WEB 服务或其他分布式技术有什么不同?
- 第二,业务与 SOA 有何关系?
- 第三,如何设计一个好的服务?
- 第四,如何有效地将现有应用和资源集成到一个面向服务的解决方案中?
- 最后,服务如何适合企业的整体解决方案?
特别地,作者认为,虽然构建一个服务并不困难(因为工具已经达到较高的成熟度),但是基于可靠设计原则构建符合整体架构并能集成到企业内部更大的业务流程中的“好”服务仍然是一个挑战。
本书分为三个部分:
- 理解 SOA
- 设计 SOA
- 个案研究
理解 SOA 的关键在于理解其解决的挑战:
- 重用
- 高效开发
- 应用与数据的集成
- 敏捷,灵活性,对齐
以这些为出发点,作者引出了达到这些目的必需理解的知识(点击下载,第三章:SOA 入门)。在他们看来,我们必须集中了解:
- 方法论与服务生命周期
- 参考架构
- 业务架构
- 信息设计
- 识别服务
- 详细说明服务
他们特别强调的一点是,信息架构在实现 SOA 时,尤其在定义服务接口时,非常重要。
第二部分,作者分享了深度的专业知识。他们的方法明确地集中于业务知识。他们依赖业务上下文、业务领域和业务流程模型来识别服务。第 5 章侧重于信息建模和服务设计之间的关系:
服务操作与对象的方法之间的根本不同在于服务操作具有相当大的粒度。服务产生和消费大块的文档,而不是带有简单参数的简单操作。
无论采用何种技术,这种关系都是 SOA 实现中必须解决的最难问题之一。它有助于确定合适的接口开销(可以较容易地被新消费者重用)。有助于分析信息模型变更对服务接口的影响(版本管理)。
第 6 章着重于服务接口的设计。本章回顾了各个交互风格,提供了一个手把手的设计指南,为服务的各个方面提供帮助:文档、操作、异常等。
第 7 章基于服务架构提供了服务实现的准则:
- 服务接口层
- 服务业务层
- 资源访问层
作者特别描述了每一层的详细职责。
第 8 章的重点是服务组合
服务组合是使用 SOA 最大的收益之一
本章覆盖了服务组合的架构模型,以及不同的实现模型。其中包括:普通的旧代码、服务组件架构、基于事件的组合和基于编配的组合。本章还深入讨论了组合与业务规则、事务和人类活动之间的关系。
第 9 章转而介绍了如何使用服务来构建企业解决方案。同样,理解本章内容的架构师和分析师并不多。
构建企业解决方案一般需要利用现有企业应用实现服务,并将多个现有服务组合成企业解决方案。
作者提供了一个修改过的 MVC(模型-视图-控制)模式,将其作为面向服务企业解决方案架构的基础。本章还提供了服务版本管理、安全、异常处理与日志、管理与监测等企业解决方案关键方面的重要分析讨论。
集成是 SOA 的重要部分。第 10 章专门探讨了集成在 SOA 中扮演的角色。作者指出了需要进行某种级别集成的一些“孤岛”:
- 数据孤岛
- 自动化孤岛
- 安全孤岛
以作者的观点,SOA 的角色是合理化信息、活动和身份,使得新旧消费者可以重用遗留记录系统中的功能,并正确地对齐他们的状态。本章提供的一些模式可以有效地从遗留系统实现服务。
第 11 章介绍 SOA 安全的概念。作者从详细介绍 WS-Security 标准入手,讨论了审计、授权和用户身份传播等重要话题。
第 12 章用一个实用的 SOA 治理方法和服务生命周期框架总结了本部分。本章深入介绍了关于识别、实现、部署、运营和服务版本管理的知识。作者介绍了 OMG 的 RAS(可重用资产规范),该规范可用于获取服务的元数据。本章还包括运行时的策略。
最后部分介绍了两个案例:
- 旅游保险
- 保险业基于服务的集成
每个案例深入地都使用书中前面部分推荐的工具进行开发。这些案例表现了企业级解决方案的最新水平 SOA 实现。
《应用 SOA》完整介绍了 SOA,包括如何建立一个可以交付复杂的面向服务解决方案的组织的实用步骤。
查看英文原文: http://www.infoq.com/articles/applied-soa 。
译者简介:刘涛,博士,毕业于西安交通大学,主要研究网络体系,现在主要从事多核环境下高性能算法的研究与开发工作。曾经进行过多个企业级软件的设计与开发工作。关心开源软件的发展动态,乐于使用开源软件。对前沿的系统软件与技术有浓厚兴趣。
志愿参与 InfoQ 中文站内容建设,请邮件至 editors@cn.infoq.com 。也欢迎大家到 InfoQ 中文站用户讨论组参与我们的线上讨论。
评论