想了解大家发布生产前会不会有这样一个环境?我这目前没有,每次发布的服务一多就手忙脚乱,神经紧绷,一点都不丝滑。现在我这的做法是:
1.一两天前确定 [发布计划]
2.所有人准备 [发布说明] + 合并分支
3.然后由我打镜像,准备发布事项
4.更新生产镜像、SQL 、TerraForm 等事项
5.宣布更新完成,测试员回归
以上流程,是直接更生产,回归期间有问题直接修复,如果到了业务敏感时间段还得申请才能走 hotfix ,很多时候都会消耗一天的时间才能完成一次迭代。不是说发布前测试完就能在生产上避免问题,来自工程管理上的细节太多了,问题会像噪声一样溢出到生产。所以才想着一般是不是做一个这样的环境去做回归,然后才上生产,然后二次回归。这样的环境叫什么?预发布环境?蓝绿部署?关键是,大家会不会这么做?
开发只能操作 dev ,提测后由测试同学自动化打包到 beta ,上线当天再由测试自动化打包到 preview ,不过 preview 和 online 用的同数据库,所以这天大部分情况下测试都只会在该环境验证数据的查询操作,基本上只要不涉及到生产环境数据的增删改外都可以验证,没问题后再由运维发到 online 。
development 是内网的多套环境,用来即时测试,非 stable 标签的镜像不会进入 stag
staging 是一套用于测试的环境,和 prod 完全同构,stable 镜像必须先发布到 stag 才能发布到 prod
production 就是生产环境了,镜像来自 stag 环境
共用数据库其实也有很大隐患,前司几次生产事故就是由预发布环境引起的,后来就下线了这个环境(下线的过程中也出现了几次生产事故)。通过引入预发布环境来解决工程管理问题,但却又因此引入了一个新的工程管理问题……
你们 UAT 和生产共用数据库吗?
Staging 预发布环境
Canary 灰度
Pre-production 准生产
UAT 验收测试