开发环境、测试环境、预发布环境、生产环境的区别
一个软件产品从开发到用户使用都涉及哪些环境? 开发环境、测试环境、回归环境、预发布环境、生产环境。
1、开发环境
顾名思义,开发同学开发时使用的环境,每位开发同学在自己的dev分支上干活,提测前或者开发到一定程度,各位同学会合并代码,进行联调。
2、测试环境
也就是我们测试同学干活的环境啦,一般会由测试同学自己来部署,然后在此环境进行测试。bug修复后,需要发版更新测试环境来回归bug。
3、回归环境
回归bug的环境,其实就是我们的测试环境,在测试环境上测试、回归验证bug。
4、预发布环境
首先,我们要弄清楚软件的发布流程:
- 功能发布是直接通过代码打包的形式发布还是通过获取git分支代码的方式发布,如果是通过打包的形式发布,那可以不用预发布环境,因为测试和线上用的都是同一个代码包;
- 如果用的是直接发布git仓库的代码,那么就必须要增加预发布环境了;
先了解代码分支的作用:
- Dev:开发分支,开发人员开发和自测的代码分支
- Test:测试分支,开发人员开发完转测功能合并代码的分支
- release:预发布分支:测试环境测试通过后,开发人员将代码合并的分支,测试通过后,运营会将此分支代码发布到线上环境;
- master:上线通过后,把这个迭代功能的代码合并的分支,新开发功能再从master分支上拉代码进行新的开发;
预发布环境的作用
:
- 预发布环境是正式发布前最后一次测试。因为在少数情况下即使预发布通过了,都不能保证正式生产环境可以100%不出问题;
- 预发布环境的配置,数据库等都是跟线上一样;有些公司的预发布环境数据库是连接线上环境,有些公司预发布环境是单独的数据库;
- 如果不设预发布环境,如果开发合并代码有问题,会直接将问题发布到线上,增加维护的成本;
预发布环境和生产环境区别
:
- 预发环境中新功能为最新代码,其他功能代码和生产环境一致。
- 预发环境和生产环境的访问域名不同。
5、生产环境
即线上环境,用户使用的环境。由特定人员来维护,一般人没有权限去修改。
另外,还有个灰度发布,发生在预发布环境之后,生产环境之前。 生产环境一般会部署在多台机器上,以防某台机器出现故障,这样其他机器可以继续运行,不影响用户使用。灰度发布会发布到其中的几台机器上,验证新功能是否正常。如果失败,只需回滚这几台机器即可。