当前位置: 首页 > news >正文

《持续交付:发布可靠软件的系统方法》 - 目录

《持续交付:发布可靠软件的系统方法》

    • 第 1 章 软件交付的问题
    • 第 2 章 配置管理
    • 第 3 章 持续集成
    • 第 4 章 测试策略的实现
    • 第 5 章 部署流水线解析
    • 第 6 章 构建与部署的脚本化
    • 第 7 章 提交阶段
    • 第 8 章 自动化验收测试
    • 第 10 章 应用程序的部署与发布
    • 第 11 章 基础设施和环境管理
    • 第 12 章 数据管理
    • 第 13 章 组件和依赖管理
    • 第 14 章 版本控制进阶
    • 第 15 章 持续交付管理

第 1 章 软件交付的问题

入口

1.1 引言
1.2 一些常见的发布反模式1.2.1 反模式:手工部署软件1.2.2 反模式:开发完成之后才向类生产环境部署1.2.3 反模式:生产环境的手工配置管理1.2.4 我们能做得更好吗
1.3 如何实现目标1.3.1 每次修改都应该触发反馈流程1.3.2 必须尽快接收反馈1.3.3 交付团队必须接收反馈并作出反应1.3.4 这个流程可以推广吗
1.4 收效1.4.1 授权团队1.4.2 减少错误1.4.3 缓解压力1.4.4 部署的灵活性1.4.5 多加练习,使其完美
1.5 候选发布版本
1.6 软件交付的原则1.6.1 为软件的发布创建一个可重复且可靠的过程1.6.2 将几乎所有事情自动化1.6.3 把所有的东西都纳入版本控制1.6.4 提前并频繁地做让你感到痛苦的事1.6.5 内建质量1.6.6 “DONE”意味着“已发布”1.6.7 交付过程是每个成员的责任1.6.8 持续改进
1.7 小结

第 2 章 配置管理

入口

2.1 引言
2.2 使用版本控制2.2.1 对所有内容进行版本控制2.2.2 频繁提交代码到主干2.2.3 使用意义明显的提交注释
2.3 依赖管理2.3.1 外部库文件管理2.3.2 组件管理
2.4 软件配置管理2.4.1 配置与灵活性2.4.2 配置的分类2.4.3 应用程序的配置管理2.4.4 跨应用的配置管理2.4.5 管理配置信息的原则
2.5 环境管理2.5.1 环境管理的工具2.5.2 变更过程管理
2.6 小结

第 3 章 持续集成

入口

3.1 引言
3.2 实现持续集成3.2.1 准备工作3.2.2 一个基本的持续集成系统
3.3 持续集成的前提条件3.3.1 频繁提交3.3.2 创建全面的自动化测试套件3.3.3 保持较短的构建和测试过程3.3.4 管理开发工作区
3.4 使用持续集成软件3.4.1 基本操作
3.5 必不可少的实践3.5.1 构建失败之后不要提交新代码3.5.2 提交前在本地运行所有的提交测试3.5.3 等提交测试通过后再继续工作3.5.4 回家之前,构建必须处于成功状态3.5.5 时刻准备着回滚到前一个版本3.5.6 在回滚之前要规定一个修复时间3.5.7 不要将失败的测试注释掉3.5.8 为自己导致的问题负责3.5.9 测试驱动的开发
3.6 推荐的实践3.6.1 极限编程开发实践3.6.2 若违背架构原则,就让构建失败3.6.3 若测试运行变慢,就让构建失败3.6.4 若有编译警告或代码风格问题,就让测试失败
3.7 分布式团队3.7.1 对流程的影响3.7.2 集中式持续集成3.7.3 技术问题3.7.4 替代方法
3.8 分布式版本控制系统
3.9 小结

第 4 章 测试策略的实现

入口

4.1 引言
4.2 测试的分类4.2.1 业务导向且支持开发过程的测试4.2.2 技术导向且支持开发过程的测试4.2.3 业务导向且评价项目的测试4.2.4 技术导向且评价项目的测试4.2.5 测试替身
4.3 现实中的情况与应对策略4.3.1 新项目4.3.2 项目进行中4.3.3 遗留系统4.3.4 集成测试
4.4 流程
4.5 小结

第 5 章 部署流水线解析

入口

5.1 引言
5.2 什么是部署流水线
5.3 部署流水线的相关实践5.3.1 只生成一次二进制包5.3.2 对不同环境采用同一部署方式5.3.3 对部署进行冒烟测试5.3.4 向生产环境的副本中部署5.3.5 每次变更都要立即在流水线中传递5.3.6 只要有环节失败,就停止整个流水线
5.4 提交阶段
5.5 自动化验收测试之门
5.6 后续的测试阶段5.6.1 手工测试5.6.2 非功能测试
5.7 发布准备5.7.1 自动部署与发布5.7.2 变更的撤销5.7.3 在成功的基础上构建
5.8 实现一个部署流水线5.8.1 对价值流进行建模并创建简单的可工作框架5.8.2 构建和部署过程的自动化5.8.3 自动化单元测试和代码分析5.8.4 自动化验收测试5.8.5 部署流水线的演进
5.9 度量
5.10 小结

第 6 章 构建与部署的脚本化

入口

6.1 引言
6.2 构建工具概览6.2.1 Make6.2.2 Ant6.2.3 NAnt 与 MSBuild6.2.4 Maven6.2.5 Rake6.2.6 Buildr6.2.7 Psake
6.3 构建部署脚本化的原则与实践6.3.1 为部署流水线的每个阶段创建脚本6.3.2 使用恰当的技术部署应用程序6.3.3 使用同样的脚本向所有环境部署6.3.4 使用操作系统自带的包管理工具6.3.5 确保部署流程是幂等的(Idempotent)6.3.6 部署系统的增量式演进
6.4 面向 JVM 的应用程序的项目结构
6.5 部署脚本化6.5.1 多层的部署和测试6.5.2 测试环境配置
6.6 小贴士6.6.1 总是使用相对路径6.6.2 消除手工步骤6.6.3 从二进制包到版本控制库的内建可追溯性6.6.4 不要把二进制包作为构建的一部分放到版本控制库中6.6.5 “test”不应该让构建失败6.6.6 用集成冒烟测试来限制应用程序
6.7 小结

第 7 章 提交阶段

入口

7.1 引言
7.2 提交阶段的原则和实践7.2.1 提供快速有用的反馈7.2.2 何时令提交阶段失败7.2.3 精心对待提交阶段7.2.4 让开发人员也拥有所有权7.2.5 在超大项目团队中指定一个构建负责人
7.3 提交阶段的结果
7.4 提交测试套件的原则与实践7.4.1 避免用户界面7.4.2 使用依赖注入7.4.3 避免使用数据库7.4.4 在单元测试中避免异步7.4.5 使用测试替身7.4.6 最少化测试中的状态7.4.7 时间的伪装7.4.8 蛮力
7.5 小结

第 8 章 自动化验收测试

入口

8.1 引言
8.2 为什么验收测试是至关重要的8.2.1 如何创建可维护的验收测试套件8.2.2 GUI 上的测试
8.3 创建验收测试8.3.1 分析人员和测试人员的角色8.3.2 迭代开发项目中的分析工作8.3.3 将验收条件变成可执行的规格说明书
8.4 应用程序驱动层8.4.1 如何表述验收条件8.4.2 窗口驱动器模式:让测试与 GUI 解耦
8.5 实现验收测试8.5.1 验收测试中的状态8.5.2 过程边界、封装和测试8.5.3 管理异步与超时问题8.5.4 使用测试替身对象
8.6 验收测试阶段8.6.1 确保验收测试一直处于通过状态8.6.2 部署测试
8.7 验收测试的性能8.7.1 重构通用任务8.7.2 共享昂贵资源8.7.3 并行测试8.7.4 使用计算网格
8.8 小结

第 10 章 应用程序的部署与发布

入口

10.1 引言
10.2 创建发布策略10.2.1 发布计划10.2.2 发布产品
10.3 应用程序的部署和晋级10.3.1 首次部署10.3.2 对发布过程进行建模并让构建晋级10.3.3 配置的晋级10.3.4 联合环境10.3.5 部署到试运行环境
10.4 部署回滚和零停机发布10.4.1 通过重新部署原有的正常版本来进行回滚10.4.2 零停机发布10.4.3 蓝绿部署10.4.4 金丝雀发布
10.5 紧急修复
10.6 持续部署
10.7 小贴士和窍门10.7.1 真正执行部署操作的人应该参与部署过程的创建10.7.2 记录部署活动10.7.3 不要删除旧文件,而是移动到别的位置10.7.4 部署是整个团队的责任10.7.5 服务器应用程序不应该有 GUI10.7.6 为新部署留预热期10.7.7 快速失败10.7.8 不要直接对生产环境进行修改
10.8 小结

第 11 章 基础设施和环境管理

入口

11.1 引言
11.2 理解运维团队的需要11.2.1 文档与审计11.2.2 异常事件的告警11.2.3 保障 IT 服务持续性的计划11.2.4 使用运维团队熟悉的技术
11.3 基础设施的建模和管理11.3.1 基础设施的访问控制11.3.2 对基础设施进行修改
11.4 服务器的准备及其配置的管理11.4.1 服务器的准备11.4.2 服务器的持续管理
11.5 中间件的配置管理11.5.1 管理配置项11.5.2 产品研究11.5.3 考查中间件是如何处理状态的11.5.4 查找用于配置的 API11.5.5 使用更好的技术
11.6 基础设施服务的管理
11.7 虚拟化11.7.1 虚拟环境的管理11.7.2 虚拟环境和部署流水线11.7.3 用虚拟环境做高度的并行测试
11.8 云计算11.8.1 云中基础设施11.8.2 云中平台11.8.3 没有普适存在11.8.4 对云计算的批评
11.9 基础设施和应用程序的监控11.9.1 收集数据11.9.2 记录日志11.9.3 建立信息展示板11.9.4 行为驱动的监控
11.10 小结

第 12 章 数据管理

入口

12.1 引言
12.2 数据库脚本化
12.3 增量式修改12.3.1 对数据库进行版本控制12.3.2 联合环境中的变更管理
12.4 数据库回滚和无停机发布12.4.1 保留数据的回滚12.4.2 将应用程序部署与数据库迁移解耦
12.5 测试数据的管理12.5.1 为单元测试进行数据库模拟12.5.2 管理测试与数据之间的耦合12.5.3 测试独立性12.5.4 建立和销毁12.5.5 连贯的测试场景
12.6 数据管理和部署流水线12.6.1 提交阶段的测试数据12.6.2 验收测试中的数据12.6.3 容量测试的数据12.6.4 其他测试阶段的数据
12.7 小结

第 13 章 组件和依赖管理

入口

13.1 引言
13.2 保持应用程序可发布13.2.1 将新功能隐蔽起来,直到它完成为止13.2.2 所有修改都是增量式的13.2.3 通过抽象来模拟分支
13.3 依赖13.3.1 依赖地狱13.3.2 库管理
13.4 组件13.4.1 如何将代码库分成多个组件13.4.2 将组件流水线化13.4.3 集成流水线
13.5 管理依赖关系图13.5.1 构建依赖图13.5.2 为依赖图建立流水线13.5.3 什么时候要触发构建13.5.4 谨慎乐观主义13.5.5 循环依赖
13.6 管理二进制包13.6.1 制品库是如何运作的13.6.2 部署流水线如何与制品库相结合
13.7 用 Maven 管理依赖
13.8 小结

第 14 章 版本控制进阶

入口

14.1 引言
14.2 版本控制的历史14.2.1 CVS14.2.2 SVN14.2.3 商业版本控制系统14.2.4 放弃悲观锁
14.3 分支与合并14.3.1 合并14.3.2 分支、流和持续集成
14.4 DVCS14.4.1 什么是 DVCS14.4.2 DVCS 简史14.4.3 企业环境中的 DVCS14.4.4 使用 DVCS
14.5 基于流的版本控制系统14.5.1 什么是基于流的版本控制系统14.5.2 使用流的开发模型14.5.3 静态视图和动态视图14.5.4 使用基于流的版本控制系统做持续集成
14.6 主干开发
14.7 按发布创建分支
14.8 按功能特性分支
14.9 按团队分支
14.10 小结

第 15 章 持续交付管理

入口

15.1 引言
15.2 配置与发布管理成熟度模型
15.3 项目生命周期15.3.1 识别阶段15.3.2 启动阶段15.3.3 初始阶段15.3.4 开发与发布15.3.5 运营阶段
15.4 风险管理流程15.4.1 风险管理基础篇15.4.2 风险管理时间轴15.4.3 如何做风险管理的练习
15.5 常见的交付问题、症状和原因15.5.1 不频繁的或充满缺陷的部署15.5.2 较差的应用程序质量15.5.3 缺乏管理的持续集成工作流程15.5.4 较差的配置管理
15.6 符合度与审计15.6.1 文档自动化15.6.2 加强可跟踪性15.6.3 在筒仓中工作15.6.4 变更管理
15.7 小结

相关文章:

  • Windows内的Ubuntu虚拟机安装docker
  • Django路由层之有名分组和无名分组、反向解析、路由分发、伪静态的概念、名称空间、虚拟环境、Django1和Django2的区别
  • 国内领先的五大API接口供应商
  • 【golang】探索for-range遍历实现原理(slice、map、channel)
  • python科研绘图:圆环图
  • 程序员的绝望和欢笑:当拼写错误搞乱了我的代码
  • 前端设计模式之【代理模式】
  • 【Java 进阶篇】JQuery 遍历 —— For 循环的奇妙之旅
  • react hook ts 实现 列表的滚动分页加载,多参数混合混合搜索
  • ctf之流量分析学习
  • 沉浸式航天vr科普馆VR太空主题馆展示
  • Beautiful Soup爬取数据html xml
  • 查询ip地址
  • Java版B/S架构云his医院信息管理系统源码(springboot框架)
  • 0基础学习VR全景平台篇第121篇:认识视频剪辑软件Premiere
  • 【162天】黑马程序员27天视频学习笔记【Day02-上】
  • 【跃迁之路】【477天】刻意练习系列236(2018.05.28)
  • C++11: atomic 头文件
  • Create React App 使用
  • Docker 笔记(1):介绍、镜像、容器及其基本操作
  • Flannel解读
  • Linux中的硬链接与软链接
  • Python_OOP
  • scrapy学习之路4(itemloder的使用)
  • Spring Boot MyBatis配置多种数据库
  • SpringCloud集成分布式事务LCN (一)
  • vuex 笔记整理
  • vue总结
  • 利用jquery编写加法运算验证码
  • 如何合理的规划jvm性能调优
  • 如何用Ubuntu和Xen来设置Kubernetes?
  • 使用Maven插件构建SpringBoot项目,生成Docker镜像push到DockerHub上
  • 腾讯优测优分享 | 你是否体验过Android手机插入耳机后仍外放的尴尬?
  • 学习ES6 变量的解构赋值
  • 掌握面试——弹出框的实现(一道题中包含布局/js设计模式)
  • ​软考-高级-系统架构设计师教程(清华第2版)【第15章 面向服务架构设计理论与实践(P527~554)-思维导图】​
  • ​无人机石油管道巡检方案新亮点:灵活准确又高效
  • #Linux(Source Insight安装及工程建立)
  • #LLM入门|Prompt#1.7_文本拓展_Expanding
  • (windows2012共享文件夹和防火墙设置
  • (多级缓存)缓存同步
  • (附源码)spring boot北京冬奥会志愿者报名系统 毕业设计 150947
  • (附源码)spring boot公选课在线选课系统 毕业设计 142011
  • (十五)devops持续集成开发——jenkins流水线构建策略配置及触发器的使用
  • (提供数据集下载)基于大语言模型LangChain与ChatGLM3-6B本地知识库调优:数据集优化、参数调整、Prompt提示词优化实战
  • (五)c52学习之旅-静态数码管
  • (转)Spring4.2.5+Hibernate4.3.11+Struts1.3.8集成方案一
  • .class文件转换.java_从一个class文件深入理解Java字节码结构
  • .net core webapi 大文件上传到wwwroot文件夹
  • .NET 分布式技术比较
  • .NET 使用 ILMerge 合并多个程序集,避免引入额外的依赖
  • .net 怎么循环得到数组里的值_关于js数组
  • .NET/C# 使窗口永不获得焦点
  • .Net程序猿乐Android发展---(10)框架布局FrameLayout
  • .Net开发笔记(二十)创建一个需要授权的第三方组件