正规一点的网站,都会有多个环境,比如生产环境(正式环境),staging,dev,不同分支等等。
服务器暂时不能访问就是服务挂了,是事故。
不同公司有不同的发布流程,不过一般来说,一个功能或者 bug 修复从启动到上线要经历很长时间,历经不同环境。比如:
1. 开发完成,本地环境自测。
2. 提交 PR/MR,线上自动生成测试环境,邀请测试人员参与。
3. 一个开发周期完成,全部功能上线测试环境,跑自动化测试、冒烟测试等。
4. 上线正式环境前,先上 staging 给大家预览
5. 最后部署到生产环境,交给全部用户
最后一步,有时候也会用灰度发布。因为产品太庞大,很难每次都跑全量回归,就会先推给一部分用户,看他们的数据表现基本正常,再推给全部用户。
有时候,预览环境或者某个大版本的测试环境也会长期向内部人员,或者某些特定普通用户开放,主要是为了收集反馈信息。类似游戏里的各种体验服、测试服。
所以大部分情况下,普通用户不会被发布过程影响到。
目前很多云平台,比如 Vercel、CF 都实现了这些功能,每个分支都有独立的测试环境,用起来很方便。自家的基建,使用一个构建工具配合 K8S
也可以搞,方案很成熟。