UGA Boxxx

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

【GAE】トラフィック分割を利用したA/Bテスト

App Engineにはトラフィック分割という機能があり、トラフィックの配分比率を指定して同じサービスの複数のバージョンにトラフィックを振り分けることができる

cloud.google.com

これを使えば簡単にA/Bテストできるんじゃないかと考えた

考え方

  • Aパターンを実装したサービスのインスタンスを立ち上げる(バージョン1)
  • Bパターンを実装したサービスのインスタンスを立ち上げる(バージョン2)
  • バージョン1とバージョン2のトラフィック比率を50:50にし、トラフィック分割の基準を「Cookie」にする
  • Cookie」をもったユーザーは前回と同じバージョンのサービスにアクセスする

Cookie分割

https://cloud.google.com/appengine/docs/standard/java11/splitting-traffic?hl=ja#cookie_splitting

ドキュメントによるとGOOGAPPUID という Cookie を探すみたいで、 0~999 の範囲の値が格納されることを期待している

Cookieがない場合はランダムで、ある場合はその値がリクエストのルーティングに使用される

ただ、ない場合でランダムに割り振られた後でも自動ではCookieはセットされなかったので、自前でCookieをセットする必要があるみたい

そして、どっちのパターンにする場合に0~999 のどの値をつめておくべきなのか?はドキュメントみてもわからなかった

StackoverflowによるとA:Bが40:60の比率の場合、400未満の値がAで、400~999の値がBになるらしい https://stackoverflow.com/questions/50294904/app-engine-cookie-based-traffic-splitting

50:50ならば、0~499がAで、500~599がBということになる

やってみたら、そのようになっているっぽいのでこれでやってみる