答疑:为什么互联网公司预发环境通常只有一套,而开发环境有多套?

2023-03-16 13:41:58 浏览数 (2)

一、概念介绍

首先大家先对开发环境、预发环境、灰度环境和线上环境有个基本的了解:

开发环境:开发环境是程序员专门用于开发的服务器,配置可以比较随意,为了开发调试方便,一般打开全部错误报告和测试工具,是最基础的环境1。开发环境中研发人员有时会根据自己需要调整系统参数,如果release的时候仅仅交付了代码并没有指明系统参数修改,这时很容易出问题。

预发环境:预发环境是测试环境到生产环境的过渡,需要跟生产环境配置一模一样,只是规模上比较小。预发环境中新功能为最新代码,其他功能代码和生产环境一致。预发环境一般数据库和线上共享,代码部署环境隔离线上。预发环境是测试人员模拟运维人员进行部署和配置的测试。预发环境可以提前验证线上稳定功能和新增功能的兼容性,从而尽量避免新功能对生产环境的影响。

灰度环境:灰度环境就是生产环境,所影响的也是生产环境,范围比测试环境更广,更真实,其实就是小范围的生产环境。灰度环境是在正式发布之前,在部分用户或服务器上试运行新版本的软件,以检测是否存在问题或者收集用户反馈3。灰度环境可以降低发布风险,提高用户体验。

线上环境:线上环境即生产环境,用户使用的环境,由特定人员来维护,一般人没有权限去修改。线上环境是正式运行公司业务的环境,一般数据库和程序都有严格的权限控制,不允许随意重启和变动数据。

二、答疑

2.1 为什么互联网公司预发环境通常只有一套,而开发环境有多套?

2.1.1 性质不同

预发环境是正式发布前最后一次测试,需要跟生产环境配置一模一样,只是规模上比较小。预发环境一般数据库和线上共享,代码部署环境隔离线上。这样可以保证预发环境的稳定性和质量,避免出现线上无法复现的问题。

开发环境是公司内网的本地环境,方便开发人员快速开发和测试新功能。开发环境中研发人员有时会根据自己需要调整系统参数,如果 release 的时候仅仅交付了代码并没有指明系统参数修改,这时很容易出问题。所以开发环境需要多套,以满足不同需求的并行开发和测试。

2.1.2 成本不同

预发机器成本高,通常预发环境的配置高于开发环境,硬件成本更高,如果预发环境也可以搞很多套,会造成大量的资源浪费。

预发环境的维护成本比较高,需要专业的运维人员保障上线质量的最后检查。开发环境的部署和维护成本比较低,可以采用持续集成方案来自动化发布多套环境。

2.2.3 风险不同

由于预发环境通常和线上配置相同,访问线上库,不同的功能之间可能会有冲突,多个不同的功能同时在语法测试容易导致数据不一致等风险。 增加了预发环境相互影响,预发影响线上的可能性。

2.2.4 增加复杂度

数据隔离的复杂度,多个预发环境之间想要做到相互隔离非常复杂,不隔离配置和数据相互影响又容易造成数据不一致,影响测试效果。

测试和发布流程的复杂度,多个预发环境的测试和发布可能相互影响,需要相互协调。

0 人点赞