1 回答
一般来说,在小型项目中可能只有开发环境和生产环境;在中型项目中会有开发环境、staging environment、生产环境;在大型项目中会有开发环境、测试环境、staging environment、生产环境。
一、Dev Env / Development Environment 开发环境
开发环境是位于安全服务器或者本地机器的软件或者网络应用的一个工作备份。开发者可以对于源代码进行修改以及上传独立的功能。由于工作版本 the working version 通常和编译器、debugging、测试工具一同工作,因此工作版本只在这个环境下起作用。开发人员通常会用一个精简版的数据库来检查特定的功能。
例如,在开发一个在线商店的时候,产品目录的一部分可以被用于把数据的元结构 Metastructure (例如价格、库存、不同的产品变量)转移到应用中。
如果多个开发者共同开一个一个大型项目,我们还会用到版本控制系统(例如 Git、Mercurial、Subversion)来同步修改和更新。
开发同学开发时使用的环境,所有的开发和配置在这个环境里进行。一般情况下,只有这个环境可以改配置和进行开发,并且一般不在这个环境下创建数据。(开发环境就是每个开发人员电脑上的开发环境,只有开发人员可以配置和开发,写数据测试放在测试环境) 。
每位开发同学在自己的dev分支上干活,提测前或者开发到一定程度,各位同学会合并代码,进行联调。
为了开发调试方便,一般打开全部错误报告和测试工具,是最基础的环境。
开发环境的分支,一般是feature分支。
开发环境外部用户无法访问,且版本变动很大。
二、QA Env / Test Environment 测试环境
测试环境帮助我们测试产品的某一个特定部分。它要求不同的配置和数据配置,因此测试环境没有一个一键生成式的配置方法(不同于 staging environment)。
测试环境的分支一般是develop分支,部署到公司私有的服务器或者局域网服务器上,主要用于测试是否存在bug,一般会不让用户和其他人看到。
一般来说,只有大型项目才有 test environment,因为增加 test environment 会增加成本。
三、Regression Environment 回归环境
如果同时有好几个人参与同一个项目,那么基于master分支可能拉出非常多的开发分支,那么当这些分支合并到master上后,master上的功能可能受到影响,这种情况下,会使用一个回归环境,部署master分支的代码。回归环境是最接近生产的一个版本。
四、Staging Environment
在较大的项目中,一般会有 staging environment。增加一个 staging environment 会增加硬件采购的成本(硬件最好和生产环境的硬件一样),并且还要进行配置并写入需要的数据。
(一)什么是 Staging Environment?
在最后 Bugs 都修复之后,在产品上线之前,我们会在 Staging Environment 中复制一份生产环境的内容来测试产品。它可以帮助我们检测硬件的配置、服务 servers、数据库、caches 是否正确。
它会复制生产环境的所有依赖和配置。因此,测试人也可以在不影响用户使用的情况下,检查整个产品在真实场景下是否会出现问题。
Staging Environment 的作用是检查整个产品以及每一个组件是否在真实环境下能够正常工作,是对于真实情况的精确模拟。
简单地说,它是一个开发人员对于产品进行各种实验的舞台 stage,在这里我们可以进行各种试验,来确保给用户最佳的体验。
(二)在 Staging Environment 做什么测试?
在 Staging Environment 一般做 smoke test 和 User Acceptance Test (UAT)。
Smoke Test 也被成为 Build Verification Test 或者是 Acceptance Test。它主要是检测重要的服务功能,即会在一个 new build 主要处在开发和整合阶段检测重要功能。
UAT 也被成为应用测试 Application Testing 或者是末端用户测试 end-user testing。它主要是从用户角度测试产品表现,确保产品质量和用户友好性。通常来说,商业用户和产品经理是 UTA 阶段的测试者。除了测试基础的功能,我们也会测试产品的视觉表现是否匹配我们的品牌、设定、风格标准。
除此以外,开发者也在这个环境进行 chaos engineering。chaos engineering 是持续破坏代码,来加强我们对于系统的信心的过程。尽管 chaos engineering 通常在生产环境中进行,我们也可以在 staging environment 中进行。它帮助我们尽早发现产品可能在生产环境中出现的潜在 Issue。
五、Prod/ Production Environment 生产环境
生产环境是指正式提供对外服务的环境,一般连接上互联网即可访问。一般会关掉错误报告,打开错误日志。
部署分支一般为master分支。
生产环境在理想情况下是一比一复制的 staging environment。但在实际工作中并不总是这样,但是在生产环境中使用的硬件和软件和 staging environment 中的是非常相似的。
开发人员在这个时点不会再做任何的修改,以为之前对于源代码的工作复制已经在运转中的服务器上了。源代码在经过详尽地测试以后,可以被 publish 出来了。
这家伙很懒,还没有设置简介