原文:openflagr.github.io/flagr/#/REA...
官方释义
假设我们想要向美国用户推出一个新的按钮,颜色可能是红🟥、绿🟩、蓝🟦,但我们不知道哪种颜色效果最好。
Flag 和 variant
这个按钮就是一个 flag
(可理解为特性),三种颜色就是这个 flag 的三个 variant
(变种)。
Segment 片段
我们可能希望先将按钮展示给一小部分用户,例如加州的用户。
那么加州的用户就是一个 segment
(可理解为用户片段或者用户群体)。
Constraint 约束条件
同时,我们了解到加州的用户喜欢绿色按钮🟩,纽约的人喜欢粉色按钮🟥,华盛顿的人喜欢蓝色按钮🟦。 那么,我们就有三个 segment
,我们通过 constraint
(约束条件)所在州 == ?
来区分三个 segment
。
另外,segment
也可以由多个 constraint
定义。例如, 所在州 == 纽约 AND 年龄 >= 21
。
Distribution 分布
要对这个 flag 进行A/B测试,我们可以尝试以 50%/50% 的比率来分布绿色🟩和蓝色🟦 ,这个 50%/50% 就是 distribution
。
Rollout 推出
并且我们仅针对 20% 的加州用户进行测试。这个 20% 就是 Rollout Percent(推出率)。
之后,我们可以将推出率设置为 100% ,以便加州的每个用户都有 50%
的机会获得绿色或蓝色按钮。
另外,如果你想让所有用户都看到绿色按钮,那么你可以把绿色/蓝色的 distribution 设置为 100%/0%,把推出率设置为 100%。
伪代码
代码中遇到一个 entity(实体,一般可以是用户)时,先让 flagr 对它进行评估,得到评估结果之后,看看它属于哪一个变体,根据变体的不同执行不同的业务逻辑:
perl
evaluation_result = flagr.post_evaluation( entity )
if (evaluation_result.variant_id == treatment1) {
// do the treatment 1 experience
} else if (evaluation_result.variant_id == treatment2) {
// do the treatment 2 experience
} else if (evaluation_result.variant_id == treatment3) {
// do the treatment 3 experience
} else {
// do the control experience
}
对应的设置如下:
markdown
Variants
- control
- treatment1
- treatment2
- treatment3
Segment
- Constraints (state == "CA")
- Rollout Percent: 20%
- Distribution
- control: 25%
- treatment1: 25%
- treatment2: 25%
- treatment3: 25%
Segment
- Constraints (state == "NY" AND age >= 21)
- Rollout Percent: 100%
- Distribution
- control: 50%
- treatment1: 0%
- treatment2: 25%
- treatment3: 25%