随着新工具、框架、技术和范式不断涌现,软件发生态系统也在不断变化。仅在过去五年中,软件发核心工程实践的不断步就促使业界认识到架构本身必须如何发展才能满足不断变化的用户需求。本书通过现实世界的案例研究阐明了软件发和架构设计日益增长的演需求,提供了关于适应度函数、自动化架构治理等方面的新技术、知识和技巧,详尽阐述了演式架构的工程实践和使之更容易的结构方法。
售 价:¥
纸质售价:¥55.30购买纸书
温馨提示:数字商品不支持退换货,不提供源文件,不支持导出打印
为你推荐
书名页
O' Reilly Media, Inc.介绍
原书第1版序
前言
第一部分 机制
第1章 演进软件架构
1.1 软件演进的挑战
1.2 演进式架构
1.2.1 引导式变更
1.2.2 增量变更
1.2.3 多种架构维度
1.3 长期规划如何应对层出不穷的变化
1.4 架构构建完成后,如何防止其随时间推移而退化
1.5 为何演进
1.6 小结
第2章 适应度函数
2.1 什么是适应度函数
2.2 适应度函数分类
2.2.1 按范围分类:原子与整体
2.2.2 按节奏分类:触发式、持续式和时间式
2.2.3 案例研究:触发式还是持续式
2.2.4 按结果分类:静态与动态
2.2.5 按调用方式分类:自动与手动
2.2.6 按响应方式分类:预设式与应急式
2.2.7 按覆盖范围分类:领域特定适应度函数
2.3 谁来写适应度函数
2.4 哪里有适应度函数测试框架
2.5 结果与实现
2.6 小结
第3章 实现增量变更
3.1 增量变更
3.1.1 部署流水线
3.1.2 案例研究:为PenultimateWidgets的发票服务增加适应度函数
3.1.3 案例研究:使用自动化构建验证API的一致性
3.2 小结
第4章 自动化架构治理
4.1 架构治理之适应度函数
4.2 基于代码的适应度函数
4.2.1 传入/传出耦合
4.2.2 抽象性、不稳定性和与主序列的距离
4.2.3 导入的方向性
4.2.4 圈复杂度和“引导式”治理
4.3 即插即用的工具
4.3.1 开源库的合法性
4.3.2 可访问性和支持的其他架构属性
4.3.3 ArchUnit
4.3.4 代码治理的lint工具
4.3.5 案例研究:可用性适应度函数
4.3.6 案例研究:配合金丝雀发布的负载测试
4.3.7 案例研究:移植什么
4.3.8 已经在使用的适应度函数
4.4 集成架构
4.4.1 微服务架构中的通信治理
4.4.2 案例研究:如何实现适应度函数
4.5 DevOps
4.6 企业架构
4.6.1 案例研究:每天部署60次的架构重构
4.6.2 保真度适应度函数
4.7 适应度函数作为清单,而非棍棒
4.8 记录适应度函数
4.9 小结
第二部分 结构
第5章 演进式架构拓扑
5.1 可演进的架构结构
5.1.1 共生性
5.1.2 共生性与限界上下文的交集
5.2 架构量子和粒度
5.2.1 独立部署
5.2.2 高功能内聚性
5.2.3 高静态耦合
5.2.4 动态量子耦合
5.3 契约
案例研究:微服务作为演进式架构
5.4 复用模式
5.4.1 有效的复用=抽象+低变动性
5.4.2 Sidecar和服务网格:正交操作的耦合
5.4.3 数据网格:正交数据耦合
5.5 小结
第6章 演进式数据
6.1 演进式数据库设计
6.1.1 演进模式
6.1.2 共享数据库集成
6.2 不适当的数据纠缠
6.2.1 两段式提交事务
6.2.2 数据的历史和质量
6.2.3 案例研究:演进PenultimateWidgets的路由
6.3 从原生到适应度函数
6.3.1 引用完整性
6.3.2 数据冗余
6.3.3 替换触发器和存储过程
6.3.4 案例研究:从关系型到非关系型的演进
6.4 小结
第三部分 影响
第7章 构建可演进的架构
7.1 演进式架构的原则
7.1.1 最后责任时刻
7.1.2 针对可演进性进行架构设计和开发
7.1.3 波斯特尔定律
7.1.4 针对可测试性进行架构设计
7.1.5 康威定律
7.2 机制
7.2.1 步骤1:识别受演进影响的维度
7.2.2 步骤2:为每个维度定义适应度函数
7.2.3 步骤3:使用部署流水线自动化适应度函数
7.3 绿地项目
7.4 改造现有架构
7.4.1 适当的耦合和内聚
7.4.2 商业软件的影响
7.5 迁移架构
7.5.1 迁移步骤
7.5.2 演进模块之间的交互
7.6 构建演进式架构的指南
7.6.1 消除不必要的变化
7.6.2 做出可逆的决策
7.6.3 倾向可演进而非可预测
7.6.4 构建防腐层
7.6.5 构建可牺牲的架构
7.6.6 缓解外部变化
7.6.7 更新库而不是框架
7.6.8 版本服务内部化
7.6.9 案例研究:演进PenultimateWidgets的评分
7.7 适应度函数驱动的架构
7.8 小结
第8章 演进式架构的陷阱和反模式
8.1 技术架构
8.1.1 反模式:最后10%陷阱和低代码/无代码
8.1.2 案例研究:PenultimateWidgets里的复用
8.1.3 反模式:供应商为王
8.1.4 陷阱:充满漏洞的抽象
8.1.5 陷阱:简历驱动开发
8.2 增量变更
8.2.1 反模式:不恰当的治理
8.2.2 案例研究:PenultimateWidgets中恰到好处的治理
8.2.3 陷阱:发布速度过慢
8.3 业务因素
8.3.1 陷阱:产品定制
8.3.2 反模式:记录系统之上的报表系统
8.3.3 陷阱:过于长远的规划
8.4 小结
第9章 实践演进式架构
9.1 组织因素
9.1.1 不要抗拒康威定律
9.1.2 文化
9.1.3 试验文化
9.1.4 首席财务官和预算
9.2 业务场景
9.2.1 假设驱动开发和数据驱动开发
9.2.2 适应度函数作为试验媒介
9.3 构建企业级适应度函数
9.3.1 案例研究:零日安全漏洞
9.3.2 在现有集成架构中拆分限界上下文
9.4 从哪里开始
9.4.1 触手可及的成果
9.4.2 最高价值优先
9.4.3 测试
9.4.4 基础设施
9.4.5 案例研究:PenultimateWidgets的企业级架构
9.5 未来状态
9.5.1 使用AI的适应度函数
9.5.2 生成式测试
9.6 构建演进式架构的场合
9.6.1 什么情况下公司应该构建演进式架构
9.6.2 什么情况下公司不需要构建演进式架构
9.7 小结
关于作者
关于封面
推荐阅读
买过这本书的人还买过
读了这本书的人还在读
同类图书排行榜