高アクセスとコストを踏まえたレコメンド機能の実装について

150 Views

June 13, 25

スライド概要

機能説明 プレゼンテーションでは、年商140億円、月間5000万PV以上を誇り、10万点以上の作品を取り扱う世界最大規模の同人ECサイト「とらのあな通信販売」が紹介されています。
このサイトのレコメンド機能は、ユーザーが購入した商品や「買いたいものリスト」に登録した商品に応じて、表示される商品の順序やリストが変化するというものです。
レコメンドのデータ量対策 レコメンド機能の強化はサービス拡大とユーザー増加につながり、それがデータ量と必要な性能の増大、ひいてはインフラコストの増加とレコメンド更新頻度の低下を引き起こすという課題が指摘されています。この課題への対策として、以下の点が挙げられています:
•購入履歴の集計範囲の整理: 「集計する期間」と「興味があると判断する範囲」を整理します。
•興味があると判断する範囲の絞り込み: ユーザーが様々な種類のものを購入することで興味のあるものがずれてしまう問題に対し、集計する種類の最大個数を設定することで対応します。

高アクセス対策 高アクセスによるコスト増大への対策として、以下の3つの戦略が紹介されています:
1.集計タイミングの整理 :
◦購入した商品は「購入時」。
◦「ほしいものリスト」に商品があれば「ほしいものリストに追加時」。
◦特定条件で集計した商品は「集計後」。
◦ログインは「ログイン後」。
◦ログインを継続している人には「1日1回集計」を行うよう集計タイミングを調整します。

2.キャッシュサービスの利用:
◦利用者増加や人気商品・イベントによる突発的なアクセス増に対応するため、高スペックなインフラによる高コスト化を避ける目的でキャッシュサービスを利用します。
◦検索結果を一定時間保存し、ログイン直後は「数分」、ログインから一定期間後は「数時間」といったように、CloudFrontのURLにパラメータを入れてキャッシュ時間を制御します。
◦システム構成としては、ユーザーからのアクセスはCloudFront、キャッシュ、ALB、Lambdaを介してRDSにアクセスし、バッチ処理は直接RDSにアクセスすることで、必要なリクエストを適切に処理する構成を策定しています。

3.あえて多めのデータを渡す:
◦リクエスト数が多い、かつ時間で切り替えが必要な部分(例えば、0時ぴったりに表示したいバナーなど)で実施されます。
◦キャッシュを使用しない場合はアクセス数に合わせて性能を上げる必要があり、コストがかかります。キャッシュを使用すると時間通りに表示できない問題が生じます。
◦この問題を解決するため、「今必要なデータ」だけでなく、「1日以内に必要になるデータ」を含め、あらかじめ多めのデータを渡すことで、アプリケーション側で本当に必要なデータに限定し、キャッシュにデータがあることで高頻度で検索する必要をなくします。


結果 これらの対策により、RDSの性能を抑えつつレコメンド機能が実現されました。具体的には、リーダーインスタンス1台とライターインスタンス1台の構成で十分であり、Lambdaの同時実行数やRDSの負荷の推移を示したグラフから、ログインなどの操作や画面表示に影響を与えないアクセス速度が達成しました。

profile-image

虎の穴ラボ株式会社は、主にとらのあな関連サービスのシステム開発を専門に担う、エンジニアの会社です。

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

ダウンロード

関連スライド

各ページのテキスト
1.

TORANOANA Lab 高アクセスとコストを踏まえた レコメンド機能の実装について サブカル業界Developer 勉強会Vol.9 蓬莱 Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.

2.

今回話す内容は・・・ 1.機能説明 2.レコメンドのデータ量対策 3.高アクセス対策 Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.

3.

今回話す内容は・・・ 1.機能説明 2.レコメンドのデータ量対策 3.高アクセス対策 →インフラコストなどが理由で機能が実現できていない方向け Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.

4.

自己紹介 名前:蓬莱寿成 独立系SIerをへて2019年に虎の穴ラボに入社 春ぐらいからFantiaの開発チームのリーダー 継続していること LT登壇、ブログ更新、水泳 Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.

5.

1.機能説明 Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.

6.

とらのあな通信販売 年間売上140億円を誇る 世界最大規模の同人ECサイト 取扱作品10万点以上 月間5,000万PV以上 クリエイターの魂がこもった同人誌 を、ファンにお届けします。 https://ecs.toranoana.jp/tora/ec/ Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.

7.

機能説明 購入した商品で 順序が変わる 購入したり欲しい物 に入れたりすると 商品の一覧が変わる Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.

8.

2.レコメンドのデータ量 Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.

9.

レコメンドのデータ量の増加 ユーザーの 増加 レコメンドの 強化 サービスの 拡大 レコメンド の更新頻度 が落ちる データ量↑ 必要性能↑ Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved. インフラ コストが 上がる

10.

レコメンドに必要なデータの増加を抑えるために 購入履歴の集計範囲の整理を実施 ・集計する期間 購入 ・興味があると判断する範囲 レコメンドの集計する 期間 購入 購入 購入 購入 購入 購入 購入 購入 購入 購入 Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved. 購入

11.

集計する期間について オレンジの商品に今興味がある 購入 購入 購入 Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.

12.

集計する期間について 購入 購入 購入 購入 購入 購入 購入 購入 Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved. 購入

13.

集計する期間について ・長期間続いているコンテンツが優先され、興味のあるものからずれる →期間の区切りの設定が必要 購入 購入 購入 購入 購入 購入 購入 購入 Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved. 購入

14.

集計する期間について ・長期間続いているコンテンツが優先され、興味のあるものからずれる →期間の区切りの設定が必要 購入 購入 購入 購入 購入 購入 購入 購入 集計期間(180日) Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved. 購入

15.

集計する期間について ・長期間続いているコンテンツが優先され、興味のあるものからずれる オレンジの商品に今興味がある →期間の区切りの設定が必要 購入 購入 購入 購入 購入 購入 購入 購入 購入 緑や青の商品に今興味がある Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.

16.

興味があると判断する範囲について ・様々なものを買う=様々な種類が増えて興味のあるものがずれる →集計した種類の最大の個数を設定する 購入 購入 購入 購入 購入 購入 購入 購入 購入 絞り込み 購入 購入 購入 購入 購入 Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved. 購入 購入

17.

3.高アクセス対策 Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.

18.

高アクセス対策 理想:レコメンドのデータを常に最新 現実:レスポンス速度やインフラの関係で難しい ・集計タイミングの整理 ・キャッシュサービスの利用 ・少し多めのデータを返す Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.

19.

3.1集計タイミングの整理 Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.

20.

集計タイミングの整理 ・購入した商品→購入 ・商品があればほしい「ほしいものリスト」→ほしいものリストに追加 ・特定条件で集計した商品→特定条件で集計した後 ・ログイン→ログイン後 ・ログインを継続している人→1日1回集計する Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.

21.

集計タイミングの整理 数分内 1時間内 適切なタイミングで集計を分けて実行 Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved. 1日以内

22.

3.2キャッシュサービスの使用 Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.

23.

キャッシュサービスの使用 ・データを保存したデータストアへの想定するアクセスの保証が必要 1)利用者が増えることでアクセスする人が増える 2)人気な商品やイベントなどで突発的に増える →高アクセスを許容するインフラ=高スペック=高コスト Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.

24.

キャッシュサービスの使用 高アクセスを吸収するためにキャッシュサービスを利用 一定時間検索結果を保存 ・ログイン直後→数分 ・ログインから一定期間後→数時間 CloudFrontのURLにパラメータを入れて、キャッシュ時間を制御 Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.

25.

キャッシュサービスの使用 必要なリクエストを適切に処理する構成を策定 アプリ(ユーザーが操作) CloudFront キャッシュ ALB Lambda RDS Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved. アプリ(バッチ)

26.

3.3あえて多めのデータを渡す Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.

27.

3.3 あえて多めのデータを渡す リクエスト数が多い+時間で切り替えが必要な部分で実施 Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.

28.

3.3 あえて多めのデータを渡す 0時から表示したいバナーがある キャッシュを使用しない キャッシュを使用する アクセス数の合わせて性能を上げる必要がある 時間通りに出せない Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.

29.

3.3 あえて多めのデータを渡す 今必要なデータ 1日以内に必要にな るデータ 1日以上先に必要に なるデータ ここで取得したデータは直後に開始される バナーのデータも含まれる Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.

30.

3.3 あえて多めのデータを渡す 今必要なデータ 1日以内に必要にな るデータ ・必要になる時間をデータとして渡す ⇨アプリ側で本当に必要なデータに限定 ・キャッシュにもデータがあり ⇨高頻度で検索する必要がなくなる Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved. 1日以上先に必要に なるデータ

31.

結果 Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.

32.

結果 RDSも性能を抑えて実現 リーダーインスタンス1台+ライターインスタンス1台の構成で十分 Lambdaの同時実行数 RDSの負荷の推移 ログインなどの操作や画面表示にも影響ないアクセス速度 Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.

33.

もっと虎の穴ラボを知りたい方へ Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.

34.

もっと虎の穴ラボを知りたい方へ 採用サイト 虎の穴ラボ技術ブログ Note https://toranoana-lab.co.jp/ https://toranoanalab.hatenablog.com/ https://note.com/toranoana_lab/ 虎の穴ラボのエンジニアを 中心に技術、 働き方について発信中 虎の穴ラボのマーケター/ ディレクターを中心に 業務内容、働き方について発信中 採用に関するイベント情報や 募集中の職種一覧などを掲載 Copyright (C) 2025 Toranoana Lab Inc. All Rights Reserved.