演进式架构(原书第2版)
Neal Ford, Rebecca Parsons, Patrick Kua, Pramod Sadalage
梁越, 夏思雨 译
出版时间:2024年09月
页数:205
“随着我们对软件功能的期望以越来越快的速度变化,我们必须想方设法演进架构以适应这一事实。本书将帮助你把系统架构视为可塑的助推器,而不是固定的障碍。”
——Sam Newman
架构师,Building Microservices的作者
“本书提供了最新的技术、知识和技巧,确保你的软件架构足够灵活,能够跟上不断变化的步伐。”
——Mark Richards
developertoarchitect.com创始人


  1. 原书第1版序
  2. 前言
  3. 第一部分 机制
  4. 第1章 演进软件架构
  5. 1.1 软件演进的挑战
  6. 1.2 演进式架构
  7. 1.2.1 引导式变更
  8. 1.2.2 增量变更
  9. 1.2.3 多种架构维度
  10. 1.3 长期规划如何应对层出不穷的变化
  11. 1.4 架构构建完成后,如何防止其随时间推移而退化
  12. 1.5 为何演进
  13. 1.6 小结
  14. 第2章 适应度函数
  15. 2.1 什么是适应度函数
  16. 2.2 适应度函数分类
  17. 2.2.1 按范围分类:原子与整体
  18. 2.2.2 按节奏分类:触发式、持续式和时间式
  19. 2.2.3 案例研究:触发式还是持续式
  20. 2.2.4 按结果分类:静态与动态
  21. 2.2.5 按调用方式分类:自动与手动
  22. 2.2.6 按响应方式分类:预设式与应急式
  23. 2.2.7 按覆盖范围分类:领域特定适应度函数
  24. 2.3 谁来写适应度函数
  25. 2.4 哪里有适应度函数测试框架
  26. 2.5 结果与实现
  27. 2.6 小结
  28. 第3章 实现增量变更
  29. 3.1 增量变更
  30. 3.1.1 部署流水线
  31. 3.1.2 案例研究:为PenultimateWidgets的发票服务增加适应度函数
  32. 3.1.3 案例研究:使用自动化构建验证API的一致性
  33. 3.2 小结
  34. 第4章 自动化架构治理
  35. 4.1 架构治理之适应度函数
  36. 4.2 基于代码的适应度函数
  37. 4.2.1 传入/传出耦合
  38. 4.2.2 抽象性、不稳定性和与主序列的距离
  39. 4.2.3 导入的方向性
  40. 4.2.4 圈复杂度和“引导式”治理
  41. 4.3 即插即用的工具
  42. 4.3.1 开源库的合法性
  43. 4.3.2 可访问性和支持的其他架构属性
  44. 4.3.3 ArchUnit
  45. 4.3.4 代码治理的lint工具
  46. 4.3.5 案例研究:可用性适应度函数
  47. 4.3.6 案例研究:配合金丝雀发布的负载测试
  48. 4.3.7 案例研究:移植什么
  49. 4.3.8 已经在使用的适应度函数
  50. 4.4 集成架构
  51. 4.4.1 微服务架构中的通信治理
  52. 4.4.2 案例研究:如何实现适应度函数
  53. 4.5 DevOps
  54. 4.6 企业架构
  55. 4.6.1 案例研究:每天部署60次的架构重构
  56. 4.6.2 保真度适应度函数
  57. 4.7 适应度函数作为清单,而非棍棒
  58. 4.8 记录适应度函数
  59. 4.9 小结
  60. 第二部分 结构
  61. 第5章 演进式架构拓扑
  62. 5.1 可演进的架构结构
  63. 5.1.1 共生性
  64. 5.1.2 共生性与限界上下文的交集
  65. 5.2 架构量子和粒度
  66. 5.2.1 独立部署
  67. 5.2.2 高功能内聚性
  68. 5.2.3 高静态耦合
  69. 5.2.4 动态量子耦合
  70. 5.3 契约
  71. 案例研究:微服务作为演进式架构
  72. 5.4 复用模式
  73. 5.4.1 有效的复用=抽象+低变动性
  74. 5.4.2 Sidecar和服务网格:正交操作的耦合
  75. 5.4.3 数据网格:正交数据耦合
  76. 5.5 小结
  77. 第6章 演进式数据
  78. 6.1 演进式数据库设计
  79. 6.1.1 演进模式
  80. 6.1.2 共享数据库集成
  81. 6.2 不适当的数据纠缠
  82. 6.2.1 两段式提交事务
  83. 6.2.2 数据的历史和质量
  84. 6.2.3 案例研究:演进PenultimateWidgets的路由
  85. 6.3 从原生到适应度函数
  86. 6.3.1 引用完整性
  87. 6.3.2 数据冗余
  88. 6.3.3 替换触发器和存储过程
  89. 6.3.4 案例研究:从关系型到非关系型的演进
  90. 6.4 小结
  91. 第三部分 影响
  92. 第7章 构建可演进的架构
  93. 7.1 演进式架构的原则
  94. 7.1.1 最后责任时刻
  95. 7.1.2 针对可演进性进行架构设计和开发
  96. 7.1.3 波斯特尔定律
  97. 7.1.4 针对可测试性进行架构设计
  98. 7.1.5 康威定律
  99. 7.2 机制
  100. 7.2.1 步骤1:识别受演进影响的维度
  101. 7.2.2 步骤2:为每个维度定义适应度函数
  102. 7.2.3 步骤3:使用部署流水线自动化适应度函数
  103. 7.3 绿地项目
  104. 7.4 改造现有架构
  105. 7.4.1 适当的耦合和内聚
  106. 7.4.2 商业软件的影响
  107. 7.5 迁移架构
  108. 7.5.1 迁移步骤
  109. 7.5.2 演进模块之间的交互
  110. 7.6 构建演进式架构的指南
  111. 7.6.1 消除不必要的变化
  112. 7.6.2 做出可逆的决策
  113. 7.6.3 倾向可演进而非可预测
  114. 7.6.4 构建防腐层
  115. 7.6.5 构建可牺牲的架构
  116. 7.6.6 缓解外部变化
  117. 7.6.7 更新库而不是框架
  118. 7.6.8 版本服务内部化
  119. 7.6.9 案例研究:演进PenultimateWidgets的评分
  120. 7.7 适应度函数驱动的架构
  121. 7.8 小结
  122. 第8章 演进式架构的陷阱和反模式
  123. 8.1 技术架构
  124. 8.1.1 反模式:最后10%陷阱和低代码/无代码
  125. 8.1.2 案例研究:PenultimateWidgets里的复用
  126. 8.1.3 反模式:供应商为王
  127. 8.1.4 陷阱:充满漏洞的抽象
  128. 8.1.5 陷阱:简历驱动开发
  129. 8.2 增量变更
  130. 8.2.1 反模式:不恰当的治理
  131. 8.2.2 案例研究:PenultimateWidgets中恰到好处的治理
  132. 8.2.3 陷阱:发布速度过慢
  133. 8.3 业务因素
  134. 8.3.1 陷阱:产品定制
  135. 8.3.2 反模式:记录系统之上的报表系统
  136. 8.3.3 陷阱:过于长远的规划
  137. 8.4 小结
  138. 第9章 实践演进式架构
  139. 9.1 组织因素
  140. 9.1.1 不要抗拒康威定律
  141. 9.1.2 文化
  142. 9.1.3 试验文化
  143. 9.1.4 首席财务官和预算
  144. 9.2 业务场景
  145. 9.2.1 假设驱动开发和数据驱动开发
  146. 9.2.2 适应度函数作为试验媒介
  147. 9.3 构建企业级适应度函数
  148. 9.3.1 案例研究:零日安全漏洞
  149. 9.3.2 在现有集成架构中拆分限界上下文
  150. 9.4 从哪里开始
  151. 9.4.1 触手可及的成果
  152. 9.4.2 最高价值优先
  153. 9.4.3 测试
  154. 9.4.4 基础设施
  155. 9.4.5 案例研究:PenultimateWidgets的企业级架构
  156. 9.5 未来状态
  157. 9.5.1 使用AI的适应度函数
  158. 9.5.2 生成式测试
  159. 9.6 构建演进式架构的场合
  160. 9.6.1 什么情况下公司应该构建演进式架构
  161. 9.6.2 什么情况下公司不需要构建演进式架构
  162. 9.7 小结
书名:演进式架构(原书第2版)
译者:梁越, 夏思雨 译
国内出版社:机械工业出版社
出版时间:2024年09月
页数:205
书号:978-7-111-76211-9
原版书书名:Building Evolutionary Architectures, Second Edition
原版书出版商:O'Reilly Media
Neal Ford
 
Neal Ford是Thoughtworks公司的总监、软件架构师和meme wrangler。
 
 
Rebecca Parsons
 
丽贝卡·帕森斯(Rebecca Parsons)是ThoughtWorks CTO,在大规模分布式 对象应用开发和系统集成方面拥有丰富经验。
 
 
Patrick Kua
 
帕特里克·柯(Patrick Kua)是数字银行N26首席科学家,曾任ThoughtWorks 主任咨询师和技术主管,在敏捷和精益开发方面拥有丰富经验。
 
 
Pramod Sadalage
 
Pramod Sadalage是Thoughtworks的数据及DevOps总监,他擅长应用程序开发、敏捷数据库开发、演进式数据库设计、算法设计和数据库管理。
 
 
购买选项
定价:79.00元
书号:978-7-111-76211-9
出版社:机械工业出版社