文轩九月图书旗舰店店铺主页二维码
文轩九月图书旗舰店
特价好书,就在文轩网!
微信扫描二维码,访问我们的微信店铺

软件架构决策之道:软件架构决策的原则和方法

89.00
运费: 免运费
库存: 10 件
软件架构决策之道:软件架构决策的原则和方法 商品图0
软件架构决策之道:软件架构决策的原则和方法 商品缩略图0

商品详情

软件架构决策之道:软件架构决策的原则和方法

作  者:(美)斯里纳特·佩雷拉(Srinath Perera) 著 著 费良宏 译 译
定  价:89
出 版 社:机械工业出版社
出版日期:2025年05月01日
页  数:189
装  帧:平装
ISBN:9787111774181

技术为骨、领导为魂、产品为心 驾驭软件架构不确定性的破局之道; 软件架构决策的完整指南 帮助领导者管理不确定性并做出正确的判断; 为所有软件架构师、技术决策者 提供一套系统的软件架构原则和方法。

目录

译者序

前言

第1章软件系统、设计和架构1

1.1软件架构简介1

1.2软件系统设计3

1.3五个问题5

1.3.1问题1:何时是很好的发布时机5

1.3.2问题2:团队的技能水平如何5

1.3.3问题3:系统的性能敏感度如何6

1.3.4问题4:何时可以重写系统7

1.3.5问题5:有哪些难点8

1.4七项原则:总体概念9

1.4.1原则1:一切从用户的旅程出发9

1.4.2原则2:使用迭代薄切片策略10

1.4.3原则3:在每次迭代中,以最小的投入获得优选的价值,以支持更多用户12

1.4.4原则4:做出决策并承担风险14

1.4.5原则5:深入设计难以改变的事物,但要慢慢地实施15

1.4.6原则6:尽早并行处理棘手的难题,消除未知因素,并从实证中学习16

1.4.7原则7:理解软件架构中内聚性和灵活性之间的权衡17

1.5为在线书店进行设计19

1.6为云计算进行设计22

1.7总结24

第2章系统性能的思维模型26

2.1计算机系统28

2.2性能模型28

2.2.1模型1:从用户模式切换到内核模式的成本29

2.2.2模型2:操作层级29

2.2.3模型3:上下文切换开销30

2.2.4模型4:阿姆达尔定律31

2.2.5模型5:通用可扩展性定律32

2.2.6模型6:延迟和利用率的权衡33

2.2.7模型7:以优选有效利用率模型设计吞吐量33

2.2.8模型8:添加延迟34

2.3优化技术37

2.3.1CPU优化技术38

2.3.2I/O优化技术39

2.3.3内存优化技术41

2.3.4延迟优化技术42

2.4对性能的直观感受43

2.5领导力的考量43

2.6总结44

第3章用户体验46

3.1架构师所需的用户体验概念46

3.1.1原则1:了解用户47

3.1.2原则2:必要功能48

3.1.3原则3:好产品不需要说明书,其用途不言自明48

3.1.4原则4:从信息交换的角度思考49

3.1.5原则5:保持简单49

3.1.6原则6:在实施前设计用户体验50

3.2配置的用户体验设计50

3.3API的用户体验设计52

3.4扩展性的用户体验设计54

3.5领导力的考量55

3.6总结56

第4章宏观架构:简介57

4.1宏观架构的历史58

4.2现代架构61

4.3宏观架构下的构建模块62

4.4领导力的考量65

4.5总结67

第5章宏观架构:协调68

5.1方法1:从客户端驱动流程68

5.2方法2:使用另一个服务69

5.3方法3:使用集中式中间件70

5.4方法4:实施编排71

5.5领导力的考量72

5.6总结72

第6章宏观架构:保持状态的一致性74

6.1使用事务74

6.2超越事务75

6.2.1方法1:重新定义问题以减少保证要求77

6.2.2方法2:使用补偿78

6.3很好实践80

6.4领导力的考量81

6.5总结83

第7章宏观架构:安全问题85

7.1用户管理86

7.2交互安全89

7.2.1认证技术90

7.2.2授权技术92

7.2.3应用程序的常见安全交互场景94

7.3存储、GDPR和其他法规98

7.4安全策略和建议100

7.4.1性能和延迟101

7.4.2零信任方法102

7.4.3运行用户提供的代码时要小心103

7.4.4区块链103

7.4.5其他话题103

7.5领导力的考量104

7.6总结106

第8章宏观架构:处理高可用性和扩展107

8.1加入高可用性107

8.1.1复制107

8.1.2快速恢复110

8.2理解可扩展性112

8.3现代架构的扩展:基本解决方案113

8.4扩展:领域中的工具114

8.4.1扩展策略1:无共享116

8.4.2扩展策略2:分布116

8.4.3扩展策略3:缓存116

8.4.4扩展策略4:异步处理116

8.5构建可扩展的系统117

8.5.1方法1:连续消除瓶颈117

8.5.2方法2:无共享设计119

8.6领导力的考量121

8.7总结122

第9章宏观架构:微服务的注意事项123

9.1决策1:处理共享数据库124

9.1.1解决方案1:使用一个微服务更新数据库125

9.1.2解决方案2:使用两个微服务更新数据库126

9.2决策2:确保微服务的安全126

9.3决策3:微服务的协调126

9.4决策4:避免依赖地狱127

9.4.1向后兼容127

9.4.2向前兼容127

9.4.3依赖关系图129

9.5微服务的替代方案:松耦合的基于代码库的团队129

9.6领导力的考量131

9.7总结132

第10章服务架构133

10.1编写服务133

10.2理解编写服务的很好实践134

10.3微服务中的高级技术136

10.3.1使用替代的I/O和线程模型136

10.3.2理解协调开销142

10.3.3高效保存本地状态143

10.3.4选择传输系统145

10.3.5处理延迟146

10.3.6读写操作分离146

10.3.7在应用程序中使用锁147

10.3.8使用队列和池148

10.3.9处理服务调用149

10.4在实践中使用这些技术149

10.4.1CPU密集型应用(CPU使用远大于内存且无I/O)149

10.4.2内存密集型应用(CPU + 内存密集且无I/O)150

10.4.3平衡型应用(CPU + 内存 +I/O)150

10.4.4I/O密集型应用(I/O + 内存 > CPU)151

10.4.5其他应用分类151

10.5领导力的考量153

10.6总结154

第11章构建稳定的系统155

11.1系统失效的原因及应对方法155

11.2处理已知错误157

11.2.1处理意外负载157

11.2.2处理资源故障161

11.2.3处理依赖关系165

11.2.4处理人为变更166

11.3常见故障167

11.3.1资源泄漏167

11.3.2死锁和慢操作168

11.4处理未知错误169

11.4.1可观测性169

11.4.2错误和测试170

11.5优雅地降级172

11.6领导力的考量172

11.7总结173

第12章系统的构建和发展174

12.1亲自动手174

12.1.1打好基础174

12.1.2了解设计过程177

12.1.3做出决策并承担风险180

12.1.4追求卓越181

12.2沟通设计183

12.3系统的发展:向用户学习并改进系统184

12.4领导力的考量187

12.5总结189

内容介绍

本书阐述了在构建软件系统时不可或缺的技术与非技术原则和方法,并详尽展示了如何运用这些原则和方法有效管理项目中的不确定性,从而构建稳固的决策框架。同时,它深刻探讨了领导力与软件架构设计洞察力之间的微妙联系,细致阐述了用户体验设计、宏观架构规划及服务架构部署等关键领域的核心理念与实用技术。通过引用莱特兄弟与凯利·约翰逊等杰出技术领导者的生动案例,来帮助读者理解制订强大决策的重要性。对于软件行业的技术领导者和软件架构决策者来说,本书是一本优秀的参考书。

(美)斯里纳特·佩雷拉(Srinath Perera) 著 著 费良宏 译 译

斯里纳特·佩雷拉(SrinathPerera),拥有超过20年的软件架构和编程经验。ApacheAxis2项目的联合创始人和Apache软件基金会成员,参与设计了多个分布式系统,如Apache Axis2、Apache Airvatha、WSO2CEP(Siddhi)和WSO2 Choreo。此外,还参与了10多个项目、100多个版本的架构评审工作。斯里纳特于2009年获得美国印第安纳大学博士学位,并担任非营利组织Lanka软件基金会的研究科学家,致力于为斯里兰卡软件工程师提供创建开源软件技术的平台。同时,他还是斯里兰卡莫拉图瓦大学计算机科学与工程系的客座教授。目前,斯里纳特负责带领......

文轩九月图书旗舰店店铺主页二维码
文轩九月图书旗舰店
特价好书,就在文轩网!
扫描二维码,访问我们的微信店铺

软件架构决策之道:软件架构决策的原则和方法

手机启动微信
扫一扫购买

收藏到微信 or 发给朋友

1. 打开微信,扫一扫左侧二维码

2. 点击右上角图标

点击右上角分享图标

3. 发送给朋友、分享到朋友圈、收藏

发送给朋友、分享到朋友圈、收藏

微信支付

支付宝

扫一扫购买

收藏到微信 or 发给朋友

1. 打开微信,扫一扫左侧二维码

2. 点击右上角图标

点击右上角分享图标

3. 发送给朋友、分享到朋友圈、收藏

发送给朋友、分享到朋友圈、收藏