Flagr  核心概念速记

2023年 10月 9日 56.7k 0

原文:openflagr.github.io/flagr/#/REA…

官方释义

假设我们想要向美国用户推出一个新的按钮,颜色可能是红🟥、绿🟩、蓝🟦,但我们不知道哪种颜色效果最好。

Flag 和 variant

这个按钮就是一个 flag(可理解为特性),三种颜色就是这个 flag 的三个 variant(变种)。

image.png

Segment 片段

我们可能希望先将按钮展示给一小部分用户,例如加州的用户。

那么加州的用户就是一个 segment(可理解为用户片段或者用户群体)。

image.png

Constraint 约束条件

同时,我们了解到加州的用户喜欢绿色按钮🟩,纽约的人喜欢粉色按钮🟥,华盛顿的人喜欢蓝色按钮🟦。
那么,我们就有三个 segment,我们通过 constraint(约束条件)所在州 == ? 来区分三个 segment

image.png

另外,segment 也可以由多个 constraint 定义。例如, 所在州 == 纽约 AND 年龄 >= 21 。

image.png

Distribution 分布

要对这个 flag 进行A/B测试,我们可以尝试以 50%/50% 的比率来分布绿色🟩和蓝色🟦 ,这个 50%/50% 就是 distribution

Rollout 推出

并且我们仅针对 20% 的加州用户进行测试。这个 20% 就是 Rollout Percent(推出率)。

image.png

之后,我们可以将推出率设置为 100% ,以便加州的每个用户都有 50% 的机会获得绿色或蓝色按钮。

另外,如果你想让所有用户都看到绿色按钮,那么你可以把绿色/蓝色的 distribution 设置为 100%/0%,把推出率设置为 100%。

image.png

伪代码

代码中遇到一个 entity(实体,一般可以是用户)时,先让 flagr 对它进行评估,得到评估结果之后,看看它属于哪一个变体,根据变体的不同执行不同的业务逻辑:

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
}

对应的设置如下:

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%

相关文章

JavaScript2024新功能:Object.groupBy、正则表达式v标志
PHP trim 函数对多字节字符的使用和限制
新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
为React 19做准备:WordPress 6.6用户指南
如何删除WordPress中的所有评论

发布评论