团队日常讨论发布/部署技术的时候,发现大家对发布/部署技术概念有些没对齐,所以本文重点在概念普及上,不做更深度的探讨。
概念
什么是部署(Deployment)?
- 部署,一般指把应用或者服务“安装”到目标环境中,比如开发,测试或者生产,侧重在“安装”。
- 部署的内容称之为“部署单元”,可以是一个模块,多个模块的联合体,甚至是完整的应用,视具体场景而定。
- 通常划分部署单元的最佳实践是:一个可以独立演化/部署且和其他部分松耦合的集合。
- 通常包含 2 种方式,分别为:增量 / 全量部署
- 增量部署:每次“安装”过程仅更新增量(当前版本和即将部署版本之间的 diff),包括代码,可执行文件或者配置
- 全量部署:部署过程会完整执行完整个环境的配置、初始化以及“安装”工作。
- 如何选择
- 基本原则:“部署单元”是否有状态
- 全量部署:状态无关的,如微服务,应用,模块
- 增量部署:状态相关,如数据库
- 基本原则:“部署单元”是否有状态
- 对比
对比项 |
全量部署 |
增量部署 |
重复性 |
|
|
预测性 |
|
|