第2版前言
首先要感谢清华大学(我的母校)出版社给了我的书再版的机会,让我得以将第1版出版之后的学习和心得补充进来。
记得在第1版的计划和筹备时,有一个国内有名的计算机技术类图书出版社的责任编辑对我说,系统集成是个老话题了,没有新意,不如当下流行的如高并发系统等话题更前沿、更吸引人。令人沮丧的是,系统集成确实是个老话题,而且我们似乎一直也没有解决好这个问题:20多年前我在TIBCO软件公司做服务项目时就在和系统集成打交道,至今在MuleSoft/Salesforce还是在做这件事。也没有什么这方面的书籍可供借鉴。
在我认识的专业人士中,有不少在企业里负责系统集成项目。他们都自称是系统集成和API方面的专家。我从不否认他们在这个领域里的经验和成绩。然而,20多年前他们就在从事这方面的工作,现在他们还在请求我的帮助,以便为各自的企业选择新一代的集成和API平台。这就说明他们也没能将这件事做好。集成这件事并没有做好且一直以来不停地困扰着企业。我觉得究其原因,一是涉及多系统的系统集成问题确实很复杂,但更重要的原因可能在于,我们的架构和设计理念不足以在较长的一段时间里支持技术水平和业务要求的变化。
本书第1版中的内容着眼于架构师需要的知识和经验储备。当一个架构师初步掌握了这些内容之后,必须能够将这些知识和经验运用到具体的项目中,对项目的决策人进行洗脑,终达到期望的效果。这方面的工作要比架构设计的技术活儿难上十倍!
这次修订再版,我的收获之一就是通过思考理清了系统集成和API之间的关系(参见13.2.2节),这样,也就理清了本书的基础篇和正篇内容之间的关系及各自的应用场景。再加上几个新的实战案例,希望本书的第2版能够为读者提供更深入、更清晰的分析和讲解。
李泉
2020年7月22日于美国休斯敦
第1章概述
1.1什么是架构和架构师
1.2这本书是为谁写的
1.3为什么写作此书
1.4通往架构师之路的路线图
1.5架构师应该具备的素质
1.6对架构师的学习和培养过程的几点建议
1.7本书的主要内容
1.8总结
第1部分基础篇
2章重新看待系统集成
2.1系统集成历史的快速回放
2.2到底什么是系统集成
2.2.1系统集成之信息更新
2.2.2系统集成之信息组合
2.2.3系统集成之连锁行动
2.3系统集成的技术组成部分
2.3.1BUS高速公路
2.3.2连接器高速公路的进出口
2.3.3CDM高速公路运输的集装箱
2.3.4数据转换运输过程中的货物处理
2.4系统集成应用的考虑
2.4.1系统集成的过程中到底要完成什么任务
2.4.2如何保证系统集成过程中数据传递的可靠性
2.4.3如何使用消息服务器
2.5实战: PLM数据与现有系统的集成
2.5.1项目背景
2.5.2业务痛点
2.5.3技术难点
2.5.4解决方案及经验教训
2.6总结
第3章系统之间相互作用的模式
3.1系统集成模式简介
3.2系统集成模式中几个重要的概念
3.2.1主题与队列在消息传递中的区别
3.2.2消息服务器使用的储存转送
3.2.3消息服务器的容错和高可用性
3.2.4分级式事件驱动架构及其实际应用
3.3系统集成模式的实战应用和分析
3.3.1消息的顺序处理
3.3.2持久订阅如何实现
3.3.3命令类消息的应用
3.3.4事件消息的使用
3.3.5回复地址的使用
3.3.6消息传递搭桥的使用
3.3.7消息信封的使用
3.4总结
4章常见的参与集成的功能系统
4.1功能系统与集成基础设施的连接
4.2常见功能系统的功能和类型
4.3总结
5章究竟什么是服务
5.1什么是服务
5.2是谁在推动服务的重复使用
5.3服务的作
5.4服务的界面
5.5服务作的粒度
5.6服务的组合SOA
5.7实战: 数据
5.7.1项目背景
5.7.2业务痛点
5.7.3技术难点
5.7.4解决方案及经验教训
5.8总结
6章系统集成项目的实施步骤
6.1系统集成与服务项目概述
6.2系统集成与服务项目的具体实施步骤
6.3设计和开发阶段
6.3.1搜集项目业务功能要求
6.3.2架构设计
6.3.3细节设计
6.3.4代码编写和单元测试
6.3.5集成测试
6.4测试和验收阶段
6.4.1质量保证部署
6.4.2质量保证测试
6.4.3用户验收部署
6.4.4用户验收测试
6.4.5(可选项)作验收测试
6.5运维、培训和交付阶段
6.5.1生产环境部署
6.5.2试运行
6.5.3培训及文档提交
6.5.4项目验收
6.6总结
第7章集成项目与公共服务
7.1公共服务的具体内容
7.1.1日志服务
7.1.2出错处理服务
7.1.3ID映服务
7.1.4顺序处理服务
7.1.5连续集成/连续部署(CI/CD)
7.1.6系统及应用监控服务
7.1.7应用、服务、API的分析服务
7.2业务项目的项目模板及其与公共服务的互动
7.3总结
8章SOA在实施中的局限性
8.1SOA在具体实施中的做法
8.1.1SOA的设计原则
8.1.2SOA绩优中心
8.2深挖SOA的初衷
8.3SOA的适用范围和局限性
8.4总结
第2部分正篇现代API、应用互联网
9章现代API的引入、应用互联网
9.1什么是(现代)API
9.1.1REST架构的特点
9.1.2REST架构的特点在API中的具体应用
9.2(现代)API流行背后的原因
9.2.1API和云平台的普及
9.2.2API与企业数字化转型、应用互联网及API经济
9.3API的平台和工具有待进一步统一和标准化
9.4一个REST API的结构
9.5对API的认识不是一蹴而就的
9.6动手开发API先尝为快
9.7总结10章围绕API的开发工作
10.1API的生命周期
10.1.1API的设计生命周期
10.1.2API的运维生命周期
10.2API的调用者
10.3API项目中的人员和流程
10.3.1什么是使能中心
10.3.2围绕使能中心的不同角色
10.3.3使能中心与绩优中心的区别
10.3.4建立使能中心的具体步骤
10.3.5建立使能中心的好处
10.4总结
11章API与微服务
11.1什么是微服务
11.2微服务与服务的关系
11.3微服务与API的关系
11.4总结
12章API与云计算
12.1云计算需求的由来
12.2云计算对API技术的影响
12.2.1云计算的平台能为你的API和应用提供多少服务
12.2.2现有系统之间的连接是否受到影响
12.2.3是否需要增加安全措施
12.2.4如何将API负责对内和对外的部分分开
12.3实战: 全云和云本地混合型的API平台
12.3.1项目1背景
12.3.2项目1云平台的架构
12.3.3项目2背景
12.3.4项目2混合型平台的架构
12.4总结13章佳实践的经验
13.1关于系统集成的佳实践
13.1.1不要以数据复制的思考方式设计系统集成
13.1.2尽量避免使用批处理文件的方式
13.1.3对消息服务器运行的认识
13.1.4使用SEDA的架构模式来提高系统集成整体设计
的可靠性
13.1.5对容错、负载平衡和高可用性的考虑
13.1.6对灾难恢复设置的考虑
13.1.7接收JMS消息时的消息确认方式对消息处理
可靠性的影响
13.2关于API的佳实践
13.2.1在设计API的过程中使用资源的字眼,而不要
使用数据
13.2.2不要使用API的概念和方式来做系统集成
13.2.3API还是连接器
13.2.4API实施中的出错处理
13.2.5API的URI的每一个部分都应该是名词,
而不是动词
13.2.6API的版本管理
13.2.7API调用全程中的错误查找
13.3关于架构设计的佳实践
13.3.1不要使用UML的时序图来编写系统集成的用例
文件
13.3.2注意区分设计能方面和非功能方面的要求
13.3.3API与敏捷开发的关系
13.3.4不要在没有系统性能指标要求的情况下对系统
进行性能的评价和测试
13.3.5数据验证逻辑与数据的关系
13.3.6API、服务和集成中均不保留状态
13.4实战案例现有的老旧IT系统的改造
13.5总结14章围绕API的展望
14.1关于企业的IT欠债
14.2利用API产生新的业务创新和数字化转型
14.2.1优步(Uber)的创新
14.2.2邮局的数字化转型
14.2.3电力公司旨在提高零售用电顾客满意度
的数字化转型
14.2.4玩具公司旨在减少货运差错和加快货款回收
的数字化转型
14.3利用API产生应用互联网和API经济
14.4关于API经济的新展望
14.5总结
第3部分闲篇感悟与随想
15章架构师的人文情怀
15.1关于学习过程中的三个境界
15.2架构师所要具备的硬实力
15.3架构师所要具备的软实力
15.3.1时刻分清目的和手段
15.3.2处处讲究形式逻辑
15.3.3强调利用抽象思维的能力
15.3.4表达和交流要看对象
15.3.5坚持原则,但也要知道妥协
15.3.6知之为知之,不知为不知
15.4架构师所处的大环境
15.4.1架构师的职业规划
15.4.2软件工程问题与业务问题的分离
15.4.3高校计算机软件课程设置与现实对架构师要求的
匹配问题
15.5总结
附录A关于实践
A.1搭建MuleSoft的开发和运行环境开源版
A.1.1开发环境
A.1.2运行环境
A.2安装Apache ActiveMQ消息服务器开源版
附录B集成中常遇到的功能系统
B.1业务流程管理系统
B.2复杂事件处理
B.3云端系统
B.4客户关系管理系统
B.5数据库系统
B.6电子内容管理
B.7电子商务
B.8电子数据交换
B.9企业资源计划
B.10人力资本管理
B.11行业标准
B.12IT开发和运行工具
B.13IT基础设施管理
B.14传统系统改造
B.15主数据管理
B.16消息传递服务器
B.17通信协议
B.18社交媒体