在数字化转型加速的当下,本书是 IT 从业者的必备宝典。它系统阐述解决方案架构知识,不仅有传统架构设计原则与模式,还深入探讨云迁移、大数据、机器学习等前沿领域。通过丰富案例和实用技巧,助力读者提升架构设计能力,从容应对工作挑战,非常值得一读。
成为解决方案架构师,必须熟练掌握各类技术栈,洞悉业务流程,本书将带你了解成为一名成功的解决方案架构师所需要了解的基本概念、设计原则和模式、架构考量以及相关的新技术。本书是一部深度解读并实践解决方案架构师这一角色的综合性指南。书中不仅详细介绍了设计支柱、高级设计模式、反模式以及现代软件设计的云原生方面的知识,还阐述了解决方案架构师在不同层次的任务和责任——从技术架构设计的基本原则到实际项目中的难点突破,再到面对新兴技术挑战时的应对手段,都有着详尽而实用的解说。同时,作者并未忽视那些在架构设计之外同样至关重要的软技能,如沟通协调、团队领导力、创新能力,以及对于行业趋势的敏锐度等,这些都是决定一位解决方案架构师能否在实践中游刃有余、脱颖而出的关键品质。
相较于第1版,第2版与时俱进地更新了大量前沿内容,特别是针对当前热门的IT趋势,如大数据架构、人工智能架构、物联网架构等方面,进行了深度探讨和案例解析。值得一提的是,本书还前瞻性地介绍了量子计算这一很好领域,让你有机会接触未来可能重塑IT行业的关键技术趋势,为你的职业发展铺设更加宽广的道路。
本书赞誉
译者序
序一
序二
序三
前言
作者简介
审校者简介
第1章 解决方案架构的含义 1
1.1 什么是解决方案架构 1
1.2 解决方案架构的演进 4
1.3 解决方案架构为何如此重要 5
1.4 解决方案架构的好处 6
1.4.1满足业务需求和交付质量要求 7
1.4.2选择很好技术平台 7
1.4.3 处理解决方案的约束和问题 8
1.4.4 协助资源和成本管理 8
1.4.5 管理解决方案交付和项目生命周期 8
1.4.6 解决非功能性需求 9
1.5 公有云中的解决方案架构 10
1.5.1 什么是公有云 10
1.5.2 公有云、私有云和混合云 10
1.5.3 公有云架构 11
1.5.4 思考云原生架构 12
1.5.5 公有云供应商和云服务产品 13
1.6 小结 14
第2章 组织中的解决方案架构师 15
2.1 解决方案架构师的角色类型 16
2.1.1 通用型解决方案架构师角色 17
2.1.2 专业型解决方案架构师角色 19
2.2 解决方案架构师的职责 23
2.2.1 分析功能性需求 24
2.2.2 定义非功能性需求 24
2.2.3 了解并接触利益相关者 26
2.2.4 明确约束 27
2.2.5 技术选型 28
2.2.6 概念验证和原型开发 28
2.2.7 设计解决方案并持续交付 29
2.2.8 对解决方案进行扩展 30
2.2.9 担任技术布道者 31
2.3 敏捷组织中的解决方案架构师 31
2.3.1 为什么选择敏捷方法论 31
2.3.2 敏捷宣言 32
2.3.3 敏捷流程和术语 33
2.4 小结 36
第3章 解决方案架构的属性 37
3.1 可伸缩性与弹性 37
3.1.1 容量伸缩困境 38
3.1.2 架构伸缩 39
3.1.3 静态内容伸缩 40
3.1.4 服务器集群弹性 40
3.1.5 数据库伸缩 41
3.2 高可用性和韧性 41
3.3 容错与冗余 43
3.4 灾难恢复与业务连续性 44
3.5 可扩展性与可重用性 45
3.6 易用性与可访问性 46
3.7 可移植性与互操作性 47
3.8 卓越运维与可维护性 48
3.9 安全性与合规性 49
3.9.1 身份认证与授权 50
3.9.2 Web安全 50
3.9.3 网络安全 50
3.9.4 基础设施安全 50
3.9.5 数据安全 51
3.10 成本优化与预算 51
3.11 小结 52
第4章 解决方案架构的设计原则 53
4.1 可伸缩的工作负载 53
4.1.1 预测性伸缩 54
4.1.2 被动伸缩 56
4.2 构建有韧性的架构 57
4.3 性能设计 59
4.4 使用可替换资源 60
4.5 考虑松耦合 61
4.6 考虑服务而非服务器 63
4.7 根据合理的需求选择合适的存储 64
4.8 考虑数据驱动的设计 66
4.9 克服架构约束 67
4.10 采用MVP的方法 67
4.11 安全无处不在 68
4.12 尽可能自动化 69
4.13 小结 70
第5章 云迁移和混合云架构设计 71
5.1 云原生架构的好处 72
5.2 流行的公有云选择 73
5.3 创建云迁移策略 74
5.3.1 直接搬迁上云 75
5.3.2 云原生方法 77
5.3.3 保留或淘汰策略 78
5.4 选择云迁移策略 79
5.5 云迁移的步骤 80
5.5.1 发现工作负载 81
5.5.2 分析信息 83
5.5.3 制定迁移计划 84
5.5.4 设计应用程序 86
5.5.5 执行应用程序迁移上云 89
5.5.6 集成、验证和切换 92
5.5.7 运维云应用程序 93
5.5.8 优化云上应用程序 95
5.6 创建混合云架构 96
5.7 采用多云方式 97
5.8 设计云原生架构 98
5.9 小结 99
5.10 进一步阅读 100
第6章 解决方案架构设计模式 101
6.1 构建N层架构 101
6.1.1 Web层 102
6.1.2 应用层 103
6.1.3 数据库层 103
6.2 创建基于SaaS的多租户架构 104
6.3 构建无状态架构和有状态架构 105
6.4 理解SOA 107
6.4.1 基于SOAP的Web服务架构 107
6.4.2 RESTful Web服务架构 111
6.4.3 构建基于SOA的电子商务网站架构 112
6.5 构建无服务器架构 113
6.6 创建微服务架构 115
6.7 构建基于队列的架构 117
6.7.1 队列链表模式 117
6.7.2 作业观察者模式 119
6.8 创建事件驱动架构 120
6.8.1 发布者/订阅者模型 120
6.8.2 事件流模型 121
6.9 构建基于缓存的架构 122
6.9.1 三层Web架构中的缓存分发模式 123
6.9.2 重命名分发模式 124
6.9.3 缓存代理模式 125
6.9.4 重写代理模式 126
6.9.5 应用缓存模式 127
6.10 理解断路器模式 128
6.11 实现隔板模式 129
6.12 构建浮动IP模式 130
6.13 使用容器部署应用程序 131
6.13.1 容器的好处 132
6.13.2 容器部署 133
6.14 构建基于容器的架构 134
6.15 应用程序架构中的数据库处理 135
6.16 避免解决方案架构中的反模式 138
6.17 小结 139
第7章 性能考量 141
7.1 架构性能的设计原则 141
7.1.1 减少延迟 142
7.1.2 提高吞吐量 143
7.1.3 处理并发 144
7.1.4 使用缓存 145
7.2 性能优化的技术选型 145
7.2.1 计算能力选型 146
7.2.2 选择存储 151
7.2.3 选择数据库 153
7.2.4 提高网络性能 156
7.3 性能监控管理 159
7.4 小结 160
第8章 安全考量 161
8.1 架构安全的设计原则 161
8.1.1 实现认证和授权控制 162
8.1.2 安全无处不在 162
8.1.3 缩小爆炸半径 163
8.1.4 时刻监控和审计一切 163
8.1.5 自动化一切 163
8.1.6 数据保护 163
8.1.7 事件响应准备 164
8.2 架构安全技术选型 164
8.2.1 用户身份和访问管理 164
8.2.2 处理Web安全问题 172
8.2.3 保护应用程序及其基础设施 177
8.2.4 数据安全 181
8.3 安全认证和合规性认证 186
8.4 云的共享安全责任模型 187
8.5 小结 188
第9章 架构可靠性考量 190
9.1 架构可靠性的设计原则 190
9.1.1 使系统自愈 191
9.1.2 应用自动化 191
9.1.3 创建分布式系统 191
9.1.4 容量监控 192
9.1.5 执行恢复验证 192
9.2 架构可靠性的技术选型 193
9.2.1 规划RTO和RPO 193
9.2.2 数据复制 194
9.2.3 规划灾难恢复 196
9.2.4 灾难恢复的最佳实践 203
9.3 利用云来提高可靠性 204
9.4 小结 205
第10章 卓越运维考量 206
10.1 卓越运维的设计原则 206
10.1.1 自动化运维 207
10.1.2 进行增量和可逆的变更 207
10.1.3 预测并响应故障 208
10.1.4 从错误中学习并改进 208
10.1.5 持续更新运维手册 208
10.2 卓越运维的技术选型 209
10.2.1 卓越运维的规划阶段 209
10.2.2 卓越运维的执行阶段 212
10.2.3 卓越运维的改进阶段 219
10.3 在公有云中实现卓越运维 222
10.4 小结 223
第11章 成本考量 224
11.1 成本优化的设计原则 224
11.1.1 计算总拥有成本 225
11.1.2 规划预算和预测 226
11.1.3 管理需求和服务目录 227
11.1.4 跟踪支出 228
11.1.5 持续成本优化 228
11.2 成本优化的技术选型 229
11.2.1 降低架构复杂度 229
11.2.2 提高IT效率 231
11.2.3 实施标准化和架构治理 232
11.2.4 成本监控和报告 234
11.3 公有云上的成本优化 238
11.4 小结 239
第12章 DevOps和解决方案架构框架 240
12.1 DevOps的介绍 240
12.2 DevOps的好处 241
12.3 DevOps的组成部分 242
12.3.1 CI/CD 242
12.3.2 持续监控和改进 244
12.3.3 基础设施即代码 245
12.3.4 配置管理 247
12.4 什么是DevSecOps 248
12.5 结合DevSecOps和CI/CD 249
12.6 实施CD策略 251
12.6.1 就地部署 251
12.6.2 滚动部署 251
12.6.3 蓝绿部署 251
12.6.4 红黑部署 252
12.6.5 不可变部署 253
12.7 在CI/CD流水线中实施持续测试 253
12.8 CI/CD的DevOps工具 255
12.8.1 代码编辑器 255
12.8.2 源代码管理 255
12.8.3 CI服务器 256
12.8.4 代码部署 257
12.8.5 代码流水线 259
12.9 实施DevOps的最佳实践 259
12.10 在云中构建DevOps和DevSecOps 261
12.11 小结 263
第13章 解决方案架构的数据工程 264
13.1 什么是大数据架构 265
13.2 大数据处理流水线设计 266
13.3 数据摄取 268
13.3.1 数据摄取的技术选型 269
13.3.2 数据摄取上云 269
13.4 数据存储 270
13.5 数据处理和分析 277
13.6 数据可视化 281
13.7 设计大数据架构 282
13.7.1 数据湖架构 283
13.7.2 湖屋架构 287
13.7.3 数据网格架构 288
13.7.4 流数据架构 291
13.8 大数据架构的最佳实践 292
13.9 小结 295
第14章 机器学习架构 296
14.1 什么是机器学习 296
14.2 使用数据科学和机器学习 298
14.2.1 评估机器学习模型——过拟合与欠拟合 300
14.2.2 监督学习算法和无监督学习算法 300
14.3 云上机器学习 302
14.4 构建机器学习架构 302
14.4.1 准备和标注 303
14.4.2 选择和构建 303
14.4.3 训练和调优 304
14.4.4 部署和管理 304
14.5 机器学习参考架构 305
14.6 机器学习运维 307
14.6.1 MLOps原则 307
14.6.2 MLOps最佳实践 308
14.7 深度学习 309
14.8 小结 311
第15章 物联网架构 312
15.1 什么是物联网 312
15.2 物联网架构组件 314
15.2.1 管理物联网设备 314
15.2.2 连接和控制物联网设备 317
15.2.3 对物联网数据进行分析 318
15.3 云上物联网 319
15.4 构建工业物联网解决方案 321
15.4.1 互联工厂物联网架构 322
15.4.2 实现数字孪生 324
15.5 小结 325
第16章 量子计算 327
16.1 量子计算机的组成部分 327
16.1.1 量子位 328
16.1.2 叠加 328
16.1.3 纠缠 329
16.2 量子计算机的工作机制 329
16.2.1 量子门 330
16.2.2 量子电路 332
16.3 量子计算机的类型 333
16.4 现实生活中的量子计算 334
16.5 云中的量子计算 335
16.6 小结 336
第17章 重构遗留系统 337
17.1 遗留系统面临的挑战 338
17.1.1 难以满足用户需求 339
17.1.2 维护和更新费用较高 339
17.1.3 缺乏技能和文档 340
17.1.4 存在安全风险 340
17.1.5 无法兼容其他系统 341
17.2 遗留系统现代化改造的好处 341
17.3 遗留系统现代化改造策略 343
17.3.1 遗留系统的评估 343
17.3.2 现代化改造方法 344
17.4 遗留系统现代化改造技术 345
17.4.1 封装、重新托管和更换平台 346
17.4.2 重构和重新架构 346
17.4.3 重新设计和替换 347
17.5 遗留系统的云迁移策略 348
17.6 使用公有云进行大型机迁移 349
17.6.1 迁移独立应用程序 350
17.6.2 迁移具有共享代码的应用程序 351
17.7 小结 353
第18章 解决方案架构文档 354
18.1 解决方案架构文档的目的 354
18.2 解决方案架构文档的视图 355
18.3 解决方案架构文档的结构 357
18.3.1 解决方案概述 358
18.3.2 业务上下文 359
18.3.3 概念解决方案概述 360
18.3.4 解决方案架构 360
18.3.5 解决方案实施 363
18.3.6 解决方案管理 364
18.3.7 附录 364
18.4 解决方案架构的IT采购文档 364
18.5 小结 365
第19章 学习软技能,成为更优秀的解决方案架构师 366
19.1 掌握售前技能 366
19.2 向C级高管汇报 367
19.3 掌握自主权并承担责任 369
19.4 用目标和关键结果来定义战略执行 369
19.5 着眼于大局 370
19.6 灵活性和适应性 370
19.7 设计思维 371
19.8 做一个动手写代码的程序员 373
19.9 持续学习,不断进步 373
19.10 成为他人的导师 375
19.11 成为技术布道者和思想领袖 375
19.12 小结 376