App Engineにはトラフィック分割という機能があり、トラフィックの配分比率を指定して同じサービスの複数のバージョンにトラフィックを振り分けることができる
これを使えば簡単に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ということになる
やってみたら、そのようになっているっぽいのでこれでやってみる