前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >答疑:为什么互联网公司预发环境通常只有一套,而开发环境有多套?

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

作者头像
明明如月学长
发布2023-03-16 13:41:58
9680
发布2023-03-16 13:41:58
举报
文章被收录于专栏:明明如月的技术专栏

一、概念介绍

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

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

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

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

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

二、答疑

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

2.1.1 性质不同

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

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

2.1.2 成本不同

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

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

2.2.3 风险不同

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

2.2.4 增加复杂度

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-03-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、概念介绍
  • 二、答疑
    • 2.1 为什么互联网公司预发环境通常只有一套,而开发环境有多套?
      • 2.1.1 性质不同
      • 2.1.2 成本不同
      • 2.2.3 风险不同
      • 2.2.4 增加复杂度
相关产品与服务
持续集成
CODING 持续集成(CODING Continuous Integration,CODING-CI)全面兼容 Jenkins 的持续集成服务,支持 Java、Python、NodeJS 等所有主流语言,并且支持 Docker 镜像的构建。图形化编排,高配集群多 Job 并行构建全面提速您的构建任务。支持主流的 Git 代码仓库,包括 CODING 代码托管、GitHub、GitLab 等。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档