企业出海多云特性实验平台实战指南:A/B测试分流、正交分层与统计显著性(2026最新版)

📅 · 企业出海多云架构实战 - ChengziCloud

一句话结论

Meta Description: 出海企业特性实验平台(A/B测试)完整指南:四层模型、哈希分桶、正交分层与互斥实验、假设检验与样本量公式、序贯检验与CUPED、SRM 检测、实验治理,以及三朵云与开源/SaaS 的选型对比和落地命令,一篇搞定。

本文要点
  • 前言:出海团队为什么要自建实验平台,而不是"能发就行"
  • 三个症状:为什么"能发"不等于"会做实验"
  • 实验平台四层模型:分流 / 实验 / 统计 / 治理
  • 分流层:随机化单元与哈希分桶
  • 实验层:正交分层与互斥实验
  • 统计层:显著性、样本量、序贯检验与 CUPED
  • 指标与护栏:别只看想看的那个数
  • 实验治理:让实验变成组织的资产

Meta Description: 出海企业特性实验平台(A/B测试)完整指南:四层模型、哈希分桶、正交分层与互斥实验、假设检验与样本量公式、序贯检验与CUPED、SRM 检测、实验治理,以及三朵云与开源/SaaS 的选型对比和落地命令,一篇搞定。

关键词: 实验平台、A/B测试、正交分层、统计显著性、特性实验

前言:出海团队为什么要自建实验平台,而不是"能发就行"

一句话回答:渐进式发布(金丝雀/蓝绿)只回答"新版本会不会把系统搞挂",实验平台回答"这个改动到底值不值得上"——前者管可用性,后者管因果,两件事必须分开做,缺一个都会让出海业务在"拍脑袋上线"和"上线了却说不清效果"之间反复横跳。2026 年 10 月,一个必须知道的事实是:AWS 已于 2025-10-17 正式停服 CloudWatch Evidently(AWS 官方原文:discontinue CloudWatch Evidently, effective 10/17/2025),把实验能力收编进 AppConfig;而阿里云国际站与腾讯云国际站的产品目录里,目前都没有独立的托管 A/B 实验平台产品。也就是说,出海团队做实验平台,几乎一定要在"开源自建"和"第三方 SaaS"之间做选择,而三朵云能给你的,只有特性开关、分流下发和监控——统计引擎得你自己负责。

本文与站内既有文章严格划界,请先读这张边界表,避免混读:

站内既有文章它回答的问题本文(实验平台)回答的问题
09-27 多云渐进式发布(金丝雀/蓝绿/特性开关)新版本怎么安全地放量(可用性/错误率)改动的因果效应有多大(转化/留存/收入)
10-08 多云配置中心参数值怎么动态下发与审计参数值该取哪个变体、变体效果谁更好
08-16 多云可观测与告警治理运行时指标怎么采、怎么告警指标怎么算成实验结论、显著性怎么看
09-23 多云数据治理(血缘/质量/网格)数据的口径真源与血缘实验指标用哪份口径、分配数据怎么落仓
10-03 多云研发效能 DORA交付链路的吞吐与前置时间交付出去的产品有没有产生业务价值
09-02 多云混沌工程系统抗故障能力怎么验证产品假设对不对怎么验证

记忆点:DORA 度量"发得快不快",实验平台度量"发得对不对",两者一个看过程一个看结果,谁也替代不了谁。

一、三个症状:为什么"能发"不等于"会做实验"

出海团队通常在流水线已经很成熟之后,才会撞上下面三个症状,而它们都不是 CI/CD 能解决的:

症状现场表现根因实验平台给的解药
决策靠拍脑袋老板说"这个按钮改成红色",改完没人知道有没有用没有随机对照,只有"上线前 vs 上线后"的伪对比同质流量随机分组,消除时间与人群偏差
灰度发了说不清效果金丝雀只盯 P99 和错误率,转化率是涨是跌没人管金丝雀的目标函数是稳定性,不是业务指标把业务指标作为一等公民纳入判定
多团队抢同一批流量A 团队改首页、B 团队改推荐,结论互相污染实验之间没有隔离,流量互相覆盖正交分层 + 互斥实验把流量"分区复用"

第三个症状最隐蔽:在没有分层机制的团队里,两个实验同时跑在同一批用户上,即使各自都"显著",你也无法判断是哪个改动起了作用,甚至会出现辛普森悖论——分开看都是正收益,合起来看整体是负的。这就是"实验平台"和"几个 A/B 测试脚本"的本质区别。

二、实验平台四层模型:分流 / 实验 / 统计 / 治理

一套能上生产的实验平台,可以拆成四层,每一层出问题,结论都会失真:


graph TD
    A[分流层 Assignment<br/>随机化单元 · 哈希分桶 · 一致性] --> B[实验层 Experiment<br/>正交分层 · 互斥实验 · 流量分配]
    B --> C[统计层 Analysis<br/>指标计算 · 显著性 · SRM · 序贯检验]
    C --> D[治理层 Governance<br/>实验注册 · 护栏指标 · 长期留白 · 下线]
    D -->|结论回流| A

┌──────────────────────────────────────────────────────────────┐
│                     治理层 Governance                          │
│   实验注册/审批 · 护栏指标 · 长期留白组 · 实验知识库 · 命名规范      │
├──────────────────────────────────────────────────────────────┤
│                     统计层 Analysis                            │
│   指标树/口径 · 假设检验 · p值与置信区间 · SRM 检测 · 多重比较校正  │
├──────────────────────────────────────────────────────────────┤
│                     实验层 Experiment                          │
│   域 Domain → 层 Layer → 实验 Experiment → 变体 Variation        │
│   正交(层间独立) · 互斥(层内唯一) · 流量分配与扩容              │
├──────────────────────────────────────────────────────────────┤
│                     分流层 Assignment                          │
│   随机化单元(user_id/device_id/session/cookie)                 │
│   确定性哈希分桶 bucket = hash(salt + unit_id) mod 10000          │
│   SDK 本地求值 · 一致性保证 · 分流日志                            │
└──────────────────────────────────────────────────────────────┘

三条铁律:

  1. 分流必须确定性——同一个用户在实验期内每次进来必须落进同一个桶,靠的是 hash(salt + unit_id),不是随机数发生器。
  2. 正交与互斥是两种不同机制,正交扩吞吐、互斥防污染,缺一不可。
  3. 统计层不产生数据,只负责"别把噪声当信号"——最容易翻车、也最容易被忽略。

三、分流层:随机化单元与哈希分桶

3.1 随机化单元怎么选

随机化单元(randomization unit)决定"什么对象被随机分组",选错会让整个实验失效:

随机化单元适用场景优点风险
user_id登录态业务、留存/复购类指标最稳定,跨设备一致未登录用户无法覆盖
device_id匿名场景、客户端行为覆盖面广卸载重装会变,清洗难
session_id会话内体验类(页面布局)干扰最小同一用户不同会话会进不同组,无法测留存
cookieWeb 端匿名实现简单用户清 cookie 后漂移,跨设备不统一
复合键(user_id → device_id 兜底)出海 App 常态覆盖面与稳定性兼顾需明确兜底规则并写进口径

出海团队的默认建议:以 user_id 为主,device_id 兜底,且把兜底比例作为实验健康度指标之一监控——兜底比例突然上升,说明登录体系或埋点出了问题。

3.2 哈希分桶:确定性与均匀性

分桶的本质是把无限的随机化单元映射到有限的桶里,要求两件事:确定性(同输入同输出、跨服务一致)和均匀性(各桶比例长期收敛到设定值)。


import hashlib

def bucket_of(unit_id: str, salt: str, n: int = 10000) -> int:
    key = ("%s:%s" % (salt, unit_id)).encode("utf-8")   # 同一 unit_id + 同一 salt 必须永远得到同一个桶号(跨语言、跨服务一致)
    return int(hashlib.sha256(key).hexdigest()[:8], 16) % n   # 取前 8 位十六进制 = 32bit

def in_experiment(unit_id: str, salt: str, start: int, end: int) -> bool:
    b = bucket_of(unit_id, salt)                        # 用区间切流量:实验占 [start, end) 桶,例如 [0,1000) 代表 10% 流量
    return start <= b < end

三条工程纪律:

  • salt 必须绑定"层"而不是"实验"。用实验 ID 当 salt,实验扩容(10%→20%)会重新洗牌,同一用户可能从对照组掉进实验组,结论直接作废。正确做法是 salt 绑定层,扩容只是把层内区间放大。
  • SDK 本地求值。把配置下发到各端 SDK(或 AppConfig Agent 之类的本地代理),本地算桶,避免每次请求都远程调用分流服务——否则分流本身就成了新的延迟与单点。
  • 分流日志必须落库。谁在什么时候被分到哪个变体,是后续所有归因的基础,做不到可回放就无法复现结论。

四、实验层:正交分层与互斥实验

这一层是整个平台最有技术含量的部分,也是"实验平台"和"几个 A/B 脚本"的分水岭。

4.1 为什么需要分层

一次只跑一个实验,全站只有一个改动,太慢;全流量同时跑所有实验,实验之间互相污染,结论不可信。Google 在 KDD 2010 的经典论文《Overlapping Experiment Infrastructure: More, Better, Faster Experimentation》里给出了工业界沿用至今的答案:分层实验模型。

  • 域(Domain):一组互不干扰的层,通常按系统边界划分(搜索域、推荐域、增长域)。
  • 层(Layer):层内的实验共享同一批流量,因此层内实验互斥。
  • 层与层之间用不同的 salt:同一用户在不同层被独立分流,因此层间正交。

正交意味着流量可以复用:一个用户同时是"首页改版实验"的对照组、又是"推荐算法实验"的实验组,两个实验各自统计,互不污染(前提是业务上不存在交互效应)。理论上,N 个正交层能把同一批流量的实验吞吐提升 N 倍。


┌──────────────────────── 域:增长域(Domain: Growth) ────────────────────────┐
│                                                                              │
│  层 L1(salt=l1_growth)  │███ 实验A:首页改版 [0,5000) │░░░ 实验B:banner [5000,8000) │ 剩余 20% 留白
│                          │← 层内互斥:一个用户只进 A 或 B 或留白 →              │
│  ────────────────────────────────────────────────────────────────────────    │
│  层 L2(salt=l2_rec)      │██ 实验C:推荐算法v2 [0,3000) │░░ 实验D:排序v3 [3000,6000) │ 剩余 40%
│                          │← 层 L1 与 L2 salt 不同 → 同一用户两层独立随机 →      │
│  ────────────────────────────────────────────────────────────────────────    │
│  层 L3(salt=l3_pay)      │██████ 实验E:支付流程 [0,8000) │ 剩余 20%           │
│                                                                              │
│  同一用户:L1 进实验B、L2 进实验C、L3 在留白 → 三层各自统计,互不干扰            │
└──────────────────────────────────────────────────────────────────────────────┘

4.2 正交与互斥的四条判定规则

两个实验的关系能否同层能否同流量判据
正交(无交互)—可以(不同层)业务上互不影响,如首页配色 vs 后端推荐
互斥(同域同资源)必须同层不可以都改同一个按钮,必须二选一
有交互效应禁止同流量不可以如"新定价"与"新结算流程"会互相放大
需要精确归因单独一层独占该层高风险/大改动实验,独占流量保干净

最容易犯的错:把两个都改首页的实验放到不同层,以为"正交了"。正交的前提是业务上不存在交互,而不是"技术上没冲突"。判定标准只有一个——这个改动会不会改变另一个实验的效应量。

4.3 扩容与换层的稳定性

  • 层内扩容:10%→20% 只需把层内区间放大,用层级 salt,老用户桶号不变,新增流量从留白区补充,已在实验内的用户不受影响。
  • 换层等于重开实验:把一个实验从 L1 挪到 L2,salt 变了,所有用户重新洗牌,必须重头统计。所以层规划要在实验立项时就定好。

五、统计层:显著性、样本量、序贯检验与 CUPED

这一层决定了实验结论的可信度。下面四个概念,是出海团队最常踩坑的地方。

5.1 假设检验与两类错误

  • H0(原假设):实验组与对照组无差异。
  • 第一类错误 α:H0 为真却说有差异(假阳性),行业惯例 α = 0.05。
  • 第二类错误 β:H0 为假却说无差异(假阴性),惯例 β = 0.2,即统计功效 = 1 − β = 0.8。

四个量互相制约:α 越小、功效越高、效应量 δ 越小,需要的样本量就越大。

5.2 样本量公式与真实算例

两组比例检验在 α = 0.05(双侧,z ≈ 1.96)、功效 0.8(z ≈ 0.84)下,每组所需样本量:


n ≈ (z_(1-α/2) + z_(1-β))² × [p1(1-p1) + p2(1-p2)] / (p1 - p2)²
   ≈ 7.85 × [p1(1-p1) + p2(1-p2)] / δ²
简化近似:n ≈ 16 × p(1-p) / δ²   (p 取基线,δ 为绝对提升)

真实算例(基线转化率 10%):

想检测的绝对提升 δ每组样本量两组总量结论
2 个百分点(相对 +20%)≈ 3,700≈ 7,400一周内可完成
1 个百分点(相对 +10%)≈ 14,750≈ 29,500常见目标,约两周
0.5 个百分点(相对 +5%)≈ 59,000≈ 118,000需要月级周期,慎立假设

这张表最值钱的一句话:想把可检测效应量减半,样本量要涨四倍。所以实验立项的第一件事不是写代码,而是问"这个改动预期能带来几个百分点"——预期提升小于 1pp 的改动,在小流量出海业务上根本不具备可测性。

5.3 序贯检验与"偷看问题"

固定样本实验要求跑满样本量再看结果。但现实中没人忍得住,产品经理每天刷新看板——这就是 peeking 问题:中途反复查看会显著抬高第一类错误率,经典模拟里若在实验中期查看约 5 次,"名义 5%"的实际假阳性率可被抬到 14% 上下。

三种处理方式:

方法机制优点代价
固定样本跑满 N 再看,一次判定统计最严谨慢,且不能提前止损
序贯检验(always-valid)用 alpha spending 或 always-valid p 值可随时看、可提前结束同样样本量下功效略低
贝叶斯给"B 优于 A 的概率"结论直观、适合业务沟通先验选择有主观性

主流平台(如 GrowthBook)已经原生支持频率派、序贯检验、贝叶斯三种引擎,生产建议默认开启序贯检验,因为出海团队几乎不可能忍住不中途看结果,与其被偷看污染,不如用对统计工具。

5.4 CUPED 方差缩减与多重比较

  • CUPED:用实验前的历史数据当协变量,Y_adj = Y − θ(X − E[X]),其中 θ = Cov(Y,X)/Var(X)。方差降低比例约为 1 − ρ²,若实验前后指标相关系数 ρ = 0.7,方差可降约 51%——等效于样本量翻倍,却不要一分钱流量。对留存、复购这类强自相关指标,CUPED 是性价比最高的一个开关。
  • 多重比较校正:同时看 10 个指标,至少一个假阳性的概率高达约 40%。看多个指标时要用 Bonferroni 或 Benjamini-Hochberg 校正,且必须事先指定一个 OEC(整体评价指标),而不是事后挑一个最好看的。
  • SRM(Sample Ratio Mismatch):分流比例严重偏离设定值,几乎一定意味着分流实现有 bug,此时任何结果都不可信。做法是卡方检验:

χ² = Σ (观测数 - 期望数)² / 期望数
例:总分流 1,000,000,设计 50/50,实际观测 502,000 / 498,000
χ² = 2000²/500000 + 2000²/500000 = 8 + 8 = 16,df=1 → p ≈ 0.00006
判据:p < 0.001 即触发 SRM 告警,实验作废排查

SRM 应该是实验平台的强制前置门禁:任何实验,先过 SRM,再谈显著性。

六、指标与护栏:别只看想看的那个数

一个健康的实验指标体系分三层:

层级作用示例要求
北极星指标最终业务价值付费转化率、GMV每个实验只允许一个 OEC
驱动指标解释北极星怎么变点击率、加购率、停留时长用于归因与迭代
护栏指标防止"赢了指标输了体验"P99 延迟、错误率、崩溃率、卸载率、退款率任一项恶化超阈值即判定失败

三条纪律:

  1. 护栏指标是一票否决项。转化率涨 2% 但崩溃率涨 0.5%,这不是胜利,是事故。
  2. 指标口径必须写成代码(metric contract),与 09-23 数据治理的"口径真源"衔接——不同团队各写一版 SQL,结论永远对不上。
  3. 保留长期留白组。固定 5%~10% 用户永远不进任何实验,用于观测所有实验叠加后的长期净效应,防止"局部都赚、整体在亏"。

七、实验治理:让实验变成组织的资产

技术到位之后,瓶颈会转移到流程与文化上:

治理动作落地形式不做的后果
实验注册立项表单:假设/指标/OEC/样本量/负责人/预期效应实验满天飞,没人知道在跑什么
命名规范{域}-{功能}-{日期}-{序号},如 growth-homepage-20261012-01看板里一堆 test1、new
生命周期设计→评审→上线→观察→结论→决策→归档僵尸实验长期占用流量
负面结果归档失败实验也要写结论进知识库同一错误被不同团队反复踩
下线机制结论确认后强制关停,变体固化为新基线实验变成永久分支,配置越积越乱

最重要的文化转变:负面实验也是成果。一个证伪的假设省下的是后续几个月的无效开发,把它记录进知识库,比一次"成功了但说不清为什么"的胜利更有价值。

八、三朵云与 SaaS 的实验平台能力对比

这是 2026 年 10 月出海团队必须知道的最新格局:

维度阿里云国际AWS腾讯云国际
独立托管 A/B 实验平台无独立产品CloudWatch Evidently 已于 2025-10-17 停服无独立产品
现役实验能力无独立产品;Quick Tracking 埋点 + Quick Audience 用户运营可自建AppConfig experimentation(定义假设/受众/分流/渐进放量)无独立产品
统计引擎自建不内置,导出分配数据到数仓(Redshift/Snowflake/Databricks)自行分析自建
特性开关MSE NacosAppConfig 特性开关TSE Polaris
官方口径—Evidently 停服,AWS 建议迁移至 AppConfig—

AWS 这条线要讲清楚:AWS 官方博客原文是 "After careful consideration, we have made the decision to discontinue CloudWatch Evidently, effective 10/17/2025",文档页也写明"After October 16, 2025, you will no longer be able to access the Evidently console or Evidently resources"。替代品 AppConfig experimentation 官方描述是"run A/B tests and gradual feature rollouts using production traffic",能做假设定义、受众定向、流量分配、渐进放量、CloudWatch 监控、分配数据导出——但它不提供统计显著性分析,那部分要你在自己的数仓里做。

结论:三朵云卖的都不是实验平台,而是实验平台的"分流与下发管道"。统计层和治理层,无论用哪朵云,都得自己建。

九、开源 vs SaaS 选型对比

既然云厂商不提供完整平台,出海团队的现实选择是这几家:

平台形态统计能力数据主权适合谁
GrowthBook开源自托管 / 云版频率派 + 序贯 + 贝叶斯 + CUPED + SRM + 多重校正 + Bandit数据不出域,仓库原生合规敏感、愿自建的中大型团队
PostHog开源 / 云版实验 + 特性开关 + 会话回放 + 分析一体可自托管想要"分析+实验"一体的产品团队
Amplitude Experiment(原 Statsig)SaaS完整统计引擎 + 仓库原生数据上云已用 Amplitude 分析栈的团队
LaunchDarklySaaS实验 + 特性开关 + 渐进放量数据上云开关与发布耦合重的工程团队
OptimizelySaaSWeb 实验 + 特性实验 + 个性化数据上云营销/增长主导、预算充足

关于 Statsig:它于 2025-09-02 被 OpenAI 以 11 亿美元收购;随后在 2026-05-05,Amplitude 接手了 Statsig 的品牌与客户(官方措辞为战略合作/收购,原 Statsig 团队留在 OpenAI)。选型时请以 Amplitude 现在的产品页为准。

选型三条结论:

  1. 合规优先的出海业务默认"开源自建 + 仓库原生"。实验数据(尤其是用户 ID 与行为)在很多法域属于个人信息,能不出境就不出境,这一点和 10-01 数据主权篇的结论完全一致。
  2. 没有专职数据科学家的团队,优先选统计引擎完整的托管方案,不要自己从零写频率派检验——SRM、序贯、多重校正这些坑,自研团队几乎一定会踩。
  3. 仓库原生(warehouse-native)是被低估的架构选择:指标在你的数据仓库里算,实验平台只负责分流与分配,既省钱又符合数据治理的单一真源原则。

十、参考价格表

平台服务价格(官网公开口径,2026-10 采集):

平台免费/入门标准档计费口径备注
GrowthBook免费版:3 用户 / 1 项目,特性开关与实验不限量Pro $40 / 座 / 月(30 用户 / 3 项目,含 Bandit 与统计套件)Enterprise 定制;托管仓库 100 万事件/月,超出约 $30/百万
PostHog免费:每月 100 万事件(含实验、特性开关、回放)按用量阶梯可自托管省托管费
Amplitude Experiment(原 Statsig)免费:200 万事件/月Pro $150 / 月(500 万事件,超出 $0.05 / 千事件)事件口径随分析栈统一
LaunchDarkly免费:$0/月,含 10 万实验 MAU/月与 A/B 测试按量:$10 / 服务连接/月 + $8.33 / 千客户端 MAU/月实验与开关同价体系
Optimizely—不公开定价,按报价(Web 实验约 $1,000/月起)需销售对接,年付为主

AWS 侧实验相关计费口径(官网公开):

计费项单价说明
AppConfig 配置请求$0.0000002 / 请求拉取配置的 API 调用
AppConfig 配置下发$0.0008 / 下发费用大头,按"目标数 × 更新频次"计
AppConfig 实验小时$0.90 / 实验小时不足 1 小时向上取整
CloudWatch Evidently(历史)$5 / 百万事件 + $7.50 / 百万分析单元服务已于 2025-10-17 停服,仅供历史账单参考
CloudWatch 自定义指标$0.30 / 指标 / 月每个变体单独计

自建基础设施(新加坡区域,示意算例,非厂商报价):

成本项示意规格月成本(USD,示意)
分流服务2 × 2 核 4G 按量≈ $170
指标/实验仓库1 × 2 核 8G + 存储≈ $110
PostgreSQL(实验元数据)1 × 2 核 4G 托管≈ $75
平台软件(开源自托管)GrowthBook 自托管$0
合计—≈ $355 / 月(签 1 年节省计划后约 $240)

说明:上表为非厂商报价的示意算例,用于量级判断,实际以各家官网实时报价为准;AWS Compute Savings Plans 官方标注最高省 66%、阿里云国际节省计划官方标注最高 76%(帮助文档口径最高 83%)。注意:平台订阅费往往不是大头,事件量与数仓查询费才是——一个日活 10 万的出海 App,每月实验事件随随便便上千万,用托管 SaaS 的事件阶梯会比基础设施贵得多。

十一、实操:分流、下发与 SRM 巡检

11.1 开源自托管(GrowthBook)最小部署


services:
  growthbook:
    image: growthbook/growthbook:latest
    ports:
      - "3000:3000"
      - "3100:3100"          # 行内注释:3100 为分流 SDK 端点
    environment:
      - MONGODB_URI=mongodb://mongo:27017/growthbook
      - APP_ORIGIN=https://exp.example.com
    depends_on:
      - mongo
  mongo:
    image: mongo:7
    volumes:
      - gb_mongo:/data/db
volumes:
  gb_mongo: {}

部署与健康检查:


// 拉起服务
docker compose up -d
// 校验分流端点存活
curl -s -o /dev/null -w "%{http_code}\n" http://localhost:3100/healthcheck
// 查看分配日志是否持续写入(分流必须可回放)
docker compose logs --tail=50 growthbook | grep -i assignment

11.2 三云特性开关下发的"管道"命令


// AWS:建应用/环境/配置(AppConfig experimentation 的控制台入口在同一套资源下)
aws appconfig create-application --name checkout
aws appconfig create-environment --application-id <APP_ID> --name prod
aws appconfig create-configuration-profile --application-id <APP_ID> \
  --name flags --location-uri hosted
aws appconfig create-hosted-configuration-version --application-id <APP_ID> \
  --configuration-profile-id <PROF_ID> --content fileb://flags.json --content-type application/json
aws appconfig start-deployment --application-id <APP_ID> --environment-id <ENV_ID> \
  --configuration-profile-id <PROF_ID> --configuration-version <VER> \
  --deployment-strategy-id <STRATEGY_ID>

// 阿里云国际:MSE Nacos 发布开关(命名空间隔离环境)
// curl -X POST "https://<mse-endpoint>/nacos/v1/cs/configs" \
//   -d "tenant=sg-prod&dataId=checkout.features&group=DEFAULT_GROUP&content=<json>"

// 腾讯云国际:TSE Polaris 用 tccli 管理配置
// tccli tse CreateConfigFile --InstanceId <ID> --Name checkout.features --Content <json>

11.3 实验元数据用 Terraform 固化(实验即代码)


resource "aws_appconfig_application" "exp" {
  name = "checkout-experiments"   # 尾随注释安全
}

resource "aws_appconfig_environment" "prod" {
  name           = "prod"
  application_id = aws_appconfig_application.exp.id
}

resource "aws_appconfig_configuration_profile" "flags" {
  application_id = aws_appconfig_application.exp.id
  name           = "checkout-flags"
  location_uri   = "hosted"
}

三条 IaC 纪律:开关默认值必须写进代码(配置中心挂了要能降级启动);实验的 salt 与层规划也进版本库(否则换层无从追溯);分配数据导出必须可重建。

11.4 SRM 日常巡检 SQL


-- 每天巡检:实际分流比例是否偏离设计值
SELECT variant,
       COUNT(*) AS n,
       COUNT(*) * 1.0 / SUM(COUNT(*)) OVER () AS ratio
FROM experiment_assignments
WHERE experiment_id = 'growth-homepage-20261012-01'
  AND assigned_date = CURRENT_DATE
GROUP BY variant
ORDER BY variant;
-- 期望比例 0.50 / 0.50,若任一变体偏离超过 1%(大样本)即人工复核

十二、90 天四阶段落地路线

阶段时间目标验收标准
一、管道先行第 1–3 周特性开关 + 确定性分桶 + 分流日志落库同一用户跨服务桶号一致;分流日志可回放
二、单层跑通第 4–6 周跑通第一个单层实验,含 SRM 门禁一个实验完整走完设计→结论→归档
三、分层扩容第 7–10 周引入域/层模型,2–3 个正交层并行层间正交验证通过,无 SRM 告警
四、治理固化第 11–13 周注册流程 + 护栏指标 + 长期留白 + 知识库10 分钟能回答"当前在跑哪些实验、各自结论"

15 分钟验收四问:当前在跑多少实验、每个的 OEC 是什么、有没有 SRM 告警、最近三个实验的结论是什么。答不上来,说明平台只有工具没有治理。

十三、常见问题 FAQ

Q1:我们已经在用金丝雀发布了,还需要实验平台吗? 需要。金丝雀回答"新版本会不会挂",实验平台回答"这个改动值不值得上",两者目标函数不同。金丝雀通过 ≠ 改动有效。

Q2:正交分层是不是就是让多个实验同时跑? 不是。同时跑只是现象,正交的本质是"层间业务无交互 + 层间独立 salt"。业务上有交互的两个实验放不同层,结论照样被污染。

Q3:样本量怎么估算? 用 n ≈ 16 × p(1-p) / δ²。基线转化 10%、想检测 +1pp 时每组约 1.5 万。记住:可检测效应量减半,样本量涨四倍。

Q4:中途看了数据算不算偷看? 算。反复查看会抬高假阳性率。要么跑满再看,要么直接用序贯检验(always-valid)引擎,别用"名义 5%"硬扛。

Q5:AWS 现在还能用 CloudWatch Evidently 吗? 不能。AWS 已于 2025-10-17 停服 Evidently,控制台与资源均不可访问,官方建议迁移到 AppConfig。

Q6:只用 AppConfig 的实验功能够不够? 不够。AppConfig experimentation 提供分流、放量与分配数据导出,但不提供统计显著性分析,你得把数据导出到数仓(Redshift/Snowflake/Databricks)自行计算。

Q7:小团队(< 5 人)该自建还是买 SaaS? 建议先用 SaaS 免费档或开源托管版跑通流程,把精力放在"提假设、定指标、读结论"上。分流实现和统计引擎自研是最容易被低估的坑。

Q8:实验数据涉及 GDPR/个人信息怎么办? 把实验事件当成个人信息处理:能本地化的本地化,能用假名化 ID 的绝不用明文,跨境属于数据出境,须与 10-01 数据主权篇的合规框架一起设计。

十四、总结

三句话收尾:渐进式发布保证系统不出事,实验平台保证决策不出错,这是两条必须解耦的流水线;正交分层是"多跑实验"和"结论可信"之间唯一的桥,没有它就只能在"慢"和"脏"里二选一;三朵云都不卖实验平台,只卖分流管道,统计层与治理层永远是你自己的工程责任。先建管道、再跑单层、再做分层、最后上治理——顺序不可颠倒。

🚀 企业出海需要云架构咨询?通过 7.chengzicloud.cloud 联系我们,获取专属方案。我们提供多云架构设计、实验平台选型与数据合规落地的定制咨询。

相关阅读

本文由 7.chengzicloud.cloud 提供,点击访问首页了解更多