把面向服务架构(SOA)付诸实践
“本书是实现SOA的企业架构师的必备读物。本书通过实际例子解释了业务需求、业务流程设计和服务架构之间的关系,并通过将SOA实现直接联系业务价值来揭示不断成功和获得资金的关键。”
——Maja Tibbling,Con-way公司首席企业架构师
“虽然还有其他关于架构和ESB、SOA及相关技术实现的书籍,但是只有这本新书把握了实际的知识和经验。它 给出了将需求和愿景转变成坚实、可重复和增值架构的方法。我由衷地推荐它。”
——Mark Wencek, Ultimo Software Solutions公司顾问服务联合部门高级副总裁
在《Succeeding with SOA》中,Paul Brown解释了要想满足企业目标,就必须把业务流程和信息系统作为整体架构的一部分一起设计。在本书中,他从项目和企业两个层面指导读者经历一次成功设计和开发整体架构的过程。利用自身丰富的经验,作者提供了创建服务和利用它们创建健壮、灵活的SOA解决方案的最佳实践。
本书内容包括:
■ 在以项目为基础持续交付业务价值的同时,逐步把企业架构发展成SOA。
■ 理解SOA和分布式系统的基础、主要的架构问题,以及解决它们的设计模式。
■ 理解项目架构师和企业架构师角色的区别,以及他们该如何协作来创建SOA。
■ 理解为何需要一个包含业务流程、人员、系统、数据和基础设施的全面整体架构。
■ 理解实现健壮、安全、高性能和高可用性解决方案的策略和权衡。
■ 理解将业务流程管理(BPM)和业务流程监视融入企业架构的方法。
无论你是在定义企业架构,还是在交付单个SOA项目,本书都能为你提供完成工作所需的务实建议。
作者简介
Paul C. Brown TIBCO公司的首席软件架构师,该公司引领企业软件和服务的新潮流(www.tibco.com)。他的基于模型的工具架构成为了众多应用的基础,其范围从流程控制接口到NASA卫星任务规划。凭借其在企业级信息系统方面的广泛设计工作,Brown博士发展出了整体架构的概念。他的第一本书(《Succeeding with SOA: Realizing Business Value Through Total Architecture》)引入了这一概念,而本书则详细阐述了这一概念。 他获得了伦斯勒理工学院计算机科学博士学位。
无
如果你是一名在企业中负责面向服务架构(SOA)的架构师,你会面临众多挑战。有意无意之间,你创建的架构在许多不同层面定义了企业的结构,其覆盖范围从业务流程到数据存储。这种架构不仅定义了业务系统之间的边界,而且也定义了组织单元之间的边界。除了定义服务,你的架构还必须为大量复杂的分布式系统设计问题提供实用的解决方案,这些问题的范围从业务流程的编配到确保业务的连续性。实现架构是一个长期过程,涉及众多项目,而且也不能缺少架构师的指导。
在《Succeeding with SOA》一书中,我已经讨论了企业应该密切关注其架构、架构师的角色,以及为这些架构师创建一个正确组织环境的重要性。在本书中,我将开始讨论架构师(也就是你)的本职工作,并通过在项目和企业两个层面定义面向服务架构的过程来为你提供指导。无论你是一名已经在实践中应用SOA的架构师,还是有志成为一名架构师并渴望获得更多知识的工程师,这本书都是为你而写的。
圆满实施SOA可以让企业获得丰厚的回报。如果实施得当,企业将包含一组健壮、灵活、可复用的业务和基础设施服务。这样,企业就能通过快速重组这些服务来应对不断变化的业务需求。相反,如果SOA实施得不好,企业将会受一组脆弱、僵化的功能(我不愿称之为服务)拖累,不但不会促进企业的发展,反而会起到相反的作用。这种结果不会是你想要的。本书不仅会告诉你最佳实践,同样也会为你指出可能的陷阱。简而言之,它会指导你顺利地把SOA实施完成。
SOA架构的挑战
要想出色地完成SOA建设,你应该解决4个相互关联的架构挑战。
1服务同时定义了业务流程和系统的结构。从此,业务流程和系统自然而然地彼此相互交织到了一起,设计一个而不更改另一个的日子已经一去不复返。它们必须一起设计,形成一种整体架构(total architecture)。这样,构建面向服务架构不再只是一项技术活动,而且也是一项需要企业里业务团体积极参与的业务活动。
2你不会从零开始构建SOA。你的企业目前正在使用一组业务流程和系统来运营。仅仅因为想构建SOA就把现有业务经营活动打乱,这种后果你承受不起。务实地讲,你应该逐步把现有业务流程和系统发展成SOA。在这个转变过程中,各个项目必须独立于你的SOA项目持续交付有形的业务价值。
3在实施过程中,对于SOA愿景的解释应该一致。SOA的实际实现过程是以项目为单位逐步进行的。在当前项目中开发出的服务必须满足未来的需求,而今天的项目必须能利用以前项目开发出的服务。确保现有服务能被恰当利用,而且新服务能满足未来需要,要求在多个项目之间进行协调和规划,既要着眼于现在,又要兼顾未来。
4面向服务架构实质是分布式系统。由此,对于所有经典分布式系统的设计问题,你的SOA都必须包含前后一致的解决方案:根据通信延迟权衡服务粒度,解决通信故障,管理分布于服务和站点的信息,协调服务执行和负载分配,确保服务和业务流程的可用性和容错性,保护你的信息,以及对业务流程和服务都要进行监视和管理。影响解决方案决策的需求源自业务流程相关的需求,业务流程和系统设计因此紧密地联系在了一起。同上面说的一样,在所有项目中,解决这些问题应该采用一致的方法。
最后,身为架构师,你的挑战还在于组织业务流程、人员、信息和系统之间的协作,并将协作的重点放在实现企业目标之上。
本书简介
本书为解决你的架构挑战提供了全面指导:它向你展示了如何平滑地集成业务流程设计和业务系统设计;它将告诉你如何演变现有架构以实现SOA目标并在转变期间维持对企业经营活动的支撑;它说明了如何使用一个积极的企业架构小组给多个项目带来一致性和有远见的架构观;它最后展示了如何全方位地解决你将面临的分布式系统设计问题。
本书由九个部分组成。第一部分介绍了架构、服务和整体架构合成方法论的基本概念。第二部分到第八部分讨论了一系列架构设计的问题,范围从理解业务流程到监视和测试架构。第九部分以这些讨论为基础,描述了复杂业务流程和工作流相关的大规模设计问题,并最终以企业架构小组工作方式的总结性讨论作为结束。
从第二部分到第八部分, 每个架构主题都从两个角度进行讨论:项目角度和企业架构角度。每部分都首先讨论设计问题,仿佛项目架构师正从零开始创建整个架构。每部分的最后一章则描述了多项目环境的现实,并就如何确保设计问题能贯穿整体架构得到妥善解决,探讨了企业架构小组必须扮演的角色。这种内容安排上的分离不仅强调了项目架构师和企业架构师需要采用的合作方式,也强调了他们各自的职责。在第九部分中,企业架构小组章节对该小组的活动进行了总结。
使用全书和各章节的方式有两种。一种方式是将其作为处方。本书给出了解决各个项目和管理整个企业架构的结构化方法。另一种方式是将其作为审查的指导方针。每章都讨论了一个主题并以该主题相关的关键问题列表作为总结。先将问题作为对当前项目和企业架构工作的自评指南,然后使用各章内容来审查具体问题和用来解决问题的各种方法。不论使用哪种方式,都可以增强你的企业架构。
本书是一本构建企业架构的综合指南。虽然重点无疑是SOA,但SOA终究只是一种分布式系统架构风格。现实世界的企业架构是SOA和非SOA元素的混合体。为了反映这一现实,本书的讨论并没有仅限于SOA,而是对分布式业务系统架构进行了全方位的覆盖。
本书介绍的实用方法将指导你理解要面临的每一个问题、可能解决方案的选择,以及在构建解决方案时的权衡因素。每章末尾的关键问题不仅提供了合适的总结,而且也可方便地作为架构审查的问题。这些问题及每章相应的讨论将引领你走向SOA的成功。
致谢
本书献给我的妻子Maria。没有她的爱和支持,本书及前一本书将永远无法面世。她承担了许多本该由我来做的琐碎之事,并在我心生厌倦之时给予我鼓励。仅用语言难以表达我的爱和感激。
在整本书的写作过程中还有许多人提供了帮助。我要感谢让我学会未知领域探索方法的导师:John Reschovsky、Joel Sturman、David Oliver、David Musser和Mukkai Krishnamoorthy。我要感谢对书中思想献计献策的同事:Jonathan Levant、John Hutchison、James Rumbaugh、Michael Blaha和William Premerlani。感谢Brian Pierce、Bruce Johnson、Paul Beduhn和Paul Asmar,他们对我的企业方法论成果提供了帮助。感谢Paul Asmar、David Leigh、Saul Caganoff和Janet Strong,他们使这些实际的架构概念更能经受住考验。感谢Michael Blaha和William Premerlani,他们帮助我把概念变成书。感谢Paul Asmar、Ram Menon、Roger Strukhoff、Scott Fingerhut、Peter Gordon、Michael Blaha和Charly Paelinck,他们帮助我把本书变为现实。
PCB
Schenectady, NY
2008年2月19日
把面向服务架构(SOA)付诸实践 “本书是实现SOA的企业架构师的必备读物。本书通过实际例子解释了业务需求、业务流程设计和服务架构之间的关系,并通过将SOA实现直接联系业务价值来揭示不断成功和获得资金的关键。” ——Maja Tibbling,Con-way公司首席企业架构师 “虽然还有其他关于架构和ESB、SOA及相关技术实现的书籍,但是只有这本新书把握了实际的知识和经验。它 给出了将需求和愿景转变成坚实、可重复和增值架构的方法。我由衷地推荐它。” ——Mark Wencek, Ultimo Software Solutions公司顾问服务联合部门高级副总裁 在《Succeeding with SOA》中,Paul Brown解释了要想满足企业目标,就必须把业务流程和信息系统作为整体架构的一部分一起设计。在本书中,他从项目和企业两个层面指导读者经历一次成功设计和开发整体架构的过程。利用自身丰富的经验,作者提供了创建服务和利用它们创建健壮、灵活的SOA解决方案的最佳实践。 本书内容包括: ■ 在以项目为基础持续交付业务价值的同时,逐步把企业架构发展成SOA。 ■ 理解SOA和分布式系统的基础、主要的架构问题,以及解决它们的设计模式。 ■ 理解项目架构师和企业架构师角色的区别,以及他们该如何协作来创建SOA。 ■ 理解为何需要一个包含业务流程、人员、系统、数据和基础设施的全面整体架构。 ■ 理解实现健壮、安全、高性能和高可用性解决方案的策略和权衡。 ■ 理解将业务流程管理(BPM)和业务流程监视融入企业架构的方法。 无论你是在定义企业架构,还是在交付单个SOA项目,本书都能为你提供完成工作所需的务实建议。 作者简介 Paul C. Brown TIBCO公司的首席软件架构师,该公司引领企业软件和服务的新潮流(www.tibco.com)。他的基于模型的工具架构成为了众多应用的基础,其范围从流程控制接口到NASA卫星任务规划。凭借其在企业级信息系统方面的广泛设计工作,Brown博士发展出了整体架构的概念。他的第一本书(《Succeeding with SOA: Realizing Business Value Through Total Architecture》)引入了这一概念,而本书则详细阐述了这一概念。 他获得了伦斯勒理工学院计算机科学博士学位。
Paul C. Brown:暂无简介
胡键; 宋玮; 祁飞:暂无简介
相比其他国内已出版的SOA书籍而言,这是一本与众不同的书籍。其特别之处在于,它的着眼点既非通常的SOA理论介绍和实施方法论,也非常见的协议解析和工具实作,而是架构。
在当今的软件行业,架构的重要性已经得到了广泛的认可,良好的架构通常被认为是软件项目成功的保证。同样地,SOA项目也不例外。而且由于SOA其本身的目标是为了实现业务和IT的有效对齐,所以对其而言,架构的意义更大。
可是优雅的架构并不能凭空捏造,它必须建立于实际需求之上,并通过一系列的决策得出。这不仅要求身为负责人的架构师具有宽广的知识面,而且还要具有丰富的经验,这样才能根据实际情况,在众多似是而非的选择中,做出恰当的抉择。而这本书正好为架构师的工作提供了这方面的支持。
这是一本写给SOA架构师的参考书,作者Paul C. Brown是TIBCO公司的首席软件架构师,该公司同时又是SOA领域内的领导者,由这样一位作者来撰写这本书再合适不过了。全书以作者多年来发展出的整体架构合成方法论(Total Architecture Synthesis Methodology)为总纲,对建立企业分布式业务架构所需技术的方方面面都进行了详细的介绍,并就一些实际的问题给出了相关的最佳实践。更难能可贵的是,全书对每个架构主题分别从项目和企业的角度进行了探讨,从而使讨论更符合实际情况,对问题的讨论不仅考虑了企业的全局特性,而且兼顾了各个项目的个体特点。
全书由宋玮、祁飞和我共同翻译完成,最终由我负责审校统稿。整本书的翻译过程用“痛并快乐着”来形容并不为过。虽然艰苦(这在本书的厚度上已经得到了充分的体现),但却也因能有机会使知识面拓宽,令多年的知识得以复习巩固而感到欢欣鼓舞。我们竭尽所能地提高翻译质量,并期望我们的努力能够得到读者的认可。但话虽如此,翻译之中不当之处在所难免,恳请大家批评指正,请发信至jianhgreat@hotmailcom。
在此,我要感谢机械工业出版社的陈冀康编辑。同时,我也要将本书献给我们翻译团队的家人,感谢他们对我们翻译工作的支持。最后,我衷心地希望您能对本书的翻译感到满意,并借助本书中的内容让您的工作更上一层楼。
胡键
2009.2.19于西安
胡键 2000年硕士毕业后从事软件开发工作,在实际的项目中长期担任项目经理和技术经理。他关心软件技术和相关工具的动态,将其中相对成熟的技术和工具应用到实际的项目之中。目前他醉心于服务器端软件的设计和开发,并致力于研究SOA方面的规范、技术和工具,现为infoQ中文站SOA社区首席编辑。
宋玮一直从事软件应用项目的设计与开发,有多年软件开发经验,长期担任技术管理和项目管理工作,关心开源软件的发展动态以及软件过程和敏捷开发的实践探索。他现在是infoQ中文站Java社区首席编辑。
祁飞西安建筑科技大学信息与控制工程学院计算机科学与技术专业,副教授。他主要讲授软件工程、并行计算、数据结构等课程。
译者序
前言
译者简介
第一部分基础
第1章SOA与企业
11挑战
12整体架构的概念
13架构是目的明确的结构
14持续变化
15整体架构合成
16让整体架构为企业所用
17总体关键问题
第2章架构基础
21结构组织
22功能组织
23协作行为
24整体架构
25非功能需求
26细化
27架构师的角色
28企业架构
29总结
210架构基础的关键问题
211推荐阅读
第3章服务基础
31什么是服务
32服务接口
33服务背后的基本原理
34总结
35服务基础的关键问题
36推荐阅读
第4章服务使用
41服务交互模式
42服务访问
43访问控制
44服务请求路由
45服务组合
46服务定位
47服务的企业架构
48总结
49服务使用的关键问题
410推荐阅读
第5章SOA开发过程
51SOA开发有什么不同
52整体开发过程
53架构任务
54上下文中的架构
55整体架构合成
56小心似是而非的流程!
57管理风险:迭代架构
58总结
59开发过程的关键问题
510推荐阅读
第二部分业务流程视角
第6章流程
61触发器、输入与结果
62关联流程
63流程成熟度
64连续流程
65结构化流程
66总结
67流程的关键问题
68推荐阅读
第7章项目初始范围划定
71收集业务流程清单
72进行访谈
73记录业务流程清单
74业务流程等级评定
75剩余工作组织
76总结
77范围划定的关键问题
第8章需求的技巧
81划分
82流程描述
83交互模式
84需求反映设计
85总结
86需求的关键问题
87推荐阅读
第9章业务流程架构
91结果
92参与者及其角色
93活动和场景
94场景建模
95交互建模
96细节多细才够用
97活动图使用指导方针
98总结
99业务流程架构的关键问题
910推荐阅读
第10章里程碑
101基本流程里程碑
102里程碑序列的变化
103里程碑分组
104辨认里程碑需要设计
105利用里程碑减少流程间耦合
106总结
107里程碑的关键问题
第11章流程约束
111业务流程约束决定系统约束
112性能约束
113高可用性和容错性
114安全性
115报告、监视和管理
116异常处理
117测试和接受
118合规约束
119总结
1110流程约束的关键问题
1111推荐阅读
第12章关联流程
121服务识别
122触发事件
123总结
124关联流程的关键问题
第13章领域建模
131UML类符号
132ATM例子的领域模型
133领域模型的逆向工程
134领域模型总结
135领域模型的关键问题
136推荐阅读
第14章企业架构:流程与领域建模
141流程与领域建模的职责
142建立标准与最佳实践
143流程与领域知识转移的管理
144项目模型审查
145维护业务流程和领域模型仓库
146定义业务流程模式
147定义公共数据模型表示法
148总结
149企业流程与领域建模关键的问题
第三部分系 统 视 角
第15章系统架构纵览
151架构分布式系统的挑战
152学习CORBA的经验
153有效地探索架构
154总结
155系统架构纵览的关键问题
第16章顶层系统架构
161结构粗加工
162初始评估
163通信和模块化
164服务识别和性能
165系统交互建模
166部署建模
167处理性能
168早期架构评估
169顶层系统架构的关键问题
1610推荐阅读
第四部分通信
第17章传输
171传输技术
172选择传输
173消息传递服务器拓扑
174能力
175点对点交互模式
176点对点中介
177传输供给服务
178总结
179传输的关键问题
1710推荐阅读
第18章适配器
181基于API的适配器
182基于数据库的适配器
183结合API和数据库方法
184基于文件的适配器
185基于协议的适配器
186记录适配器的使用
187总结
188适配器的关键问题
第19章企业架构:通信
191定义通信策略
192交互标准
193标准化适配器
194总结
195企业架构通信的关键问题
第五部分数据和操作
第20章数据挑战
第21章消息和操作
211消息语义和操作名字
212传输目的地和操作包
213内容表示
214内容转换
215在内容转换中引用数据
216总结
217消息和操作的关键问题
第22章数据一致性:维护事实的
唯一版本
221维护数据一致性的方法
222具有单记录系统的缓存数据
223通过分布式事务协调更新
224到处编辑,以后调整
225处理数据不一致
226数据管理业务流程
227总结
228数据一致性的关键问题
229推荐阅读
第23章公共数据模型(CDM)
231公共数据模型概述
232CDM和领域模型的关系
233多种CDM表示法的需要
234规划CDM变更
235何时使用公共数据模型
236总结
237公共数据模型的关键问题
第24章标识符(唯一名称)
241标识(唯一名称)管理中心
242层次标识符
243应对标识错误
244标识符映射
245总结
246标识符的关键问题
第25章结果验证
251检查枚举值
252验证的位置和时机
253总结
254数据验证的关键问题
第26章企业架构:数据
261命名模式
262构架内容转换
263记录系统
264公共数据模型
265标识符
266数据质量管理
267总结
268企业架构数据的关键问题
第六部分协调
第27章协调与故障检测
271活动执行管理模式(AEMP)
涉及的交互
272协调模式的风格
273即发即弃协调模式
274请求-应答模式
275代理
276具有确认功能的代理
277总结
278协调的关键问题
第28章事务:协调两个或
更多活动
281分布式事务的两阶段提交
282两阶段提交协议的局限性
283补偿性事务
284绕过补偿性事务的局限性
285总结
286事务的关键问题
287推荐阅读
第29章流程监视器和管理器
291流程监视
292最小化故障监视带来的影响
293把流程管理器作为监视器
294流程管理的局限性
295总结
296流程监视和管理的关键问题
第30章故障检测和响应
301选择协调模式改善故障检测
302响应故障
303总结
304故障检测和恢复的关键问题
第31章企业架构:协调
311首选协调模式
312故障记录
313故障报告
314恢复流程
315总结
316企业协调的关键问题
第七部分高可用性、容错性和负载分配
第32章高可用性和容错性基础
321容错策略
322失效检测策略
323管理故障转移
324重定向客户端
325总结
326高可用性和容错性的关键问题
第33章无状态和有状态故障转移
331无状态和有状态组件
332无状态故障转移
333通过协调保存工作进展
334有状态故障转移
335存储复制
336总结
337故障转移的关键问题
338推荐阅读
第34章多组件故障转移
341站点内故障转移和站点间
故障转移
342集群:站点内故障转移技术
343使用异步复制协调端到端应用
故障转移
344使业务流程具有容错性
345总结
346多组件故障转移的关键问题
第35章工作负载分配
351工作分配策略
352分配管理和工作完成
353顺序问题
354访问共享持久状态
355地理分布的工作负载分配
356总结
357工作负载分配的关键问题
第36章企业架构:容错性、高可用性
和负载分配
361业务流程分类
362信息存储
363单个组件和服务故障转移模式
364容错性和高可用性服务的
组合模式
365容错性和高可用性业务流程的
组合模式
366总结
367容错性、高可用性和负载分配的
关键问题
368推荐阅读
第八部分完 善 架 构
第37章流程安全
371安全信息分类
372身份和认证
373授权
374加密
375数字签名
376其他安全相关需求
377引用数据服务器和性能
378信任域
379信道执行
3710区域执行和策略代理
3711多区域安全
3712总结
3713安全的关键问题
3714推荐阅读
第38章流程监视
381性能监视
382监视流程状态
383监管流程
384监视的性能影响
385总结
386流程监视的关键问题
第39章架构评估
391易用性
392性能
393成本和进度的可行性
394可观察性
395演变能力
396应对压力情况的能力
397总结
398架构评估的关键问题
399推荐阅读
第40章测试
401单元测试、测试用具和
回归测试
402集成测试和装配顺序
403功能和系统测试的环境
404性能测试
405失效模式测试
406总结
407测试的关键问题
第九部分高 级 主 题
第41章表示复杂流程
411忽略通信细节
412省略参与者活动细节
413省略辅助参与者
414抽象子流程
415总结
416复杂流程表示的关键问题
第42章流程管理和工作流
421流程管理
422工作分配模式
423启动工作流
424使管理流程具有容错性
425人类接口
426关联流程
427划分工作优先级
428动态工作分配
429动态结果和流程定义
4210总结
4211流程管理和工作流的
关键问题
4212推荐阅读
第43章企业架构小组
431小组不完整比没有强——但是
还不够好
432发展最佳实践
433知识转移
434治理
435随需求的演变而设计
436总结
437企业架构小组的关键问题
后记〖=A(〗11223344557912141415161819192020262932323334343841434649505051515252525354556060616161636364656667676768696970717881818283848790959798989999101103105110113114115115115116116117118118120120120121121122126130130132132133133134134135136140144145146146150151152153153154154155156156156157157157158159159159164165166167167168169171171174177179179180181181183185188188190191191191192193194194195195195195196197198198198199199199201202202203205205207207208209209210213213213214215215215216216219220221224226226227227228230233235235236236236237237238238239239240241241242242243243245245247250251252252253253255255256257257257258259260260261261262263263265271271272272273273273274274275275276277277278279280280280280282282287288288289289290291292292293294294294295296297297297298298299299300300301301301303303304304305306306307307308309309310311311312312313314314314314316316316323323323324324325325326326327327327330330330333333334334335335336337337340341341344346349349350351352352353353353354355355357358359〖=〗