写点什么

书评:《应用 SOA》

2008 年 9 月 21 日

《应用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 中文站用户讨论组参与我们的线上讨论。

2008 年 9 月 21 日 22:33996

评论

发布
暂无评论
  • 新书 |《进化:运维技术变革与实践探索》

    经过近5个月的打磨,《进化:运维技术变革与实践探索》这本书终于和你见面了。

    2018 年 5 月 21 日

  • 访谈及书摘:Thomas Erl 的《SOA 设计模式》

    3月,InfoQ发布了Thomas Erl的新书(《SOA设计模式》)的摘录,并借此机会采访了作者。话题涉及模式目录(patterns catalog)的作用,面向服务、SOA和Web服务三者之间的区别,以及SOA世界的现状。

  • 资助 SOA

    在Web上的一个快速搜索表明,资助SOA几乎像禁忌话题一样很少有人提到。Todd Biske为我们提供了一个Gartner应用体系结构开发与集成(AADI)高层会议上对这个话题讨论的概要。

  • 传统的可扩展架构模式:分层架构和 SOA

    为了帮助你在实践中更好的进行可扩展架构设计,我将分别介绍几种可扩展架构模式,指出每种架构模式的关键点和优缺点。

    2018 年 7 月 12 日

  • 可扩展架构案例(一):电商平台架构是如何演变的?

    这一讲,我会针对最近十几年电商平台的架构变化过程,具体说明为了支持业务的快速发展,架构是如何一步步演进的。

    2020 年 2 月 28 日

  • 重访 SOA 治理

    尽管SOA项目实施呈增长趋势,但是多数项目依旧在走向失败。事情常常变得如此糟糕,以致于SOA被称为“死亡之旅(Dead on Arrival)”。改善这种状况的办法之一就是正确地实施SOA治理。

  • 十年 SOA:当前的位置和未来的方向

    SOA 10岁了。在这次虚拟研讨会中,InfoQ聚集了几位经验丰富的企业架构师来分享他们的观点,他们是:Jeff Andre,Eric Ballou,Dave Hollander和William El Kaim。他们谈到了重用、业务/IT对齐、治理……

  • SOA= 集成?

    SOA的存在已经有些年头了,但就“SOA到底是什么”这个问题而言,在SOA从业者中依旧未形成一个统一意见。最近在Gartner AADI峰会上由Yefim Natis发表的演讲引发了一场关于SOA/集成之间关系/区别的无尽争论。

  • 大咖对话 | 徐毅: 如何提升员工的活力与动力

    “把数字世界带入每个人、每个家庭、每个组织,构建万物互联的智能世界”。

    2018 年 12 月 28 日

  • SOA 开放标准大观园——架构的导航

    来自OMG,OASIS和Open Group的许多致力于SOA标准化的成员聚集在一起,起草了一个新的白皮书,尝试为你在各种规范与工作组中提供导航。它刻意地实现无关化了,回避了Web服务、JBI以及其它的方式。

  • SOA 的未来怎样?

    有关SOA未来的讨论每隔几年就会掀起一次。最近一次是由McKendrick的博客中启动的,探讨的是SOA如何变身为EA、云、EAR、BPM甚至全部。

  • 特别放送 | 从软件工程的角度解读任正非的新年公开信

    软件工程从来不说自己是银弹,就像现代医学,也不会号称自己包治百病,它只会不断改进,对症下药。

    2019 年 2 月 18 日

  • 专访与书摘:Nicolai Josuttis, "SOA in Practice"

    InfoQ发布了Nicolai Josuttis的新书《SOA in Practice》的样章。InfoQ对作者进行了采访,内容涉及他对SOA的看法,业界对它的一些主要误解和SOA的关键成功因素。

  • 《Ladder to SOE》作者访谈

    本文检阅了Michael Poulin的新书:《Ladder to SOE》。Michael的这本书展示了如何使用面向服务的原则来使IT和业务对齐,以及业务和市场动态的对齐——缔造面向服务的企业(SOE,Service Oriented Enterprise)。Michael指出,要想成为SOE就必须养成使用面向服务进行思考的新习惯,同时他还给出了有效使用它们的方法。

  • 《SOA 治理最佳实践》用户调查

    这次调查的一个关键收获是:在很大程度上,SOA是真实的而且正在发生。91%的反馈者认为治理非常或较为重要。调查还对最流行的SOA标准进行了抽样调查。InfoQ对Software AG的VP和副CTOMiko Matsumura进行了采访,请他谈谈对这次调查反馈的看法。

  • ESB 综述 1:定义 ESB

    围绕企业服务总线(Enterprise Service Bus)在SOA社区展开了有益的争论。需要ESB吗?什么是ESB的最佳定义?ESB应该何时被部署?它在SOA中担任什么角色?作为本系列的开篇,InfoQ将探讨这一重要主题。

  • IBM 总结出五项 SOA 最佳实践

    尽管现在很多公司都指望用SOA实现对新出现且不断改变的经济方面需求作出更快的响应,但它们不一定都能取得一致的可测量结果。IBM在最近发布的一份白皮书中为取得SOA实施的成功总结出了五项最佳实践。

  • 为 SOA 设立卓越中心

    随着SOA愈渐成熟,SOA治理的重要性也不断提高。SOA治理有助于提高对SOA的组织支持感并保证SOA实施过程中的纪律性。启动并实施SOA治理的一种办法便是设立SOA卓越中心。

  • 课程介绍

    2019 年 7 月 8 日

  • ESB 是通向 SOA 的简单解决方案吗?

    在ebizQ 6月间发布的一个播客上,IBM的Lief Davidsen讨论了如何将ESB作为实施SOA的简单解决方案使用。围绕ESB和SOA之间关系的“应该还是不应该”之争一直以来以来都相当热闹,而且这个访谈也并非最终结论。

发现更多内容

逐行解读Spring- 没人比我更懂循环依赖

学Java关注我

Java 编程 架构 编程语言 技术宅

为什么我们的生活越来越快?

石云升

读书笔记 28天写作 4月日更

Java线程讲解,这次没有人学不会了吧!!!

霖~

产品 0 期 - 第八周作业

vipyinzhiwei

如何横扫大厂Offer?这份“1000道Java后端面试速成笔记”程序员(银四)必备

比伯

Java 程序人生 软件架构 java程序员 java编程

我凭借这份pdf拿下了蚂蚁金服、滴滴、美团等3个大厂的offer

神奇小汤圆

Java 程序员 架构 面试 计算机

Redis-Sentinel 深入浅出原理和实战

SH的全栈笔记

redis redis sentinel

mysqladmin修改用户密码

在即

四月日更

荣耀,单刷苹果大boss

脑极体

计算机原理学习笔记 Day3

穿过生命散发芬芳

计算机原理 4月日更

变易世界,简易战略,不易华为

脑极体

清理SpringBoot应用无用的metrics指标

LanLiang

Java springboot metrics micrometer

Zabbix 产品周期

耳东

zabbix 4月日更 lifecycle

Java入门第一课

ベ布小禅

四月日更

哭了!从腾讯辞职后找不到工作,投了20多家简历,却只面过一家

Java架构师迁哥

第二周作业

Geek_2e7dd7

架构实战营

年度盛会 | Atlassian Team 2021 全球大会重磅嘉宾介绍

Atlassian

Agile Zoom Atlassian Slack

lombok编译报错:java: 找不到符号

墨凡

IntelliJ IDEA lombok

绝了!阿里面试官跟我死磕MySQL,结果我却拿了个高薪offer

码农之家

Java 程序员 面试 MySQL 高可用 刷题笔记

重读《重构2》- 提取函数

顿晓

4月日更 提取函数

【基金系列】10年理财规划师经验分享:不想当韭菜就看一下这些内容

小Q

学习 基金会 理财 基金

应用宝SDK接入记录

风翱

sdk 【4 月日更】 应用宝

方寸之间,书写天地

小天同学

个人总结 4月日更 1 周年盛典 我和写作平台的故事 InfoQ 写作平台 1 周年

手机自带的多功能百宝箱,没人用真的太可惜了。

彭宏豪95

iphone 效率 工具 苹果 4月日更

领域驱动设计(DDD):领域和子域

xcbeyond

领域驱动设计 DDD 4月日更

深度图解Redis Cluster原理

SH的全栈笔记

redis Gossip redis cluster

Rust:关于闭包的一点研究

Microwood

rust 闭包 closure

二阶单位圆

山@支

《采访融云CTO杨攀:融云七年发展史》(采访提纲)

后台技术汇

调查采访能力考核

洛谷 || 混合牛奶 Mixing Milk(贪心算法)

Bob

算法 刷题 四月日更

Vue cli项目 修改运行命令和端口号

空城机

Vue 前端 前端框架 4月日更 vue cli

演讲经验交流会|ArchSummit 上海站

演讲经验交流会|ArchSummit 上海站

书评:《应用SOA》-InfoQ