系统开发的四个阶段:开发->测试->预发布->生产,其中生产环境也就是通常说的真实环境。

开发环境:

  • 简述:就是与测试环境分开的独立客户机、服务器、配置管理工具等。程序员专门用于开发及调试的服务器,配置可以比较随意, 为了开发调试方便,打开错误报告方便调试。
  • 通常表示最低环境,由代码开发人员直接使用和维护,是代码最超前版本的一个环境。

测试环境:

简述:测试环境是指测试人员利用一些工具及数据所模拟出的、接近真实用户使用环境的环境。
目的:为了使测试结果更加真实有效。
测试环境应该与开发环境分隔开,使用独立的客户机、服务器和配置管理工具。是测试者测试及改bug的环境;这个环境要和生产环境类似。
开发人员确认代码分支在开发环境自测没有问题后,提交测试环境进行测试。测试环境对代码和系统已经集成,可以供测试人员进行功能模块测试,集成测试,系统测试,测试环境有独立的数据库和账号权限管理系统,由测试人员使用和管理,功能型bug一般在测试环境中暴露较多。
预发布环境:

预发布环境:

软件发布流程:
功能发布是直接通过代码打包的形式发布还是通过获取git分支代码的方式发布,如果是通过打包的形式发布,那可以不用预发布环境,因为测试和线上用的都是同一个代码包;
如果用的是直接发布git仓库的代码,那么就必须要增加预发布环境了;
代码分支的作用:
Dev:开发分支,开发人员开发和自测的代码分支
Test:测试分支,开发人员开发完转测功能合并代码的分支
release:预发布分支:测试环境测试通过后,开发人员将代码合并的分支,测试通过后,运营会将此分支代码发布到线上环境;
master:上线通过后,把这个迭代功能的代码合并的分支,新开发功能再从master分支上拉代码进行新的开发;
预发布环境作用:
预发布环境是正式发布前最后一次测试,所有的功能和配置,数据库都已经与线上环境高度相似,仅准入本次需要上线的功能代码,测试人员确认代码在测试环境经过测试用例测试没有问题后,提交预发布环境进行测试。因为在少数情况下即使预发布通过了,都不能保证正式生产环境可以100%不出问题;
预发布环境的配置,数据库等都是跟线上一样;有些公司的预发布环境数据库是连接线上环境,有些公司预发布环境是单独的数据库;如果不设预发布环境,如果开发合并代码有问题,会直接将问题发布到线上,增加维护的成本;
预发布环境和测试环境的区别:
预生产环境和生产系统的同步性更高,几乎一样,有些测试,比如需要大数据量的,用预生产环境看程序性能比用测试环境(一般情况下数据会较少)会更准确。
生产环境:

简述:即发布环境,真实用户访问的环境。由特定人员来维护,一般人没有权限去修改。该环境是指正式提供对外服务的,真实用户线上使用的环境;关闭错误报告,打开错误日志。
最高环境,直接面向用户。
预发布环境和生产环境区别:
1)预发环境中新功能为最新代码,其他功能代码和生产环境一致。
2)预发环境和生产环境的访问域名不同。
灰度发布:

另外,还有个灰度发布,发生在预发布环境之后,生产环境之前。 生产环境一般会部署在多台机器上,以防某台机器出现故障,这样其他机器可以继续运行,不影响用户使用。灰度发布会发布到其中的几台机器上,验证新功能是否正常。如果失败,只需回滚这几台机器即可。

通俗一点就是:
1:开发环境:编码阶段,代码一般在开发环境中不会在生产环境中,生产环境组成:操作系统、web服务器 、语言环境、php 、数据库等等
2:测试环境:项目完成测试,修改bug阶段
3:生产环境:项目数据前端后台已经跑通,部署在阿里云上之后,有客户使用访问,网站正式运行