本书特色
随着新工具、框架、技术和范式不断涌现,软件开发生态系统也在不断变化。仅在过去五年中,软件开发核心工程实践的不断进步就促使业界认识到架构本身必须如何发展才能满足不断变化的用户需求。本书通过现实世界的案例研究阐明了软件开发和架构设计日益增长的演进需求,提供了关于适应度函数、自动化架构治理等方面的新技术、知识和技巧,详尽阐述了演进式架构的工程实践和使之更容易的结构方法。
内容简介
本书提供了关于适应度函数、自动化架构治理和演进式数据的技术、知识和技巧。本书分为三个部分:第一部分包括定义演进式架构机制的章节——介绍团队如何使用技术和工具来构建适应度函数、部署管道以及其他管理和演进软件项目的机制;第二部分包括围绕耦合、复用和其他相关结构考虑因素的架构风格和设计原则,以帮助读者实现清晰的长期演进;第三部分探讨了第一部分中介绍的工程实践与第二部分中的结构考虑因素的交叉点。
作者简介
(美)尼尔·福特(Neal Ford),Thoughtworks公司的总监、软件架构师和meme wrangler。
(美)贝卡·帕森斯(Rebecca Parsons),Rebecca Parsons博士是Thoughtworks的首席技术官。
(英)特里克·夸(Patrick Kua),是一位拥有20多年经验的资深技术领导者。
(美)德·萨达拉奇(Pramod Sadalage),是Thoughtworks公司的数据兼DevOps总监,在数据库专业人员和应用开发人员之间架起了一座桥梁。
目录
目录
原书第1版序
序
前言1
第一部分 机制
第1章 演进软件架构9
1.1 软件演进的挑战9
1.2 演进式架构12
1.2.1 引导式变更12
1.2.2 增量变更13
1.2.3 多种架构维度13
1.3 长期规划如何应对层出不穷的变化15
1.4 架构构建完成后,如何防止其随时间推移而退化17
1.5 为何演进17
1.6 小结18
第2章 适应度函数19
2.1 什么是适应度函数19
2.2 适应度函数分类23
2.2.1 按范围分类:原子与整体23
2.2.2 按节奏分类:触发式、持续式和时间式24
2.2.3 案例研究:触发式还是持续式25
2.2.4 按结果分类:静态与动态27
2.2.5 按调用方式分类:自动与手动27
2.2.6 按响应方式分类:预设式与应急式28
2.2.7 按覆盖范围分类:领域特定适应度函数28
2.3 谁来写适应度函数29
2.4 哪里有适应度函数测试框架29
2.5 结果与实现30
2.6 小结32
第3章 实现增量变更33
3.1 增量变更33
3.1.1 部署流水线36
3.1.2 案例研究:为PenultimateWidgets的发票服务增加适应度函数39
3.1.3 案例研究:使用自动化构建验证API的一致性41
3.2 小结44
第4章 自动化架构治理46
4.1 架构治理之适应度函数46
4.2 基于代码的适应度函数47
4.2.1 传入/传出耦合48
4.2.2 抽象性、不稳定性和与主序列的距离50
4.2.3 导入的方向性53
4.2.4 圈复杂度和“引导式”治理54
4.3 即插即用的工具56
4.3.1 开源库的合法性56
4.3.2 可访问性和支持的其他架构属性57
4.3.3 ArchUnit57
4.3.4 代码治理的lint工具62
4.3.5 案例研究:可用性适应度函数62
4.3.6 案例研究:配合金丝雀发布的负载测试62
4.3.7 案例研究:移植什么63
4.3.8 已经在使用的适应度函数64
4.4 集成架构65
4.4.1 微服务架构中的通信治理65
4.4.2 案例研究:如何实现适应度函数67
4.5 DevOps69
4.6 企业架构72
4.6.1 案例研究:每天部署60次的架构重构74
4.6.2 保真度适应度函数76
4.7 适应度函数作为清单,而非棍棒76
4.8 记录
原书第1版序
序
前言1
第一部分 机制
第1章 演进软件架构9
1.1 软件演进的挑战9
1.2 演进式架构12
1.2.1 引导式变更12
1.2.2 增量变更13
1.2.3 多种架构维度13
1.3 长期规划如何应对层出不穷的变化15
1.4 架构构建完成后,如何防止其随时间推移而退化17
1.5 为何演进17
1.6 小结18
第2章 适应度函数19
2.1 什么是适应度函数19
2.2 适应度函数分类23
2.2.1 按范围分类:原子与整体23
2.2.2 按节奏分类:触发式、持续式和时间式24
2.2.3 案例研究:触发式还是持续式25
2.2.4 按结果分类:静态与动态27
2.2.5 按调用方式分类:自动与手动27
2.2.6 按响应方式分类:预设式与应急式28
2.2.7 按覆盖范围分类:领域特定适应度函数28
2.3 谁来写适应度函数29
2.4 哪里有适应度函数测试框架29
2.5 结果与实现30
2.6 小结32
第3章 实现增量变更33
3.1 增量变更33
3.1.1 部署流水线36
3.1.2 案例研究:为PenultimateWidgets的发票服务增加适应度函数39
3.1.3 案例研究:使用自动化构建验证API的一致性41
3.2 小结44
第4章 自动化架构治理46
4.1 架构治理之适应度函数46
4.2 基于代码的适应度函数47
4.2.1 传入/传出耦合48
4.2.2 抽象性、不稳定性和与主序列的距离50
4.2.3 导入的方向性53
4.2.4 圈复杂度和“引导式”治理54
4.3 即插即用的工具56
4.3.1 开源库的合法性56
4.3.2 可访问性和支持的其他架构属性57
4.3.3 ArchUnit57
4.3.4 代码治理的lint工具62
4.3.5 案例研究:可用性适应度函数62
4.3.6 案例研究:配合金丝雀发布的负载测试62
4.3.7 案例研究:移植什么63
4.3.8 已经在使用的适应度函数64
4.4 集成架构65
4.4.1 微服务架构中的通信治理65
4.4.2 案例研究:如何实现适应度函数67
4.5 DevOps69
4.6 企业架构72
4.6.1 案例研究:每天部署60次的架构重构74
4.6.2 保真度适应度函数76
4.7 适应度函数作为清单,而非棍棒76
4.8 记录