内容简介
包邮 软件架构设计 实用方法及实践+架构即未来+架构真经 3本
区域包邮 软件架构师开发设计教程书籍
YL8458 9787111573814 9787111563884 9787111532644
软件架构设计:实用方法及实践
- 作者:
- 译者:
- 丛书名:
- 出版社:
- ISBN:9787111573814
- 上架时间:2017-7-18
- 出版日期:2017 年7月
- 开本:16开
- 版次:1-1
- 所属分类:
架构即未来:现代企业可扩展的Web架构、流程和组织(原书第2版)
内容简介
任何一个持续成长的公司终都需要解决系统、组织和流程的扩展性问题。本书汇聚了作者从eBay、VISA、Salesforce.com到Apple超过30年的丰富经验, 全面阐释了经过验证的信息技术扩展方法,对所需要掌握的产品和服务的平滑扩展做了详尽的论述,并在第1版的基础上更新了扩展的策略、技术和案例。
针对技术和非技术的决策者,马丁阿伯特和迈克尔费舍尔详尽地介绍了影响扩展性的各个方面,包括架构、过程、组织和技术。通过阅读本书,你可以学习到以*化敏捷性和扩展性来优化组织机构的新策略,以及对云计算(IaaS/PaaS)、NoSQL、DevOps和业务指标等的新见解。而且利用其中的工具和建议,你可以系统化地清除扩展性道路上的障碍,在技术和业务上取得前所未有的成功。
第二版的更新
用现实世界中成功和失败的真实故事,取代版中的AllScale虚拟案例
新增了关键话题:敏捷组织的新型结构,把数据中心转移到云端的决策根据,业务指标对系统整体健康的重要性,云计算技术,以及关于NoSQL解决方案的讨论等。
目 录
前言
作者简介
部分 可扩展性组织的人员配置
第1章 人员和领导力对扩展性的影响 …… 2
1.1 案例方法 …… 3
1.2 为什么要讨论人 …… 3
1.3 为什么组织很重要 …… 5
1.4 为什么管理和领导如此重要 …… 12
1.5 结论 …… 15
第2章 可扩展性技术组织的角色 …… 17
2.1 失败的影响 …… 17
2.2 定义角色 …… 19
2.3 执行人员的责任 …… 22
2.4 独立贡献者的责任 …… 28
2.5 RASCI工具 …… 35
2.6 结论 …… 39
第3章 组织的设置 …… 41
3.1 组织对可扩展性的影响 …… 41
3.2 团队规模 …… 45
3.3 组织结构 …… 54
3.4 结论 …… 77
第4章 领导力秘籍 …… 80
4.1 什么是领导力 …… 82
4.2 领导力概念模型 …… 84
4.3 自知之明 …… 86
4.4 身先士卒 …… 89
4.5 谦虚谨慎 …… 91
4.6 以人为本,使命为先 …… 92
4.7 决策英明,以德服人 …… 93
4.8 用人不疑 …… 95
4.9 与股东价值保持一致 …… 96
4.10 变革型领导 …… 97
4.11 愿景 …… 98
4.12 使命 …… 102
4.13 目标 …… 104
4.14 总结 …… 106
4.15 成功的因果路线图 …… 111
4.16 结论 …… 113
第5章 管理秘籍 …… 116
5.1 什么是管理 …… 118
5.2 项目和任务管理 …… 120
5.3 团队建设:球队类比 …… 124
5.4 优化团队:花园类比 …… 126
5.5 度量、指标和目标评估 …… 131
5.6 目标树 …… 135
5.7 为成功铺路 …… 137
5.8 结论 …… 138
第6章 关系、思维和商业案例 …… 141
6.1 业务与技术之间的鸿沟 …… 141
6.2 击败IT思维模式 …… 145
6.3 为扩展性加大投入的业务理由 …… 147
6.4 结论 …… 152
第二部分 构建可扩展的过程
第7章 过程是可扩展的关键 …… 154
7.1 过程的目的 …… 155
7.2 正确的时间和正确的过程 …… 160
7.3 当好的过程变坏的时候 …… 164
7.4 结论 …… 166
第8章 管理故障和问题 …… 169
8.1 什么是故障 …… 170
8.2 什么是问题 …… 171
8.3 事故管理的组成部分 …… 172
8.4 问题管理的组成部分 …… 176
8.5 解决事故和问题管理之间的矛盾 …… 177
8.6 事故和问题的生命周期 …… 178
8.7 施行每日事故例会制 …… 179
8.8 施行季度事故总结制度 …… 181
8.9 事后处理 …… 182
8.10 融会贯通 …… 185
8.11 结论 …… 186
第9章 危机管理和升级 …… 189
9.1 什么是危机 …… 191
9.2 为什么要区分危机和其他的事故 …… 192
9.3 危机如何改变公司 …… 193
9.4 混乱中的秩序 …… 195
9.5 通信与控制 …… 200
9.6 作战室 …… 201
9.7 升级 …… 203
9.8 情况通报 …… 204
9.9 危机事后处理与沟通 …… 205
9.10 结论 …… 207
第10章 生产环境的变更管理 …… 210
10.1 什么是变更 …… 211
10.2 变更识别 …… 212
10.3 变更管理 …… 214
10.4 变更控制会议 …… 228
10.5 过程的持续改进 …… 229
10.6 结论 …… 230
第11章 确定应用发展的预留空间 …… 233
11.1 目的 …… 234
11.2 结构 …… 235
11.3 理想使用率 …… 240
11.4 使用电子表格的快速示例 …… 244
11.5 结论 …… 246
第12章 确立架构原则 …… 248
12.1 目标和原则 …… 248
12.2 架构选择 …… 251
12.3 AKF采用的普遍的架构原则 …… 255
12.4 结论 …… 266
第13章 联合架构设计和架构审查委员会 …… 267
13.1 修复组织的功能障碍 …… 267
13.2 跨部门的扩展性设计 …… 268
13.3 JAD的准入和退出标准 …… 271
13.4 从JAD到ARB …… 274
13.5 举行会议 …… 276
13.6 ARB的准入和退出标准 …… 278
13.7 结论 …… 281
第14章 敏捷架构设计 …… 284
14.1 敏捷组织中的架构 …… 286
14.2 架构的所有权 …… 287
14.3 有限的资源 …… 288
14.4 标准 …… 290
14.5 敏捷组织中的ARB …… 293
14.6 结论 …… 294
第15章 聚焦核心竞争力:自建与外购 …… 296
15.1 自建与外购及可扩展性 …… 296
15.2 聚焦成本 …… 297
15.3 聚焦策略 …… 298
15.4 一切自建的现象 …… 299
15.5 合并成本与策略方法 …… 300
15.6 该组件是否会形成战略性的差异化竞争优势 …… 301
15.7 我们是这个组件或资产的佳所有者吗 …… 302
15.8 这个组件的竞争力是什么 …… 303
15.9 我们能有效地构建这个组件吗 …… 303
15.10 佳的购买决策 …… 304
15.11 自建失败剖析 …… 306
15.12 结论 …… 308
第16章 确定风险 …… 310
16.1 风险管理的重要性 …… 310
16.2 测量风险 …… 313
16.3 管理风险 …… 322
16.4 结论 …… 325
第17章 性能与压力测试 …… 328
17.1 执行性能测试 …… 328
17.2 不要过度强调压力测试 …… 338
17.3 可扩展性的性能和压力测试 …… 346
17.4 结论 …… 348
第18章 障碍条件与回滚 …… 351
18.1 障碍条件 …… 352
18.2 回滚能力 …… 358
18.3 服务降级:设计禁用 …… 362
18.4 结论 …… 364
第三部分 可扩展的架构方案
第19章 构建故障隔离的架构 …… 368
19.1 故障隔离架构 …… 369
19.2 故障隔离的好处 …… 371
19.3 如何进行故障隔离 …… 380
19.4 何时实施故障隔离 …… 383
19.5 如何测试故障隔离 …… 386
19.6 结论 …… 387
第20章 AKF扩展立方体介绍 …… 389
20.1 AKF扩展立方体 …… 389
20.2 扩展立方体的X轴 …… 391
20.3 扩展立方体的Y轴 …… 393
20.4 扩展立方体的Z轴 …… 396
20.5 融会贯通 …… 397
20.6 何时以及何处使用扩展立方体 …… 400
20.7 结论 …… 401
第21章 为扩展分割应用 …… 404
21.1 AKF应用扩展立方体 …… 404
21.2 AKF应用扩展立方体的X轴 …… 406
21.3 AKF应用扩展立方体的Y轴 …… 409
21.4 AKF应用扩展立方体的Z轴 …… 412
21.5 融会贯通 …… 414
21.6 应用立方体实例 …… 418
21.7 结论 …… 423
第22章 为扩展分割数据库 …… 426
22.1 在数据库上应用AKF扩展立方体 …… 426
22.2 AKF数据库扩展立方体的X轴 …… 428
22.3 AKF数据库扩展立方体的Y轴 …… 434
22.4 AKF数据库扩展立方体的Z轴 …… 436
22.5 融会贯通 …… 439
22.6 数据库扩展立方体使用案例 …… 443
22.7 结论 …… 450
第23章 为扩展而缓存 …… 452
23.1 定义缓存 …… 453
23.2 对象缓存 …… 457
23.3 应用缓存 …… 461
23.4 内容传送网络 …… 467
23.5 结论 …… 469
第24章 为扩展而异步 …… 472
24.1 对同步的共识 …… 472
24.2 同步与异步调用 …… 474
24.3 定义状态 …… 482
24.4 结论 …… 488
第四部分 其他的问题和挑战
第25章 海量数据 …… 492
25.1 数据的成本 …… 493
25.2 数据的成本价值困局 …… 496
25.3 数据产生利润 …… 498
25.4 处理大量的数据 …… 502
25.5 结论 …… 514
第26章 云计算的突飞猛进 …… 517
26.1 历史和定义 …… 518
26.2 云的特性与架构 …… 522
26.3 云和网格之间的差异 …… 528
26.4 云计算的优势和劣势 …… 530
26.5 云适用于什么样的公司 …… 540
26.6 决策过程 …… 543
26.7 结论 …… 546
第27章 云计算准备就绪 …… 550
27.1 云端的扩展立方体 …… 550
27.2 克服挑战 …… 553
27.3 Intuit案例研究 …… 559
27.4 结论 …… 561
第28章 应用监控 …… 564
28.1 为什么我们没有及早发现问题 …… 564
28.2 监控框架 …… 566
28.3 衡量监控的价值 …… 575
28.4 监控和过程 …… 576
28.5 结论 …… 578.................
架构真经:互联网技术架构的设计原则(原书第2版)
内容简介
本书是《架构即未来》的姊妹篇。全书共分13章,用成功互联网产品公司首席技术官和企业家的故事,引出了对构建可扩展的产品至关重要的50条规则,可帮助软件研发人员、技术运维人员和管理者修复或重新架构现有产品,了解关于扩展的佳实践并有计划地实施,还可以帮助建立一套架构原则以推动未来的研发。目 录
前言致谢作者简介第1章 大道至简 1规则1——避免过度设计 4规则2——方案中包括扩展 9规则3——三次简化方案 13规则4——减少域名解析 16规则5——减少页面目标 19规则6——采用同构网络 23注释 258第13章 谋定而动 259用风险收益模型评估可扩展性项目和举措 25950条可扩展性规则简述 264可扩展性规则的利益与优先级排行榜 297总结 300
技术精粹,融汇贯通:软件架构的理论与实践深度解析 本书系精选三部关于软件架构设计的权威著作,汇聚了行业顶尖专家的智慧结晶,旨在为软件开发者、架构师以及技术管理者提供一套全面、深入且极具实践指导意义的软件架构设计理论与方法论。内容涵盖从基础概念的梳理,到前沿理念的探讨,再到落地实践的经验总结,力求帮助读者构建起坚实的技术根基,掌握应对复杂系统挑战的利器,并在瞬息万变的行业环境中,引领技术革新,塑造卓越的软件产品。 第一部分:构建坚实基石——软件架构设计的实用方法与实践 该部分专注于软件架构设计的核心原则、方法论以及丰富的实战案例,为读者构建起一套系统化的认知框架。 架构设计的目标与原则: 深入剖析软件架构设计的根本目的,强调其在提升系统可维护性、可扩展性、可读性、可靠性、性能以及安全性等方面的关键作用。我们将探讨SOLID原则、KISS原则、DRY原则等指导性原则,以及如何将这些原则贯穿于设计的各个环节。 架构风格与模式的应用: 全面介绍各种主流的架构风格,包括但不限于分层架构、客户端-服务器架构、微服务架构、事件驱动架构、SOA(面向服务架构)等。我们将深入解析每种风格的优缺点、适用场景以及关键设计考量,并结合实际案例,展示如何根据业务需求选择和组合不同的架构风格,构建出最优化的系统蓝图。同时,还会详细阐述常用的设计模式,如工厂模式、单例模式、观察者模式、策略模式等,以及它们在架构设计中的应用,如何通过模式来解决常见的设计问题,提高代码的复用性和灵活性。 架构决策的关键要素: 强调架构决策并非一蹴而就,而是需要系统性地考量多方面因素。我们将探讨如何进行需求分析、识别关键的质量属性(如性能、安全性、可伸缩性等),以及如何权衡不同约束条件下的设计选择。内容将涵盖架构评审、度量与分析方法,帮助读者学会量化和评估架构设计的优劣。 架构演进与重构: 软件系统并非一成不变,架构也需要随着业务的发展和技术进步而演进。本书将详细讲解如何识别架构的“坏味道”,掌握有效的架构重构策略和技术,以及如何在新旧架构之间进行平滑过渡。我们将探讨“步步为营”的重构方法,以及如何避免重构过程中可能引入的风险。 实践中的挑战与解决方案: 结合大量真实世界的项目经验,剖析软件架构设计过程中常见的挑战,如遗留系统的改造、团队协作的困难、技术选型的迷茫、以及跨团队沟通的障碍等。本书将提供切实可行的解决方案和最佳实践,帮助读者规避陷阱,提高项目成功率。 建模与可视化: 强调使用恰当的建模工具和技术来清晰地表达架构设计。我们将介绍UML(统一建模语言)等常用的建模语言,以及如何利用类图、序列图、组件图等来描述系统的静态和动态结构。同时,也会探讨如何通过架构图(如C4模型)等可视化手段,有效地向不同角色(开发人员、业务方、管理者)传达架构理念。 第二部分:洞察未来趋势——拥抱变化的架构即未来 该部分将视角放宽,深入探讨软件架构设计的未来发展方向,以及如何应对日新月异的技术变革,塑造面向未来的弹性系统。 云原生架构的兴起与演进: 详细解析云原生理念的核心,包括容器化(Docker)、微服务、DevOps、声明式API、服务网格(Service Mesh)等。我们将深入探讨如何在云环境中设计和构建高可用、高弹性、易于部署和管理的分布式系统。内容将涵盖Kubernetes等容器编排平台的原理与实践,以及如何利用云服务提供的能力,例如Serverless、托管数据库等,来优化架构设计。 弹性与韧性设计: 强调在复杂分布式系统中构建系统弹性(Resilience)和韧性(Robustness)的重要性。我们将探讨各种容错机制,如重试、熔断、限流、降级等,以及如何通过混沌工程等方法来主动发现和修复系统的脆弱点。 可观察性(Observability)在架构中的作用: 深入理解可观察性(Logging, Metrics, Tracing)对于理解和调试分布式系统的关键作用。我们将探讨如何设计和实现全面的可观察性系统,从而快速定位问题,优化系统性能,并为未来的改进提供数据支撑。 数据密集型架构: 随着大数据和人工智能技术的飞速发展,数据处理和分析能力成为软件架构的核心竞争力。本书将探讨面向数据密集型应用的架构模式,如数据湖、数据仓库、流处理系统(Kafka, Flink等),以及如何设计能够高效处理海量数据的系统。 安全性与合规性: 在日益严峻的网络安全环境下,安全性不再是附加项,而是架构设计中的核心考量。我们将探讨零信任(Zero Trust)架构、API安全、数据加密、身份认证与授权等方面的最佳实践,以及如何在设计之初就将合规性要求融入架构。 低代码/无代码与微前端: 探讨新兴技术和模式如何改变软件开发和架构的格局。我们将分析低代码/无代码平台对传统架构的冲击,以及微前端等模式如何提升前端开发的灵活性和可维护性。 面向未来的人机协作: 随着人工智能的不断发展,人机协作将成为未来软件架构的重要组成部分。本书将探讨如何设计能够与AI模型高效协同工作的系统,以及如何利用AI来辅助软件架构的设计和演进。 第三部分:精炼智慧精华——架构真经的悟道与升华 该部分从更宏观、更哲学的视角,提炼软件架构设计的精髓,强调“道”的层面,引导读者在实践中不断体悟和升华。 架构的本质与价值: 深入探讨软件架构的本质是什么?它不仅仅是技术选型和组件堆砌,更是对业务需求的深刻理解,对未来发展的预见,以及对团队协作的指导。我们将强调架构的商业价值,以及如何通过卓越的架构设计,为企业带来长远的竞争优势。 “道”与“术”的平衡: 强调在追求“术”(具体的技术和方法)的同时,不能忽视“道”(抽象的原则和理念)。真正的架构师,需要在不断变化的技术浪潮中,保持清醒的头脑,抓住事物的本质,做到“万变不离其宗”。 沟通与影响力: 软件架构的成功,离不开有效的沟通和强大的影响力。本书将探讨架构师如何与产品经理、开发团队、运维团队以及高层管理者进行清晰、有说服力的沟通,争取支持,推动设计落地。 持续学习与成长: 软件技术日新月异,架构师的成长之路永无止境。本书将强调持续学习的重要性,鼓励读者保持好奇心,不断探索新的技术和思想,并在实践中不断反思和总结,形成自己的独特见解。 “少即是多”的智慧: 在复杂性日益增加的软件系统中,大道至简的智慧显得尤为宝贵。我们将探讨如何通过精简设计,去除不必要的复杂性,从而提升系统的可理解性、可维护性和鲁棒性。 “慢”是“快”的开始: 鼓励读者在架构设计之初投入足够的时间和精力进行思考和规划,避免“拍脑袋”式的决策。短期内的“慢”,将为长期的“快”奠定坚实的基础。 超越代码的思考: 强调架构师的思考维度需要超越纯粹的代码实现,要能够站在业务、组织、流程等多个层面去审视和设计。 总结: 这三本书的组合,为我们提供了一个从实践到未来,再到精神层面的全方位学习软件架构的框架。它不仅教会我们“怎么做”(方法与实践),更指引我们“为什么这么做”(理念与原则),并最终帮助我们“如何做得更好,走得更远”(洞察未来与升华自我)。无论您是刚刚踏入软件开发领域的新人,还是经验丰富的资深架构师,都将从中获益匪浅。本书系将成为您在软件架构设计道路上不可或缺的宝贵伙伴,助您驾驭复杂系统,引领技术浪潮,构建出真正卓越的软件产品。
这一套书给我的感觉是,它成功地将“理论的深度”和“实践的操作性”完美地融合在了一起。很多架构书籍要么是概念的堆砌,要么是具体工具的使用指南。而这三本书共同构建了一个完整的知识体系:从理解架构的本质(真经),到规划架构的演进路径(未来),再到落地执行的具体方法论(实用方法)。我特别喜欢它在描述各种设计原则时,总是会立刻跟进一个清晰的、甚至是反面的案例分析。比如,它会详细解释为什么过度设计是灾难性的,以及如何在不确定性极高的环境下,选择一个“足够好”而不是“完美”的初始架构。这种辩证的思维方式,帮助我摆脱了过去那种非黑即白的思维定势。对于想要从高级工程师晋升到架构师职位的同仁来说,这绝对是绕不过去的必读清单。