A/B Test with Docker

A/B Test with Docker

Docker Meetup Kansai #3

52f95e52a6d71b67361ac179fb8405f4?s=128

chimame

May 24, 2019
Tweet

Transcript

  1. 2.

    Agenda ❏ 自己紹介 ❏ サービス改善時の課題 ❏ テスト基盤概要 ❏ テスト基盤の課題および解決方法 ❏

    同一ページの表示 ❏ 複数ページでの同時 テスト実施 ❏ 静的ファイルの配信 ❏ まとめ 2
  2. 3.

    自己紹介 名前: rito 職業: Webエンジニア (アプリケーションエンジニア) 分野: Ruby on Rails,

    Nodejs, React, Docker, AWS, GCP 所属: Ateam Finergy Inc. CTO コミュニティ: Rails follow-up Osaka Osaka Web Developers Meetup twitter: @chimame_rt GitHub: chimame 3
  3. 15.

    15

  4. 21.

    “ インフラで テストをサポートするに は と があれば成立するんだから、 つサーバ並べれれば テストでき るよね? なら

    コンテナ つ並べればでき るんじゃない? 21 できなくはないけど、クラウド使ってて コピーして作るとしても結構面倒くさ い。更には計算資源(サーバ)無駄過 ぎる。
  5. 22.

    “ インフラで テストをサポートするに は と があれば成立するんだから、 つサーバ並べれれば テストでき るよね? なら

    コンテナ つ並べればでき るんじゃない? 22 環境構築が簡単。計算資源が多少は いるけど、サーバを2つ構えるよりは断 然まし。
  6. 35.

    35 初期型構成 Target group Original Challenger ALBのtarget groupには「sticky session」と いう設定が存在する。

    それをオンにすれば一定期間は同一コンテ ナにアクセスさせることが可能。
  7. 43.
  8. 44.

    第2の課題の整理 ◂ 別々の画面を同時に テストをすると へのアクセス率が悪くなる ◂ へのアクセス率が悪くなると テス ト結果のログが貯まるのに時間が必要となる ◂

    もっというと コンテナは つで動くというこ とはなく、冗長性を持たせて つ以上で動くので つ 目の テストでも起こりうる 44
  9. 46.

    46 型構成 Target group Target group Target group A/Bテストしたい画面のURLは決まっているのでALB のルール設定でURLごとにtarget

    groupを分ける。 Challenger Original Challenger Original /thanksへの アクセス /topへの アクセス
  10. 47.

    47 型構成 Target group Target group Target group target group単位でA/Bテス

    トを実施する形にする。 OriginalとChallengerのコン テナをセットとし、1/2の確率 でA/Bテストできるようにする Challenger Original Challenger Original /thanksへの アクセス /topへの アクセス
  11. 48.

    48 型構成 Target group Target group Target group Challenger Original

    Challenger Original Original Original /*への アクセス /thanksへの アクセス /topへの アクセス A/Bテスト対象外はoriginal用の target groupに割り振る。
  12. 52.

    52 型構成 Target group Target group /*への アクセス /thanksへの アクセス

    Challenger Original Original Original ② を返却 ① リクエスト 仮に画像をA/Bテストすると想定して Challengerにアクセスされたとする。
  13. 53.

    53 型構成 Target group Target group /*への アクセス /thanksへの アクセス

    Challenger Original Original Original ③画像等を再度取得 静的ファイルの取得パスが /images/* となっている場合に、必ず Originalに取得しにいってしまう。 OriginalにはChallengerの画像はないので、404となってしまう。 ④404 Not Found
  14. 55.

    55 型構成 Target group Target group /*への アクセス /thanksへの アクセス

    Challenger Original Original Original ② を返却 ① リクエスト ③画像等を再度取得 CDNを使う設定で Challenger用の静的 ファイルをS3に配置し、 そこから取得させる
  15. 56.
  16. 57.

    A/Bテストをインフラでサポートする時に目指した もの ◂ 簡単に テストが 実施 できる ◂ 簡単に テストが

    停止 できる ◂ オリジナルコンテンツに 影響 なく テストが実 施できる 57
  17. 61.

    61

  18. 62.

    62