UGA Boxxx

つぶやきの延長のつもりで、知ったこと思ったこと書いてます

【Fastly】ABテストを考える(その2)

WebサービスのエッジにhtmlをキャッシュするためにFastlyを導入している

前回の続きで、そのFastlyのVCLを使ってABテストを行いたい

uga-box.hatenablog.com

VCLでやりたいこと

  • A/Bパターンをランダムで振り分ける
  • 振り分けたパラメータをヘッダに載せてset-cookieする
  • ABパターンのVaryヘッダに載せる
#in recv
if (!req.http.Cookie:TestParam) {
    if (randombool(50,100)) {
        set req.http.X-ABTest = "A";
    } else {
        set req.http.X-ABTest = "B";
    }
} else {
      set req.http.X-ABTest = req.http.Cookie:TestParam; 
}
#in fetch
if (beresp.http.Vary) {
    set beresp.http.Vary = beresp.http.Vary ", X-ABTest"; 
} else {
    set beresp.http.Vary = "X-ABTest";
}
#in deliver
if (!req.http.Cookie:TestParam){
    add resp.http.Set-Cookie = "TestParam=" req.http.X-ABTest + "; Expires=" + time.add(now, 24w) + "; Path=/;";
}

VCLを試す

VCL コードをテストする方法としてFiddleというFastly のエンジニアがベータ提供しているツールを使う

https://fiddle.fastlydemo.net/fiddle/58d09e3f

Cookieおよび、Varyヘッダーにうまくセットできているのが確認できた

f:id:uggds:20210214122705p:plain

f:id:uggds:20210214122723p:plain

参考

https://qiita.com/ka2jun8/items/10e56bf134871c71e7f0

https://qiita.com/AtsushiFukuda/items/db26ce0f75998e7e4385