持续架构实践 敏捷和DevOps时代下的软件架构
- ISBN:9787111717744
- 装帧:一般胶版纸
- 册数:暂无
- 重量:暂无
- 开本:16开
- 页数:236
- 出版时间:2023-01-01
- 条形码:9787111717744 ; 978-7-111-71774-4
本书特色
适读人群 :软件架构师、软件工程师和软件技术团队管理者(1)紧贴科技热点:Gartner权威发布2023年十大科技趋势之一“可持续IT架构”,可持续架构得到越来越多从业人员认同; (2)作者权威:“持续架构”之父新作!三位作者有着丰富的软件架构经验; (3)内容翔实:本书用自顶向下的方法阐述“持续架构”,在持续架构六准则下,结合敏捷和DevOps和云时代等环境因素综合考虑可伸缩性、性能、安全、数据等维度的架构决策,辅以策略和案例。本书是应对软件规模和复杂度的革命性方法; (4)超强专家阵容推荐:5位全球知名专家联袂推荐; (5)译者阵容强大:中国持续架构领域4位领路人倾情翻译。
内容简介
本书为在现实环境中利用持续架构方法提供了实践指南,并阐明了架构在敏捷、DevOps和云平台时代不断变化的角色。本书将帮助技术人员更新其架构实践,以应对新的软件挑战。本书使架构师和软件工程师能够快速应用面向交付的知识。它包括了解决当今软件系统关键质量属性和交叉问题的深入指导,例如安全性、性能、可伸缩性、弹性、数据和新兴技术等。通过一个贯穿全书的案例研究,对每项关键技术都进行了演示,反映了作者应对复杂软件环境的丰富经验。
目录
赞誉
推荐序
译者序
前言
致谢
第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
节选
◆ 前言 ◆ 距离我们(Murat和Pierre)出版《持续架构》一书已经好几年了,这期间发生了很多变化,尤其是技术领域。因此,我们与Eoin Woods一起着手更新这本书。刚开始只是简单的修订,但慢慢地就演变成了这本新书。 《持续架构》主要是对概念、思想和工具进行概述和讨论,而本书则提供了更多基于实践的建议,侧重于指导读者如何利用持续架构方法,并涵盖了有关安全性、性能(performance)、可伸缩性、弹性、数据和新兴技术等主题的深入且*新的信息。 我们重新审视了架构在敏捷、DevSecOps、云和以云为中心的平台中的作用,也为技术人员提供了一份实用指南,指导他们通过不断更新经典软件架构实践的方式来应对当今应用程序所面临的一些复杂挑战。我们还重新审视了软件架构的一些核心主题:架构师在开发团队中的角色;如何满足软件涉众的质量属性需求;架构在实现如安全性、可伸缩性、性能和弹性等关键交叉需求方面的重要性。对上述每个领域,我们都提供了使架构实践有意义的一种新方法,这种方法通常建立在上一代软件架构相关书籍给出的传统建议之上,并解释了如何在现代软件开发环境中应对这些领域的挑战。 本书的结构如下: 第1章提供场景,定义术语,并概述在每章都会使用的案例研究(附录A包含了有关案例研究的详细信息)。 第2章列出我们的主要思想,希望读者了解如何在当今的软件开发环境中开展架构工作。 第3~7章探讨对现代应用程序开发来说至关重要的相关架构主题:数据、安全性、可伸缩性、性能和弹性。我们解释软件架构方法,尤其是持续架构方法,探讨如何在解决各个架构问题的同时保持敏捷的工作方式,以持续地向生产环境交付变更。 第8章和第9章主要着眼于未来,讨论架构在处理新兴技术方面的作用,并总结当今敏捷和DevOps时代下架构实践遇到的挑战以及应对这些挑战的一些潜在方法。 我们希望想成为软件架构师的读者了解该领域的经典基础知识(可能来自Software Architecture in Practice或Software Systems Architecture之类的书籍),同时认识到需要更新方法以应对当今快速发展的软件开发环境所带来的挑战。想要了解架构和设计的软件工程师也可能会被书中实用的、面向交付的重点内容所吸引。 为了使本书只涉及必要的内容并专注于上一本书以来发生的变化,我们假设读者已经熟悉包括信息安全、云计算、基于微服务的架构以及常见的自动化技术(例如自动化测试和部署流水线)在内的主流技术基础知识。我们希望读者熟悉架构设计的基本方法,了解如何创建软件的可视化模型以及领域驱动设计(Domain-Driven Design,DDD)等相关方法。如果读者对架构设计基础没有把握,我们建议从定义明确的方法开始,例如软件工程研究所的属性驱动设计或其他更简单的方法(如Software Systems Architecture第7章中概述的方法)。虽然软件建模被忽视了几年,但似乎正在重新回归主流实践。对于一开始错过了这些知识的人,Software Systems Architecture的第12章提供了一个起点,另外Simon Brown的著作对软件建模的介绍更新且更易于理解。 本书中未涉及的另一个基础架构实践是如何评估软件架构。该主题在我们上一本书的第6章、Software Systems Architecture的第14章和Software Architecture in Practice的第21章都有介绍。读者还可以上网搜索有关架构评估方法的信息,例如架构权衡分析方法(Architecture Tradeoff Analysis Method,ATAM)。 此外,我们还假设读者具备敏捷开发的相关知识,如敏捷、Scrum和规模化敏捷框架(Scaled Agile Framework,SAFe),因此对软件开发生命周期过程不做深入讨论,也不对DevSecOps等软件部署和操作方法做或深或浅的讨论,并且特意去除了数据库、安全性、自动化等特定技术领域的详细信息。当然,我们会在相关的地方引用这些主题,但假设读者熟悉这些知识。在上一本书《持续架构》中,我们涵盖了这些主题,但没有涉及技术细节。另外请注意,术语表中定义的术语首次出现在本书中时会以粗体突出显示。 过去几年,软件架构的基础并没有改变,架构的总体目标依然是使正在开发的软件能够尽早并持续地交付业务价值。不幸的是,许多架构从业者并不会优先考虑这个目标,甚至不理解这个目标。 我们三人称自己为架构师,因为我们相信日常工作中所做的事情至今没有更好的解释。我们曾就职于软硬件供应商、管理咨询公司和大型金融机构,主要从事软件和企业架构相关的工作。但是,当说自己是架构师时,我们觉得有必要对其进行限定,就像需要一个解释来将我们与不增加任何价值的IT架构师的刻板印象区分开来。读者可能比较熟悉这样一种表达方式:“我是一名架构师,但我也交付、编写代码,与客户打交道 (填写你认为有价值的活动)。” 不管怎样,我们相信,表现出抽象派疯狂科学家、技术工匠或演讲狂人等品质的架构师只是少数从业者。作为软件交付团队的一部分,大多数架构师能够有效地工作,很多时候甚至可能不自居为架构师。实际上,无论你理解与否,所有软件都有一个架构,且大部分软件产品都会有一小组高级开发人员来创建一个可行的架构,而不论这个架构是否被记录下来。因此,*好将架构视为一种技能而非一种角色。 我们相信时代已经永久地摆脱了先前以文档为中心的软件架构实践,或许也已经摆脱了传统的企业架构。然而,根据经验,我们一致认为仍然需要一种架构方法,涵盖敏捷、持续交付、DevSecOps和云计算,并从架构的宏观视角将这些方法集成起来,并按照业务优先级进行需求交付。本书旨在解释这种我们称为持续架构的方法,并展示如何在实践中有效地利用这种方法。
作者简介
穆拉特·埃尔德(Murat Erder) 在软件供应商、管理咨询公司和大型国际银行有超过25年的工作经验,他担任过各种角色,包括开发人员、软件架构师、管理顾问和首席技术官。他是Continuous Architecture: Sustainable Architecture in an Agile and Cloud-Centric World的作者之一。 皮埃尔·普约尔(Pierre Pureur) 一位经验丰富的软件架构师,具有广泛的创新和应用程序开发背景。他曾担任一家大型金融服务公司的首席企业架构师,也是Continuous Architecture: Sustainable Architecture in an Agile and Cloud-Centric World的作者之一。 伊恩·伍兹(Eoin Woods) 在软件开发行业有超过25年的工作经验,现任Endava公司的首席技术官。作为Software System Architecture的合著者,他于2018年获得了SEI颁发的Linda M. Northrup软件架构奖。 译者简介 茹炳晟 腾讯Tech Lead,腾讯研究院特约研究员,中国计算机学会(CCF)TF研发效能SIG主席,“软件研发效能宣言”发起人和主要起草人,著有《测试工程师全栈技术进阶与实践》《软件研发效能提升之美》《高效自动化测试平台:设计与开发实战》《软件研发效能提升实践》和《软件研发效能权威指南》等书,国内各大技术峰会的联席主席,出品人和Keynote演讲嘉宾。公众号“茹炳晟聊软件研发”作者。 刘惊惊 现任coupang电商平台组架构师,先后就职于电商和金融行业的多家大型企业,积累了比较丰富的业务系统架构经验。对于电商系统的各个模块均有一定的涉猎和研究。平时喜欢研究代码技术、架构理论等方面。 于君泽 20年电信企业系统和互联网领域研发经验。有丰富的研发中心建设经验,包括从0到1构建技术团队,业务规模从千笔交易/日发展到数十万笔交易/秒。对分布式架构、研发管理和内建质量较有兴趣。联合运营公众号“技术琐话”,《深入分布式缓存》《程序员的三门课》作者之一。发起公益性技术社群“中生代技术”并已举办线上线下活动数百期。工作外热心构建西部地区的技术氛围,并为塑造成都在全国的IT行业影响力贡献绵薄之力。 曹洪伟 原百度DuerOS首席布道师,原渡鸦科技CTO,目前从事智能物联网操作系统的研发。20多年软硬件产研经验,拥有40多项国内外专利,著有《BREW进阶与精通》,《深入分布式缓存》的作者之一,《计算机网络问题与解决方案》《区块链应用开发实战》《基于混合方法的自然语言处理》的共同译者,日常维护着公众号wireless_com和CSDN同名博客。
-
有限与无限的游戏:一个哲学家眼中的竞技世界
¥37.4¥68.0 -
硅谷之火-人与计算机的未来
¥14.3¥39.8 -
全图解零基础word excel ppt 应用教程
¥12.0¥48.0 -
机器学习
¥59.4¥108.0 -
深度学习的数学
¥43.5¥69.0 -
智能硬件项目教程:基于ARDUINO(第2版)
¥31.9¥65.0 -
元启发式算法与背包问题研究
¥38.2¥49.0 -
AI虚拟数字人:商业模式+形象创建+视频直播+案例应用
¥62.9¥89.8 -
UNIX环境高级编程(第3版)
¥164.9¥229.0 -
剪映AI
¥52.8¥88.0 -
深度学习高手笔记 卷2:经典应用
¥90.9¥129.8 -
纹样之美:中国传统经典纹样速查手册
¥77.4¥109.0 -
UG NX 12.0数控编程
¥24.8¥45.0 -
MATLAB计算机视觉与深度学习实战(第2版)
¥90.9¥128.0 -
界面交互设计理论研究
¥30.8¥56.0 -
UN NX 12.0多轴数控编程案例教程
¥25.8¥38.0 -
微机组装与系统维护技术教程(第二版)
¥37.8¥43.0 -
Go 语言运维开发 : Kubernetes 项目实战
¥48.2¥79.0 -
明解C语言:实践篇
¥62.9¥89.8 -
Linux服务器架设实战(Linux典藏大系)
¥84.5¥119.0