▪ 複数同時のA/Bテストを実現する基盤 ▪ Cookieのハッシュをサービスごとに異なる除数で割ったときの剰余値を基に ユーザをOri・Varどちらに割振るか決定 → サービスごとにユーザの割振りパターンを独立させ、干渉の影響を排除 7 ユーザ Svc1 Svc2 Original Variant Ori Var サービスごとに割振りパターンを独立させる Svc4 Ori Var MOD 13 MOD 17 MOD 23 Tang, Diane., et al., “Overlapping experiment infrastructure: More, better, faster experimentation.” Proceedings of the 16th ACM SIGKDD international conference on Knowledge discovery and data mining. 2010. Svc3
[TAB10] ▪ 複数同時のA/Bテストを実現する基盤 ▪ Cookieのハッシュをサービスごとに異なる除数で割ったときの剰余値を基に ユーザをOri・Varどちらに割振るか決定 → サービスごとにユーザの割振りパターンを独立させ、干渉の影響を排除 8 ユーザ Svc1 Svc2 Original Variant Ori Var サービスごとに割振りパターンを独立させる Svc4 Ori Var MOD 13 MOD 17 MOD 23 Tang, Diane., et al., “Overlapping experiment infrastructure: More, better, faster experimentation.” Proceedings of the 16th ACM SIGKDD international conference on Knowledge discovery and data mining. 2010. Svc3 <問題> ▪ 交互作用の影響を測定できない ▪ 組合せによってはA/Bテストの結果と他テストの交互作用の効果が混ざりうる
パターンをテストする ▪ Svc1~4が2値のA/Bテストを行う場合、 16通りのテストケースを作成(右表) ▪ テストケースごとにトラフィックを振り分け、 サンプルを収集 ▪ 分散分析にて各A/Bテストの効果と 交互作用を算出 9 # Svc 1 Svc 2 Svc 3 Svc 4 1 Original O O O 2 O O O V 3 O O V O 4 O O V V 5 O V O O 6 O V O V 7 O V V O 8 O V V V 9 Variant O O O 10 V O O V 11 V O V O 12 V O V V 13 V V O O 14 V V O V 15 V V V O 16 V V V V
パターンをテストする ▪ Svc1~4が2値のA/Bテストを行う場合、 16通りのテストケースを作成(右表) ▪ テストケースごとにトラフィックを振り分け、 サンプルを収集 ▪ 分散分析にて各A/Bテストの効果と 交互作用を算出 10 # Svc 1 Svc 2 Svc 3 Svc 4 1 Original O O O 2 O O O V 3 O O V O 4 O O V V 5 O V O O 6 O V O V 7 O V V O 8 O V V V 9 Variant O O O 10 V O O V 11 V O V O 12 V O V V 13 V V O O 14 V V O V 15 V V V O 16 V V V V <問題> ▪ 同時に実行されるテストが多くなるとテストケースが爆発。各テストケースに割り振れる トラフィックが減少するため、ユーザ数が少ないと結果算出に時間を要する
▪ テストケースを削減できるため、トラフィック を集中でき、テスト時間の短縮に寄与 ▪ テストケースとなる組合せは、直交表や ラテン方格実験、ランダムなどで抽出 11 # Svc 1 Svc 2 Svc 3 Svc 4 1 Original O O O 2 O O O V 3 O V V O 4 O V V V 5 V O V O 6 V O V V 7 V V O O 8 V V O V 4種のA/BテストにL8直交表を適用 (テストケースが16→8に減少)
▪ テストケースを削減できるため、トラフィック を集中でき、テスト時間の短縮に寄与 ▪ テストケースとなる組合せは、直交表や ラテン方格実験、ランダムなどで抽出 12 # Svc 1 Svc 2 Svc 3 Svc 4 1 Original O O O 2 O O O V 3 O V V O 4 O V V V 5 V O V O 6 V O V V 7 V V O O 8 V V O V 4種のA/BテストにL8直交表を適用 (テストケースが16→8に減少) <問題> ▪ 複数チームが連携してテスト計画を立案する必要がありMSの自律性が損なわれる ▪ テストケースごとに収集するサンプルが異なり、トラフィック制御が複雑化
▪ それ以外はユーザトラフィックを直交させ、互いの影響を排除 ▪ 交互作用の強い群はマイクロサービスの接続関係やA/Bテストの属性をもとに抽出 15 サブセット トラフィックを 直交させること でサブセット外 の影響を排除 Svc2から見て 交互作用の強い テストをサブセット化 o v o v Svc4 Svc1 Svc2 Svc3 o v o v Svc5 Svc2を多変量テストで評価するには、 24=16通りのテストケースが必要 o v o v Svc4 Svc1 Svc2 Svc3 o v o v Svc5 22=4通りのテストケースで Svc2の多変量テストが可能
Svc4 Svc1 Svc2 Svc3 Svc5 o v Svc4 Svc1 Svc2 Svc3 o v o v Svc5 種別: レイテンシ 対象テスト(Svc2)の被干渉 種別と与干渉種別が同じ テストを列挙 分散トレーシングや通信ログ からマイクロサービスの接続 関係グラフを作成 対象テスト(Svc2)の被干渉範 囲と与干渉範囲が重なるテスト をサブセットに選定 → Svc2とSvc3をサブセット化 Svc2の 被干渉範囲 o v Svc4 Svc1 Svc2 Svc3 o v o v Svc5 Svc3の 与干渉 範囲 Svc5の 与干渉 範囲 対象 ↓
◇ 効果量0.25、有効水準0.05、検定力0.95の分散分析を想定 ▪ 実行されるA/Bテスト数が多く、かつサブセット内のテストが少ないほど、提案方式は有利 ▪ サブセット化による精度への影響の評価は今後の課題 21 0 0.2 0.4 0.6 0.8 1 1.2 0 1 2 3 4 5 6 7 サンプルサイズの割合 同時に実行されるA/Bテストの数 サブセット o v o v o v o v 先行技術(多変量分析) 提案方式(サブセット内テスト4個) 提案方式(サブセット内テスト3個) 提案方式(サブセット内テスト2個) サブセット o v o v o v o v o v o v