书籍详情
持续架构实践:敏捷和DevOps时代下的软件架构
作者:[美]穆拉特·埃尔德,[美]皮埃尔·普约尔,[美]伊恩·伍兹(Eoin Woods)
出版社:机械工业出版社
出版时间:2023-01-01
ISBN:9787111717744
定价:¥99.00
购买这本书可以去
内容简介
本书为在现实环境中利用持续架构方法提供了实践指南,并阐明了架构在敏捷、DevOps和云平台时代不断变化的角色。本书将帮助技术人员更新其架构实践,以应对新的软件挑战。本书使架构师和软件工程师能够快速应用面向交付的知识。它包括了解决当今软件系统关键质量属性和交叉问题的深入指导,例如安全性、性能、可伸缩性、弹性、数据和新兴技术等。通过一个贯穿全书的案例研究,对每项关键技术都进行了演示,反映了作者应对复杂软件环境的丰富经验。
作者简介
穆拉特·埃尔德(Murat Erder)“持续架构”之父,德意志银行董事、行政办公室CTO、数据办公室主管,在软件研发和架构领域有超过25年的经验,是一位资深的软件架构专家和管理顾问。于2015年在与穆拉特·埃尔德(Murat Erder)合著的《持续架构:敏捷中的持续架构》一书中提出“持续架构”的概念,自此之后,一直在世界范围内以实践、写作、演讲、咨询等方式进行持续架构的深化和布道工作。 皮埃尔·普约尔(Pierre Pureur)“持续架构”之父,有近35年的软件开发和架构经验,IEEE会员。擅长企业架构、应用架构、信息架构、解决方案架构等几乎所有与架构相关的领域,曾担任某大型金融服务公司的首席企业架构师,在金融领域有丰富的技术和服务经验。于2015年在与穆拉特·埃尔德(Murat Erder)合著的《持续架构:敏捷中的持续架构》一书中提出“持续架构”的概念,并与其共同在世界范围内开展持续架构的布道工作。 伊恩·伍兹(Eoin Woods)纽交所上市跨国软件公司Endava的CTO,有超过30年的软件开发和架构经验。英国工程技术学会(IET)特许会员,英国计算机协会(BSC)特许会员。于2018年获得获得由卡内基·梅隆大学的美国软件工程研究所(CMU SEI,全球软件工程领域最权威机构)颁发的Linda M. Northrup软件架构大奖。著有《软件系统架构》《软件架构指标》等架构领域的畅销著作。
目录
赞誉
推荐序
译者序
前言
致谢
第1章 软件架构的重要性更胜往昔 1
1.1 我们所说的架构到底是什么 1
1.2 当今的软件行业 2
1.3 当前软件架构的挑战 4
1.3.1 关注技术细节而不是业务
场景 4
1.3.2 认为“架构不能增加价值” 4
1.3.3 架构实践也许太慢了 5
1.3.4 一些架构师可能并不适应
云平台 6
1.4 敏捷化世界里的软件架构 6
1.4.1 一切的开始:软件架构与
极限编程 6
1.4.2 我们究竟在哪一步:架构、
敏捷性还是持续交付 7
1.4.3 未来的方向 7
1.5 持续架构的引入 8
1.5.1 持续架构的定义 8
1.5.2 持续架构的收益 10
1.6 应用持续架构 11
1.7 案例研究介绍 12
1.8 本章小结 14
第2章 架构实践:基本活动 15
2.1 基本活动概述 16
2.2 架构决策 17
2.2.1 架构决策的制定和治理 18
2.2.2 敏捷项目中的架构决策 19
2.3 质量属性 21
2.3.1 质量属性和架构策略 22
2.3.2 使用质量属性 22
2.3.3 构建质量属性效用树 23
2.4 技术债务 23
2.4.1 捕获技术债务 25
2.4.2 如何管理技术债务 26
2.5 反馈循环:架构演进 27
2.5.1 适应度函数 28
2.5.2 持续测试 29
2.6 当今软件架构实践中的共同
主题 30
2.6.1 以准则为架构指南 30
2.6.2 由团队负责的架构 31
2.6.3 模型与符号 32
2.6.4 模式和风格 33
2.6.5 架构作为决策流 33
2.7 本章小结 34
第3章 数据架构 36
3.1 数据即架构的考虑 37
3.1.1 什么是数据 37
3.1.2 通用语言 38
3.2 关键技术趋势 39
3.2.1 SQL统治地位的消亡:NoSQL和多种持久化 40
3.2.2 可伸缩性和可用性:终
一致性 43
3.2.3 事件与状态:事件溯源 45
3.2.4 数据分析:来自信息的智慧
和知识 47
3.3 其他架构考虑事项 51
3.3.1 数据所有权和元数据 51
3.3.2 数据集成 53
3.3.3 数据(模式)演进 55
3.4 本章小结 56
3.5 拓展阅读 57
第4章 架构之安全性 59
4.1 架构场景中的安全性 59
4.1.1 当今的安全形势正在变化 60
4.1.2 我们所说的安全性到底是
什么 61
4.1.3 从无到有建立安全性 61
4.1.4 安全性左移 62
4.2 面向安全性设计架构 62
4.2.1 什么是安全风险 62
4.2.2 持续的风险建模和缓解
风险 63
4.2.3 风险识别技术 64
4.2.4 划分风险等级 67
4.2.5 其他方法 68
4.3 缓解风险的架构策略 68
4.3.1 身份验证、授权和审计 68
4.3.2 信息的隐私和完整性 69
4.3.3 拒绝抵赖 70
4.3.4 系统可用性 70
4.3.5 安全监控 71
4.3.6 密钥管理 72
4.3.7 缓解社会工程学攻击 74
4.3.8 零信任网络 75
4.3.9 实现TFX的安全性 75
4.4 维持安全性 78
4.4.1 安全性的实施 78
4.4.2 人员、流程和技术 79
4.4.3 薄弱的一环 79
4.4.4 持续提供安全性 79
4.4.5 为不可避免的失败做好
准备 80
4.4.6 安全舞台与安全实现 81
4.5 本章小结 81
4.6 拓展阅读 82
第5章 架构之可伸缩性 84
5.1 架构场景中的可伸缩性 85
5.1.1 什么改变了:可伸缩性的
假设 86
5.1.2 影响可伸缩性的因素 87
5.1.3 可伸缩性的类型和误解 88
5.1.4 云计算的影响 91
5.2 可伸缩性架构:架构策略 92
5.2.1 TFX可伸缩性需求 93
5.2.2 数据库可伸缩性 94
5.2.3 数据分发、复制和分区 96
5.2.4 面向可伸缩性的缓存 97
5.2.5 使用异步通信实现可伸
缩性 99
5.2.6 其他应用程序架构的注意
事项 101
5.2.7 实现TFX的可伸缩性 105
5.3 本章小结 107
5.4 拓展阅读 109
第6章 架构之性能 111
6.1 架构场景中的性能 111
6.1.1 影响性能的因素 112
6.1.2 架构关注点 112
6.2 性能架构 114
6.2.1 新兴趋势对性能的影响 114
6.2.2 围绕性能建模和测试构建
应用程序 116
6.2.3 现代应用程序的性能策略 118
6.2.4 现代数据库的性能策略 121
6.2.5 实现TFX的性能 124
6.3 本章小结 128
6.4 拓展阅读 128
第7章 架构之弹性 131
7.1 架构场景中的弹性 132
7.1.1 变化:失败的必然性 133
7.1.2 直面系统失败的可靠性 133
7.1.3 业务场景 134
7.1.4 MTTR,不仅是MTBF 134
7.1.5 MTBF和MTTR与RPO
和RTO的对比 135
7.1.6 逐渐好转 136
7.1.7 弹性组织 137
7.2 面向弹性的架构设计 137
7.2.1 允许失败 137
7.2.2 测量与学习 139
7.3 面向弹性的架构策略 140
7.3.1 故障识别策略 141
7.3.2 隔离策略 142
7.3.3 保护策略 145
7.3.4 缓解策略 148
7.3.5 实现TFX的弹性 151
7.4 维护弹性 152
7.4.1 运营的可见性 153
7.4.2 面向弹性的测试 153
7.4.3 DevOps的角色 154
7.4.4 检测与恢复、预测与缓解 155
7.4.5 事故处理 155
7.4.6 灾难恢复 156
7.5 本章小结 157
7.6 拓展阅读 157
第8章 软件架构与新兴技术 159
8.1 使用架构处理新技术引入的
技术风险 160
8.2 人工智能、机器学习和深度
学习简介 160
8.2.1 机器学习的类型 161
8.2.2 什么是深度学习 162
8.3 在TFX中使用机器学习 163
8.3.1 机器学习解决的问题类型、
先决条件和架构考虑 163
8.3.2 在TFX中使用文档分类 164
8.3.3 在TFX中实现一个聊天
机器人 169
8.4 在TFX中使用共享分类账 174
8.4.1 共享分类账、区块链和分布
式分类账技术简介 174
8.4.2 共享分类账解决的问题类型、
先决条件和架构考虑 175
8.4.3 共享分类账的能力 176
8.4.4 在TFX中实现一个共享
分类账 178
8.4.5 架构导向方法的好处 182
8.5 本章小结 183
8.6 拓展阅读 183
第9章 持续架构实践的结论 185
9.1 变与不变 185
9.2 更新架构实践 186
9.3 数据 187
9.4 关键的质量属性 188
9.4.1 安全性 189
9.4.2 可伸缩性 189
9.4.3 性能 190
9.4.4 弹性 190
9.5 当今时代的架构 190
9.6 实践中的持续架构 191
附录A 案例研究 192
附录B 共享分类账技术实现对比 212
术语表 214
推荐序
译者序
前言
致谢
第1章 软件架构的重要性更胜往昔 1
1.1 我们所说的架构到底是什么 1
1.2 当今的软件行业 2
1.3 当前软件架构的挑战 4
1.3.1 关注技术细节而不是业务
场景 4
1.3.2 认为“架构不能增加价值” 4
1.3.3 架构实践也许太慢了 5
1.3.4 一些架构师可能并不适应
云平台 6
1.4 敏捷化世界里的软件架构 6
1.4.1 一切的开始:软件架构与
极限编程 6
1.4.2 我们究竟在哪一步:架构、
敏捷性还是持续交付 7
1.4.3 未来的方向 7
1.5 持续架构的引入 8
1.5.1 持续架构的定义 8
1.5.2 持续架构的收益 10
1.6 应用持续架构 11
1.7 案例研究介绍 12
1.8 本章小结 14
第2章 架构实践:基本活动 15
2.1 基本活动概述 16
2.2 架构决策 17
2.2.1 架构决策的制定和治理 18
2.2.2 敏捷项目中的架构决策 19
2.3 质量属性 21
2.3.1 质量属性和架构策略 22
2.3.2 使用质量属性 22
2.3.3 构建质量属性效用树 23
2.4 技术债务 23
2.4.1 捕获技术债务 25
2.4.2 如何管理技术债务 26
2.5 反馈循环:架构演进 27
2.5.1 适应度函数 28
2.5.2 持续测试 29
2.6 当今软件架构实践中的共同
主题 30
2.6.1 以准则为架构指南 30
2.6.2 由团队负责的架构 31
2.6.3 模型与符号 32
2.6.4 模式和风格 33
2.6.5 架构作为决策流 33
2.7 本章小结 34
第3章 数据架构 36
3.1 数据即架构的考虑 37
3.1.1 什么是数据 37
3.1.2 通用语言 38
3.2 关键技术趋势 39
3.2.1 SQL统治地位的消亡:NoSQL和多种持久化 40
3.2.2 可伸缩性和可用性:终
一致性 43
3.2.3 事件与状态:事件溯源 45
3.2.4 数据分析:来自信息的智慧
和知识 47
3.3 其他架构考虑事项 51
3.3.1 数据所有权和元数据 51
3.3.2 数据集成 53
3.3.3 数据(模式)演进 55
3.4 本章小结 56
3.5 拓展阅读 57
第4章 架构之安全性 59
4.1 架构场景中的安全性 59
4.1.1 当今的安全形势正在变化 60
4.1.2 我们所说的安全性到底是
什么 61
4.1.3 从无到有建立安全性 61
4.1.4 安全性左移 62
4.2 面向安全性设计架构 62
4.2.1 什么是安全风险 62
4.2.2 持续的风险建模和缓解
风险 63
4.2.3 风险识别技术 64
4.2.4 划分风险等级 67
4.2.5 其他方法 68
4.3 缓解风险的架构策略 68
4.3.1 身份验证、授权和审计 68
4.3.2 信息的隐私和完整性 69
4.3.3 拒绝抵赖 70
4.3.4 系统可用性 70
4.3.5 安全监控 71
4.3.6 密钥管理 72
4.3.7 缓解社会工程学攻击 74
4.3.8 零信任网络 75
4.3.9 实现TFX的安全性 75
4.4 维持安全性 78
4.4.1 安全性的实施 78
4.4.2 人员、流程和技术 79
4.4.3 薄弱的一环 79
4.4.4 持续提供安全性 79
4.4.5 为不可避免的失败做好
准备 80
4.4.6 安全舞台与安全实现 81
4.5 本章小结 81
4.6 拓展阅读 82
第5章 架构之可伸缩性 84
5.1 架构场景中的可伸缩性 85
5.1.1 什么改变了:可伸缩性的
假设 86
5.1.2 影响可伸缩性的因素 87
5.1.3 可伸缩性的类型和误解 88
5.1.4 云计算的影响 91
5.2 可伸缩性架构:架构策略 92
5.2.1 TFX可伸缩性需求 93
5.2.2 数据库可伸缩性 94
5.2.3 数据分发、复制和分区 96
5.2.4 面向可伸缩性的缓存 97
5.2.5 使用异步通信实现可伸
缩性 99
5.2.6 其他应用程序架构的注意
事项 101
5.2.7 实现TFX的可伸缩性 105
5.3 本章小结 107
5.4 拓展阅读 109
第6章 架构之性能 111
6.1 架构场景中的性能 111
6.1.1 影响性能的因素 112
6.1.2 架构关注点 112
6.2 性能架构 114
6.2.1 新兴趋势对性能的影响 114
6.2.2 围绕性能建模和测试构建
应用程序 116
6.2.3 现代应用程序的性能策略 118
6.2.4 现代数据库的性能策略 121
6.2.5 实现TFX的性能 124
6.3 本章小结 128
6.4 拓展阅读 128
第7章 架构之弹性 131
7.1 架构场景中的弹性 132
7.1.1 变化:失败的必然性 133
7.1.2 直面系统失败的可靠性 133
7.1.3 业务场景 134
7.1.4 MTTR,不仅是MTBF 134
7.1.5 MTBF和MTTR与RPO
和RTO的对比 135
7.1.6 逐渐好转 136
7.1.7 弹性组织 137
7.2 面向弹性的架构设计 137
7.2.1 允许失败 137
7.2.2 测量与学习 139
7.3 面向弹性的架构策略 140
7.3.1 故障识别策略 141
7.3.2 隔离策略 142
7.3.3 保护策略 145
7.3.4 缓解策略 148
7.3.5 实现TFX的弹性 151
7.4 维护弹性 152
7.4.1 运营的可见性 153
7.4.2 面向弹性的测试 153
7.4.3 DevOps的角色 154
7.4.4 检测与恢复、预测与缓解 155
7.4.5 事故处理 155
7.4.6 灾难恢复 156
7.5 本章小结 157
7.6 拓展阅读 157
第8章 软件架构与新兴技术 159
8.1 使用架构处理新技术引入的
技术风险 160
8.2 人工智能、机器学习和深度
学习简介 160
8.2.1 机器学习的类型 161
8.2.2 什么是深度学习 162
8.3 在TFX中使用机器学习 163
8.3.1 机器学习解决的问题类型、
先决条件和架构考虑 163
8.3.2 在TFX中使用文档分类 164
8.3.3 在TFX中实现一个聊天
机器人 169
8.4 在TFX中使用共享分类账 174
8.4.1 共享分类账、区块链和分布
式分类账技术简介 174
8.4.2 共享分类账解决的问题类型、
先决条件和架构考虑 175
8.4.3 共享分类账的能力 176
8.4.4 在TFX中实现一个共享
分类账 178
8.4.5 架构导向方法的好处 182
8.5 本章小结 183
8.6 拓展阅读 183
第9章 持续架构实践的结论 185
9.1 变与不变 185
9.2 更新架构实践 186
9.3 数据 187
9.4 关键的质量属性 188
9.4.1 安全性 189
9.4.2 可伸缩性 189
9.4.3 性能 190
9.4.4 弹性 190
9.5 当今时代的架构 190
9.6 实践中的持续架构 191
附录A 案例研究 192
附录B 共享分类账技术实现对比 212
术语表 214
猜您喜欢