对于已经通过自动化测试后的软件来说,接下来就会进行软件的部署和发布,对软件的部署和发布,它们都遵循着相同的流程,并以自动化的形式去执行。它们的不同之处在它们的运行环境不一致,但最重要的是二者的回滚能力不同。
一 创建发布策略
在进行程序的部署和发布时,我们必须要在这之前制定部署和发布的策略,最合适的制定时间应该是在项目开始阶段,这个阶段项目组成员应该一起达成共识并制定相应的策略,并在整个周期中对该文档进行更新和维护。对于一个发布策略的文档内容我们可以包括:
- 每个环境的部署和发布应该由谁来负责
- 创建一个资产和配置管理策略
- 部署时所有用技术的描述
- 描述在测试或生产环境中部署时应该遵循的流程
- 部署时和运行时的配置方法和如何管理,以及它们是怎么与自动化部署流程联合起来
- 描述应用程序如何和外部系统集成
- 如何记录日志详情
- 制定恢复计划
- 如何对生产环境首次部署
1、发布计划
对于第一次软件发布,风险是很大的,往往会遇到一些不可预测的问题,所以我们应该对整个发布过程以及失败后如何快速回滚制定一个策略。
- 第一次部署应用程序时所需要的步骤
- 如何对应用程序进行冒烟测试
- 如果部署出现问题,我们该怎样撤销部署
- 如何对应用程序的状态进行备份和恢复
- 在不破坏应用程序状态的前提下,升级应用程序所需要的步骤是什么
- 如果发布失败,重新启动或重新部署的流程是什么
- 日志该怎么处理
- 如何做好数据迁移
二 应用程序的部署和升级
为了让软件的部署可以以一种可靠且一致的方式进行,我们就必须要解放双手,避免过多的人为操作,这也就意味着我们应该去写脚本,让部署成为自动化。
1、首次部署
首次部署发生在第一个迭代结束时,即给客户演示第一个简单的用户故事的时候。在第一个迭代中,我们应该选择一个最优的 MVP,尽可能快的去实现第一次部署,这么做的目的是为了让部署流线的前几个阶段跑通,从中我们还可以得到:
- 部署流水线的提交阶段
- 一个用户部署的类生产环境
- 一个简单的冒烟测试
2、对发布过程进行构建并让构建晋级
构建晋级就是可以看到部署流水线上的所有构建的状态,可以选择合适的构建版本到任意的版本,也可以通过一个单击按钮来进行部署。发布的细节:
- 为了达到发布质量,一个构建版本要通过哪些测试阶段
- 每个测试阶段需要设置什么样的门槛
- 对于每一个门槛,谁权利进行决策
3、配置的晋级
4、联合环境
5、部署到试运行环境
三 部署回滚和零停机发布
1、通过重新部署原有的版本来进行回滚
2、零停机发布(热部署)
3、蓝绿部署
进行部署时先部署在蓝环境上,在蓝环境上一切正常后,只需要简单的修改下路由,让绿环境导向蓝环境即可。但数据库的调转则需要先将绿数据库设置可读、备份到蓝数据库,在执行迁移,把用户切换到蓝数据库上。
4、金丝雀发布
在生产环境及其庞大的话,导致创建出一个有效的容量测试环境是非行困难的,那么就应该用到金丝雀发布。即把应用程序的某个版本部署到生产环境中的部分服务器中,从而得到快速反馈。这样做的好处是:
- 非常容易回滚,因为我们不需要把所有的用户都导向到当前的服务器中,只需要一些测试用户来进行试用
- 可以通过逐渐增加负载,慢慢的将更多的用户引向新版本