news 2026/6/10 2:26:39

业务环境流程:开发->测试->预发布->灰度->生产

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
业务环境流程:开发->测试->预发布->灰度->生产
dev → test → staging → gray → prod

环境 = 同一套代码,在不同运行条件下的不同实例

目的:

  1. 保护线上用户
  2. 降低开发和发布风险
  3. 让问题尽量提前暴露

本地环境 dev

开发者电脑上的运行环境

通过 npm / yarn 等打开开发服务器

用于 写代码、调试,可以debugger,打印控制台、打断点

在构建方面:不压缩、不混淆

测试环境 test

由于本地环境的差异大(Node版本、依赖),只有在自己电脑能跑

所以得有一个过渡-测试环境:模拟线上环境,但不对真实用户开放的环境

部署在服务器上,使用独立域名,接近线上的配置

例如

text.example.com

进行

  • 前后端联调
  • 功能测试
  • 回归测试
  • QA测试
  • UAT 产品验收
VITE_API_BASE=https://test-api.example.com
if (import.meta.env.MODE === 'test') { enableDebugPanel(); }
本地测试
localhost真实域名
mock 接口真后端
无 Nginx有 Nginx
无 CDN有 CDN
HTTPHTTPS

预发布环境 staging

上线前最后一次、最接近真实线上环境的验证环境

一般是内部人员的真实数据(test是QA和研发,现在是其他例如产品等)

域名、环境等等都和 prod 一样

灰度 gray

新功能、新版本并不会一次性全量上线,而是只对一部分用户或环境先生效,观察效果稳定后再逐步扩大范围,最终全量发布

小范围试水 → 验证安全 → 再全面放开

  • :旧版本(完全没变)
  • :新版本(全部用户都用)
  • :介于两者之间

作用

  • 降低发布风险
  • 验证真实用户行为:本地/测试环境都不是真实用户
  • 支持快速回滚:只需要关闭灰度开关或把比例调回到0

如何实现

  1. 按「用户」灰度

常见方式:

  • 按 userId 哈希取模
  • 按账号白名单
  • 按新用户 / 老用户
**userId** % 100 < 5 → 5% 用户走新逻辑
  1. 按「流量」灰度(网关/Nginx
  • 10% 请求 → 新服务
  • 90% 请求 → 旧服务
split_clients $request_id $version { 10% new; * old; }
  1. 功能开关(Feature Flag)

是否开启由:

  • 后台配置
  • AB平台
  • 配置中心(如 Apollo / Nacos)
if (featureFlags.newPayFlow) { renderNewPay() } else { renderOldPay() }
灰度发布(金丝雀发布)安全上线
AB 测试对比效果好坏

线上环境 prod

真实用户正在使用的环境

  • 用户访问的网站
  • APP请求的接口
  • 真正产生业务数据

错误不能暴露给用户

在构建阶段会进行压缩、混淆

日志非常精简

// 线上禁止 console.log if (import.meta.env.PROD) { console.log = () => {}; }
VITE_API_BASE=https://api.example.com

不能随便进行调试、发布

徐岙发布流程 + 回滚机制

发布流程

本地环境 ↓ 测试环境(CI 自动部署) ↓ 回归测试 / 产品验收 ↓ 线上环境(灰度 / 全量)
  1. 本地 pnpm dev
  2. 提 PR → 自动部署到 test
  3. QA 验证
  4. 合并 main → CI 部署 prod(production 生产环境,用户正在真实使用的环境)

找出本地和线上的差异点

  1. 环境变量不同

.env.development 和 .env.production

如 API_BASE_URL

可以用console.log(import.meta.env)/console.log(process.env)查看

  1. 打包产物和本地运行逻辑不同

线上问题可能出现在

  • 某个函数被错误地 tree-shake 掉了
  • CDN 缓存未更新、版本不一致

解决:本地执行一次真实打包

npm run build npx serve dist
  1. 环境差异:浏览器版本

使用错误出现的环境尝试复现

Babel polyfill 补齐

  1. 网络

查看开发者工具的网络

对比 CORS 的响应头查看是否是跨域问题

对比一下 Cookie

  1. 后端的线上逻辑与本地不一致
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/9 23:33:21

【URP】Unity[后处理]色差ChromaticAberration

核心功能与用途‌视觉效果‌&#xff1a;在图像高对比度边缘&#xff08;如物体轮廓&#xff09;产生RGB通道分离的彩色条纹&#xff0c;常见红/蓝偏移‌应用场景‌&#xff1a;模拟老旧相机、镜头缺陷的复古风格表现角色醉酒、中毒等特殊状态科幻场景中增强高科技设备的光学畸…

作者头像 李华
网站建设 2026/6/10 7:20:46

智能语音革命:F5-TTS零门槛语音合成实战手册

智能语音革命&#xff1a;F5-TTS零门槛语音合成实战手册 【免费下载链接】F5-TTS Official code for "F5-TTS: A Fairytaler that Fakes Fluent and Faithful Speech with Flow Matching" 项目地址: https://gitcode.com/gh_mirrors/f5/F5-TTS 在人工智能技术…

作者头像 李华
网站建设 2026/6/10 16:13:32

3个V-JEPA实战案例:如何用自监督学习解决视频分析难题

3个V-JEPA实战案例&#xff1a;如何用自监督学习解决视频分析难题 【免费下载链接】jepa 项目地址: https://gitcode.com/GitHub_Trending/je/jepa V-JEPA作为Meta AI推出的自监督视频表征学习框架&#xff0c;正在改变传统视频分析的范式。无需大量标注数据&#xff0…

作者头像 李华
网站建设 2026/6/10 16:15:34

ConvNeXt模型部署指南:5分钟快速搭建现代卷积网络

ConvNeXt模型部署指南&#xff1a;5分钟快速搭建现代卷积网络 【免费下载链接】ConvNeXt Code release for ConvNeXt model 项目地址: https://gitcode.com/gh_mirrors/co/ConvNeXt ConvNeXt是一种完全基于标准卷积模块构建的纯卷积网络模型&#xff0c;在图像识别和深度…

作者头像 李华
网站建设 2026/6/10 7:23:29

专业钢琴采样库:88键高品质WAV音频资源完整指南

专业钢琴采样库&#xff1a;88键高品质WAV音频资源完整指南 【免费下载链接】钢琴88键独立音频文件 本仓库提供了一个名为“钢琴88键独立音频文件.zip”的资源文件&#xff0c;该文件包含了钢琴全部88个音阶的音频文件。每个音阶的录音都被单独保存为一个文件&#xff0c;音频格…

作者头像 李华
网站建设 2026/6/10 18:31:00

还在盲猜理想型?AI 让情感探索更清晰

在情感探索的过程中&#xff0c;很多人都曾陷入 “不知道自己想要什么” 的迷茫&#xff1a;对理想伴侣的想象模糊笼统&#xff0c;缺乏具体认知&#xff1b;凭感觉寻找却屡屡碰壁&#xff0c;浪费时间与精力&#xff1b;难以清晰表达自身情感需求&#xff0c;影响亲密关系建立…

作者头像 李华