搜索
高级检索
高级搜索
书       名 :
著       者 :
出  版  社 :
I  S  B  N:
文献来源:
出版时间 :
软件架构决策之道(软件架构决策的原则和方法)/架构师书库
0.00     定价 ¥ 89.00
图书来源: 浙江图书馆(由浙江新华配书)
此书还可采购14本,持证读者免费借回家
  • 配送范围:
    浙江省内
  • ISBN:
    9787111774181
  • 作      者:
    作者:(美)斯里纳特·佩雷拉|责编:张莹|译者:费良宏
  • 出 版 社 :
    机械工业出版社
  • 出版日期:
    2025.05
收藏
编辑推荐
技术为骨、领导为魂、产品为心 驾驭软件架构不确定性的破局之道; 软件架构决策的完整指南 帮助领导者管理不确定性并做出正确的判断; 为所有软件架构师、技术决策者 提供一套系统的软件架构原则和方法。
展开
作者简介
斯里纳特·佩雷拉(Srinath Perera)拥有超过20年的软件架构和编程经验。Apache Axis2项目的联合创始人和Apache软件基金会成员,参与设计了多个分布式系统,如Apache Axis2、Apache Airvatha、WSO2 CEP(Siddhi)和WSO2 Choreo。此外,还参与了10多个项目、100多个版本的架构评审工作。
斯里纳特于2009年获得美国印第安纳大学博士学位,并担任非营利组织Lanka软件基金会的研究科学家,致力于为斯里兰卡软件工程师提供创建开源软件技术的平台。同时,他还是斯里兰卡莫拉图瓦大学计算机科学与工程系的客座教授。目前,斯里纳特负责带领研究团队,制定和实施产品与业务战略,推动公司在开源软件和系统架构领域的持续创新与发展。
展开
内容介绍
本书阐述了在构建软件系统时不可或缺的技术与非技术原则和方法,并详尽展示了如何运用这些原则和方法有效管理项目中的不确定性,从而构建稳固的决策框架。同时,它深刻探讨了领导力与软件架构设计洞察力之间的微妙联系,细致阐述了用户体验设计、宏观架构规划及服务架构部署等关键领域的核心理念与实用技术。通过引用莱特兄弟与凯利·约翰逊等杰出技术领导者的生动案例,来帮助读者理解制订强大决策的重要性。对于软件行业的技术领导者和软件架构决策者来说,本书是一本优秀的参考书。
展开
目录
译者序

前言
第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.1 CPU优化技术  38
2.3.2 I/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.3 API的用户体验设计  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.1 CPU密集型应用(CPU使用远大于内存且无I/O)  149
10.4.2 内存密集型应用(CPU + 内存密集且无I/O)  150
10.4.3 平衡型应用(CPU + 内存 +I/O)  150
10.4.4 I/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
展开
加入书架成功!
收藏图书成功!
我知道了(3)
发表书评
读者登录

请选择您读者所在的图书馆

选择图书馆
浙江图书馆
点击获取验证码
登录
没有读者证?在线办证