在Nginx上的一个单页应用程序中组织一个简单的A/B测试

851人浏览   2023-10-23 14:36:09

在Nginx上的一个单页应用程序中组织一个简单的A/B测试

为了减少风险,该变化包括为特定的用户组或部分用户进行测试。根据成功的结果,决定是否将该变化全部纳入,或删除该变化。这就是所谓的A/B测试。

测试本身可以分为简单和复杂的测试。

复杂是指有一大组数据被用于映射条件中的情况。通常在这种情况下,条件是由应用程序调用的一个单独的服

务来检查。 组织这样的测试超出了本文的范围。

而简单的条件是基于一些简单的东西,例如,50%的用户应该看到第一个选项,其余的应该看到第二个。在我的实践中,简单测试的使用与以下任务有关。

  1. 检查新的设计
  2. 检查技术改进/变化:切换到另一个服务,将部分应用程序移到一个单独的应用程序(小工具)。

为了避免条件检查堵塞应用程序的代码,可以将检查委托给HTTP服务器,在我们的例子中是Nginx。


ngx_http_split_clients_module允许定义分割客户端的条件(每个客户端是一个单独的请求到服务器)。

http {
    
      split_clients "${http_x_forwarded_for}AB" $ab_version {
                              50%                .two;
                              *                  "";
      }
     
       server {
            
                 if ($cookie_ab_version) {
                         set $ab_version $cookie_ab_version;
                 }
             
             location / {
                     index index${ab_version}.html;
       }
    }
}

在上面的例子中,我把50%的请求发送到更新后的应用程序的第二版本。其余的见主版本。

为了确保正确显示版本二,我增加了在Cookie中指定版本的选项。

相关推荐