暂无商品咨询信息 [发表商品咨询]
技术为骨、领导为魂、产品为心
驾驭软件架构不确定性的破局之道;
软件架构决策的完整指南
帮助领导者管理不确定性并做出正确的判断;
为所有软件架构师、技术决策者
提供一套系统的软件架构原则和方法。
本书阐述了在构建软件系统时不可或缺的技术与非技术原则和方法,并详尽展示了如何运用这些原则和方法有效管理项目中的不确定性,从而构建稳固的决策框架。同时,它深刻探讨了领导力与软件架构设计洞察力之间的微妙联系,细致阐述了用户体验设计、宏观架构规划及服务架构部署等关键领域的核心理念与实用技术。通过引用莱特兄弟与凯利·约翰逊等杰出技术领导者的生动案例,来帮助读者理解制订强大决策的重要性。对于软件行业的技术领导者和软件架构决策者来说,本书是一本优秀的参考书。
译者序<br />序<br />前言<br />第1章 软件系统、设计和架构 1<br />1.1 软件架构简介 1<br />1.2 软件系统设计 3<br />1.3 五个问题 5<br />1.3.1 问题1:何时是最佳的发布时机 5<br />1.3.2 问题2:团队的技能水平如何 5<br />1.3.3 问题3:系统的性能敏感度如何 6<br />1.3.4 问题4:何时可以重写系统 7<br />1.3.5 问题5:有哪些难点 8<br />1.4 七项原则:总体概念 9<br />1.4.1 原则1:一切从用户的旅程出发 9<br />1.4.2 原则2:使用迭代薄切片策略 10<br />1.4.3 原则3:在每次迭代中,以最小的投入获得最大的价值,以支持更多用户 12<br />1.4.4 原则4:做出决策并承担风险 14<br />1.4.5 原则5:深入设计难以改变的事物,但要慢慢地实施 15<br />1.4.6 原则6:尽早并行处理棘手的难题,消除未知因素,并从实证中学习 16<br />1.4.7 原则7:理解软件架构中内聚性和灵活性之间的权衡 17<br />1.5 为在线书店进行设计 19<br />1.6 为云计算进行设计 22<br />1.7 总结 24<br />第2章 系统性能的思维模型 26<br />2.1 计算机系统 28<br />2.2 性能模型 28<br />2.2.1 模型1:从用户模式切换到内核模式的成本 29<br />2.2.2 模型2:操作层级 29<br />2.2.3 模型3:上下文切换开销 30<br />2.2.4 模型4:阿姆达尔定律 31<br />2.2.5 模型5:通用可扩展性定律 32<br />2.2.6 模型6:延迟和利用率的权衡 33<br />2.2.7 模型7:以最大有效利用率模型设计吞吐量 33<br />2.2.8 模型8:添加延迟限制 34<br />2.3 优化技术 37<br />2.3.1 CPU优化技术 38<br />2.3.2 I/O优化技术 39<br />2.3.3 内存优化技术 41<br />2.3.4 延迟优化技术 42<br />2.4 对性能的直观感受 43<br />2.5 领导力的考量 43<br />2.6 总结 44<br />第3章 用户体验 46<br />3.1 架构师所需的用户体验概念 46<br />3.1.1 原则1:了解用户 47<br />3.1.2 原则2:必要功能 48<br />3.1.3 原则3:好产品不需要说明书,其用途不言自明 48<br />3.1.4 原则4:从信息交换的角度思考 49<br />3.1.5 原则5:保持简单 49<br />3.1.6 原则6:在实施前设计用户体验 50<br />3.2 配置的用户体验设计 50<br />3.3 API的用户体验设计 52<br />3.4 扩展性的用户体验设计 54<br />3.5 领导力的考量 55<br />3.6 总结 56<br />第4章 宏观架构:简介 57<br />4.1 宏观架构的历史 58<br />4.2 现代架构 61<br />4.3 宏观架构下的构建模块 62<br />4.4 领导力的考量 65<br />4.5 总结 67<br />第5章 宏观架构:协调 68<br />5.1 方法1:从客户端驱动流程 68<br />5.2 方法2:使用另一个服务 69<br />5.3 方法3:使用集中式中间件 70<br />5.4 方法4:实施编排 71<br />5.5 领导力的考量 72<br />5.6 总结 72<br />第6章 宏观架构:保持状态的一致性 74<br />6.1 使用事务 74<br />6.2 超越事务 75<br />6.2.1 方法1:重新定义问题以减少保证要求 77<br />6.2.2 方法2:使用补偿 78<br />6.3 最佳实践 80<br />6.4 领导力的考量 81<br />6.5 总结 83<br />第7章 宏观架构:安全问题 85<br />7.1 用户管理 86<br />7.2 交互安全 89<br />7.2.1 认证技术 90<br />7.2.2 授权技术 92<br />7.2.3 应用程序的常见安全交互场景 94<br />7.3 存储、GDPR和其他法规 98<br />7.4 安全策略和建议 100<br />7.4.1 性能和延迟 101<br />7.4.2 零信任方法 102<br />7.4.3 运行用户提供的代码时要小心 103<br />7.4.4 区块链 103<br />7.4.5 其他话题 103<br />7.5 领导力的考量 104<br />7.6 总结 106<br />第8章 宏观架构:处理高可用性和扩展 107<br />8.1 加入高可用性 107<br />8.1.1 复制 107<br />8.1.2 快速恢复 110<br />8.2 理解可扩展性 112<br />8.3 现代架构的扩展:基本解决方案 113<br />8.4 扩展:领域中的工具 114<br />8.4.1 扩展策略1:无共享 116<br />8.4.2 扩展策略2:分布 116<br />8.4.3 扩展策略3:缓存 116<br />8.4.4 扩展策略4:异步处理 116<br />8.5 构建可扩展的系统 117<br />8.5.1 方法1:连续消除瓶颈 117<br />8.5.2 方法2:无共享设计 119<br />8.6 领导力的考量 121<br />8.7 总结 122<br />第9章 宏观架构:微服务的注意事项 123<br />9.1 决策1:处理共享数据库 124<br />9.1.1 解决方案1:使用一个微服务更新数据库 125<br />9.1.2 解决方案2:使用两个微服务更新数据库 126<br />9.2 决策2:确保微服务的安全 126<br />9.3 决策3:微服务的协调 126<br />9.4 决策4:避免依赖地狱 127<br />9.4.1 向后兼容 127<br />9.4.2 向前兼容 127<br />9.4.3 依赖关系图 129<br />9.5 微服务的替代方案:松耦合的基于代码库的团队 129<br />9.6 领导力的考量 131<br />9.7 总结 132<br />第10章 服务架构 133<br />10.1 编写服务 133<br />10.2 理解编写服务的最佳实践 134<br />10.3 微服务中的高级技术 136<br />10.3.1 使用替代的I/O和线程模型 136<br />10.3.2 理解协调开销 142<br />10.3.3 高效保存本地状态 143<br />10.3.4 选择传输系统 145<br />10.3.5 处理延迟 146<br />10.3.6 读写操作分离 146<br />10.3.7 在应用程序中使用锁 147<br />10.3.8 使用队列和池 148<br />10.3.9 处理服务调用 149<br />10.4 在实践中使用这些技术 149<br />10.4.1 CPU密集型应用(CPU使用远大于内存且无I/O) 149<br />10.4.2 内存密集型应用(CPU + 内存密集且无I/O) 150<br />10.4.3 平衡型应用(CPU + 内存 +I/O) 150<br />10.4.4 I/O密集型应用(I/O + 内存 > CPU) 151<br />10.4.5 其他应用分类 151<br />10.5 领导力的考量 153<br />10.6 总结 154<br />第11章 构建稳定的系统 155<br />11.1 系统失效的原因及应对方法 155<br />11.2 处理已知错误 157<br />11.2.1 处理意外负载 157<br />11.2.2 处理资源故障 161<br />11.2.3 处理依赖关系 165<br />11.2.4 处理人为变更 166<br />11.3 常见故障 167<br />11.3.1 资源泄漏 167<br />11.3.2 死锁和慢操作 168<br />11.4 处理未知错误 169<br />11.4.1 可观测性 169<br />11.4.2 错误和测试 170<br />11.5 优雅地降级 172<br />11.6 领导力的考量 172<br />11.7 总结 173<br />第12章 系统的构建和发展 174<br />12.1 亲自动手 174<br />12.1.1 打好基础 174<br />12.1.2 了解设计过程 177<br />12.1.3 做出决策并承担风险 180<br />12.1.4 追求卓越 181<br />12.2 沟通设计 183<br />12.3 系统的发展:向用户学习并改进系统 184<br />12.4 领导力的考量 187<br />12.5 总结 189
基本信息 | |
---|---|
出版社 | 机械工业出版社 |
ISBN | 9787111774181 |
条码 | 9787111774181 |
编者 | [美]斯里纳特·佩雷拉(Srinath Perera) 著 |
译者 | 费良宏 |
出版年月 | 2025-05-01 00:00:00.0 |
开本 | 16开 |
装帧 | 平装 |
页数 | 190 |
字数 | 199 |
版次 | 1 |
印次 | 1 |
纸张 | 一般胶版纸 |
暂无商品评论信息 [发表商品评论]
暂无商品咨询信息 [发表商品咨询]