狠狠撸

狠狠撸Share a Scribd company logo
スケールする広告配信システムの作り方?
Developers Night #12?
? 2020 GMO AD Marketing Inc. 2
広告配信システム1?
Index?
広告配信の課題?2?
高トラフィック対策?3?
分散処理?4?
まとめ?5?
? 2020 GMO AD Marketing Inc. 3
広告配信システム1?
Index?
広告配信の課題?2?
高トラフィック対策?3?
分散処理?4?
まとめ?5?
? 2020 GMO AD Marketing Inc. 4
AkaNe(アドネットワーク)?
メディア? 広告主?
広告配信
プラットフォーム
? 2020 GMO AD Marketing Inc. 5
広告配信?
広告
リクエスト
広告検索
広告表示
? 2020 GMO AD Marketing Inc. 6
広告配信?
広告検索
広告表示
広告
リクエスト
? 2020 GMO AD Marketing Inc. 7
広告取得用のJSタグ
<script src=/slideshow/ss-236956075/236956075/"https:/広告取得用.js">
広告リクエスト?
広告リクエスト
メディア(媒体)
? 2020 GMO AD Marketing Inc. 8
広告配信?
広告
リクエスト
広告検索
広告表示
? 2020 GMO AD Marketing Inc. 9
広告検索?
広告
    リクエスト情報
?サイズ    ?メディアカテゴリ
?ユーザの好み ?etc...
ターゲティングの精度に繋がる?
? 2020 GMO AD Marketing Inc. 10
広告配信?
広告
リクエスト
広告検索
広告表示
? 2020 GMO AD Marketing Inc. 11
取得した広告画像を表示
広告表示?
画像URL
メディア(媒体)
? 2020 GMO AD Marketing Inc. 12
広告配信?
広告
リクエスト
広告検索
広告表示
? 2020 GMO AD Marketing Inc. 13
広告配信システム1?
Index?
広告配信の課題?2?
高トラフィック対策?3?
分散処理?4?
まとめ?5?
? 2020 GMO AD Marketing Inc. 14
サーバ負荷 平常時?
ユーザ?
秒間5リクエスト?
まで捌ける?
? 2020 GMO AD Marketing Inc. 15
広告配信システム?
1つのWebページから
多数の広告リクエストが送信
Webページ表示するたびに
複数のリクエストが広告サーバに発
生する
? 2020 GMO AD Marketing Inc. 16
トラフィックが大量にくる?
広告配信システム?
? 2020 GMO AD Marketing Inc. 17
サーバ負荷 高負荷時?
ユーザ?
広告が返せなくなる?
? 2020 GMO AD Marketing Inc. 18
広告配信システム1?
Index?
広告配信の課題?2?
高トラフィック対策?3?
分散処理?4?
まとめ?5?
? 2020 GMO AD Marketing Inc. 19
対策1. スケールアウト?
? 2020 GMO AD Marketing Inc. 20
サーバ負荷 平常時?
ユーザ?
秒間5リクエスト?
まで捌ける?
? 2020 GMO AD Marketing Inc. 21
スケールアウト時?
ユーザ?
秒間10リクエスト?
捌けるように??
? 2020 GMO AD Marketing Inc. 22
スケールアウト?
実際、トラフィックは時間によってバラツキがある?
? 2020 GMO AD Marketing Inc. 23
サーバ追加?
管理者が?
サーバ追加?
ユーザ?
高トラフィック時には?
サーバを追加?
(自動/手動)?
? 2020 GMO AD Marketing Inc. 24
スケールアウトするために?
? 2020 GMO AD Marketing Inc. 25
ロードバランサ?
? 2020 GMO AD Marketing Inc. 26
配信サーバが1台の場合?
ユーザ?
IP: A.A.A.A
サーバのIPは1つでよい?
? 2020 GMO AD Marketing Inc. 27
ロードバランサを使った場合?
ユーザ?
ロードバランサ
代表IP: X.X.X.X
IP: A.A.A.A
IP: B.B.B.B
ロードバランサに?
代表のIPを持たせる?
? 2020 GMO AD Marketing Inc. 28
SPOF(単一障害点)対策?
ユーザ?
ロードバランサ
代表IP: X.X.X.X
IP: A.A.A.A
IP: B.B.B.B
冗長化することで?
SPOF対策になる?
? 2020 GMO AD Marketing Inc. 29
対策2. KVS?
(Key Value Store)?
? 2020 GMO AD Marketing Inc. 30
KVS?
広告リクエスト?
ユーザA?
データベース?
ユーザ情報取得?
ユーザA:
?性別: 男性(機械学習)
 ?セグメント: 車好き、30代  ?閲覧履
歴:レンタカーサイト
 ?広告表示回数:5回
 など
? 2020 GMO AD Marketing Inc. 31
KVS?
広告リクエスト?
ユーザA?
データベース?
ユーザ情報取得?
RDBMS問い合わせでは
時間がかかる
? 2020 GMO AD Marketing Inc. 32
KVSについて?
? ? の略称
? 基本的にデータ構造はキーと値のみで表現
? 単純なデータ構造かつ、検索は 指定のため、
? 性能とも高速なデータベース
? 可用性とスケーラビリティに優れる事が多い
キリン 首ながい
ぞう 鼻ながい
ウサギ 耳ながい
? 2020 GMO AD Marketing Inc. 33
KVS?
広告リクエスト?
ユーザ情報
KVS?
ユーザA?
シンプルな構造ならば
アクセスがRDBMSより高速
? 2020 GMO AD Marketing Inc. 34
スケールアウト?
広告リクエスト?
ユーザ情報
KVS 1号機?
ユーザA?
ユーザ情報
KVS 2号機?
スケールアウトすることができ、?
SPOF(単一障害点)の対策にもなる?
? 2020 GMO AD Marketing Inc. 35
広告配信システム1?
Index?
広告配信の課題?2?
高トラフィック対策?3?
分散処理?4?
まとめ?5?
? 2020 GMO AD Marketing Inc. 36
広告表示回数?
広告
何回表示された?
メディア(媒体)
広告主?
? 2020 GMO AD Marketing Inc. 37
レポート作成?
広告リクエスト, 枠A, 広告A
広告リクエスト, 枠A, 広告A
広告リクエスト, 枠B, 広告B
???
広告主?
メディア(媒体)
広告表示
アクセスログ?
? 2020 GMO AD Marketing Inc. 38
レポート作成?
広告リクエスト, 枠A, 広告A
広告リクエスト, 枠A, 広告A
広告リクエスト, 枠B, 広告B
???
アクセスログ?
DBに落とし込む必要
? 2020 GMO AD Marketing Inc. 39
レポート作成?
広告リクエスト, 枠A, 広告A
広告リクエスト, 枠A, 広告A
広告リクエスト, 枠B, 広告B
???
アクセスログ?
アクセスログが多いため
処理に時間がかかる
集計アプリケーション
何十台?
? 2020 GMO AD Marketing Inc. 40
分散処理システム?
大規模データを蓄積 集計するためのミドルウェア
最近は分散処理システムを構築せずに
Google BigQueryやAWS Redshiftを使う場合も
? 2020 GMO AD Marketing Inc. 41
レポート作成?
広告リクエスト, 枠A, 広告A
広告リクエスト, 枠A, 広告A
広告リクエスト, 枠B, 広告B
???
アクセスログ?
分散処理?
アクセスログを集計しDBへ
登録
何十台?
? 2020 GMO AD Marketing Inc. 42
レポート画面?
広告効果を測定?
広告ID 広告リクエスト数 クリック数 コンバージョン数
広告A 1000 10 1
広告B 3000 30 3
レポート参照
広告主?
? 2020 GMO AD Marketing Inc. 43
レポート作成までのまとめ?
広告リクエスト, 枠A, 広告A
広告リクエスト, 枠A, 広告A
広告リクエスト, 枠B, 広告B
???
アクセスログ?
広告リクエスト?
集計処理?
レポート作成?レポート参照?
? 2020 GMO AD Marketing Inc. 44
構成図?
? 2020 GMO AD Marketing Inc. 45
Instance Group
配信サーバ
Compute Engine
Multiple Instances
Galera Cluster
データベース
Compute Engine
Multiple Instances
AkaNe構成図
BigQuery
一般ユーザ
管理画面
Architecture: adcloud
Cloud Load
Balancing
ログ集計
Cloud Dataproc
ログ
Cloud Storage
Cloud Load
Balancing
バッチ処理サーバ
Compute Engine
KVS
Compute Engine
Instance Group
管理画面
Compute Engine
Multiple Instances
メッセージキュー
Compute Engine
配信ログコピー
DB更新通知
配信プロパティの更
新通知
ユーザ情報、クリック履
歴等の更新
ユーザ情報、クリック履
歴等の参照?更新
? 2020 GMO AD Marketing Inc. 46
GCP管理画面?
? 2020 GMO AD Marketing Inc. 47
広告配信システム1?
Index?
広告配信の課題?2?
高トラフィック対策?3?
分散処理?4?
まとめ?5?
? 2020 GMO AD Marketing Inc. 48
広告配信ではトラフィックの管理が重要?
?
?
スケールアウト、KVS、分散処理?
などで対策?
?
?

More Related Content

スケールする広告配信システムの作り方

  • 2. ? 2020 GMO AD Marketing Inc. 2 広告配信システム1? Index? 広告配信の課題?2? 高トラフィック対策?3? 分散処理?4? まとめ?5?
  • 3. ? 2020 GMO AD Marketing Inc. 3 広告配信システム1? Index? 広告配信の課題?2? 高トラフィック対策?3? 分散処理?4? まとめ?5?
  • 4. ? 2020 GMO AD Marketing Inc. 4 AkaNe(アドネットワーク)? メディア? 広告主? 広告配信 プラットフォーム
  • 5. ? 2020 GMO AD Marketing Inc. 5 広告配信? 広告 リクエスト 広告検索 広告表示
  • 6. ? 2020 GMO AD Marketing Inc. 6 広告配信? 広告検索 広告表示 広告 リクエスト
  • 7. ? 2020 GMO AD Marketing Inc. 7 広告取得用のJSタグ <script src=/slideshow/ss-236956075/236956075/"https:/広告取得用.js"> 広告リクエスト? 広告リクエスト メディア(媒体)
  • 8. ? 2020 GMO AD Marketing Inc. 8 広告配信? 広告 リクエスト 広告検索 広告表示
  • 9. ? 2020 GMO AD Marketing Inc. 9 広告検索? 広告     リクエスト情報 ?サイズ    ?メディアカテゴリ ?ユーザの好み ?etc... ターゲティングの精度に繋がる?
  • 10. ? 2020 GMO AD Marketing Inc. 10 広告配信? 広告 リクエスト 広告検索 広告表示
  • 11. ? 2020 GMO AD Marketing Inc. 11 取得した広告画像を表示 広告表示? 画像URL メディア(媒体)
  • 12. ? 2020 GMO AD Marketing Inc. 12 広告配信? 広告 リクエスト 広告検索 広告表示
  • 13. ? 2020 GMO AD Marketing Inc. 13 広告配信システム1? Index? 広告配信の課題?2? 高トラフィック対策?3? 分散処理?4? まとめ?5?
  • 14. ? 2020 GMO AD Marketing Inc. 14 サーバ負荷 平常時? ユーザ? 秒間5リクエスト? まで捌ける?
  • 15. ? 2020 GMO AD Marketing Inc. 15 広告配信システム? 1つのWebページから 多数の広告リクエストが送信 Webページ表示するたびに 複数のリクエストが広告サーバに発 生する
  • 16. ? 2020 GMO AD Marketing Inc. 16 トラフィックが大量にくる? 広告配信システム?
  • 17. ? 2020 GMO AD Marketing Inc. 17 サーバ負荷 高負荷時? ユーザ? 広告が返せなくなる?
  • 18. ? 2020 GMO AD Marketing Inc. 18 広告配信システム1? Index? 広告配信の課題?2? 高トラフィック対策?3? 分散処理?4? まとめ?5?
  • 19. ? 2020 GMO AD Marketing Inc. 19 対策1. スケールアウト?
  • 20. ? 2020 GMO AD Marketing Inc. 20 サーバ負荷 平常時? ユーザ? 秒間5リクエスト? まで捌ける?
  • 21. ? 2020 GMO AD Marketing Inc. 21 スケールアウト時? ユーザ? 秒間10リクエスト? 捌けるように??
  • 22. ? 2020 GMO AD Marketing Inc. 22 スケールアウト? 実際、トラフィックは時間によってバラツキがある?
  • 23. ? 2020 GMO AD Marketing Inc. 23 サーバ追加? 管理者が? サーバ追加? ユーザ? 高トラフィック時には? サーバを追加? (自動/手動)?
  • 24. ? 2020 GMO AD Marketing Inc. 24 スケールアウトするために?
  • 25. ? 2020 GMO AD Marketing Inc. 25 ロードバランサ?
  • 26. ? 2020 GMO AD Marketing Inc. 26 配信サーバが1台の場合? ユーザ? IP: A.A.A.A サーバのIPは1つでよい?
  • 27. ? 2020 GMO AD Marketing Inc. 27 ロードバランサを使った場合? ユーザ? ロードバランサ 代表IP: X.X.X.X IP: A.A.A.A IP: B.B.B.B ロードバランサに? 代表のIPを持たせる?
  • 28. ? 2020 GMO AD Marketing Inc. 28 SPOF(単一障害点)対策? ユーザ? ロードバランサ 代表IP: X.X.X.X IP: A.A.A.A IP: B.B.B.B 冗長化することで? SPOF対策になる?
  • 29. ? 2020 GMO AD Marketing Inc. 29 対策2. KVS? (Key Value Store)?
  • 30. ? 2020 GMO AD Marketing Inc. 30 KVS? 広告リクエスト? ユーザA? データベース? ユーザ情報取得? ユーザA: ?性別: 男性(機械学習)  ?セグメント: 車好き、30代  ?閲覧履 歴:レンタカーサイト  ?広告表示回数:5回  など
  • 31. ? 2020 GMO AD Marketing Inc. 31 KVS? 広告リクエスト? ユーザA? データベース? ユーザ情報取得? RDBMS問い合わせでは 時間がかかる
  • 32. ? 2020 GMO AD Marketing Inc. 32 KVSについて? ? ? の略称 ? 基本的にデータ構造はキーと値のみで表現 ? 単純なデータ構造かつ、検索は 指定のため、 ? 性能とも高速なデータベース ? 可用性とスケーラビリティに優れる事が多い キリン 首ながい ぞう 鼻ながい ウサギ 耳ながい
  • 33. ? 2020 GMO AD Marketing Inc. 33 KVS? 広告リクエスト? ユーザ情報 KVS? ユーザA? シンプルな構造ならば アクセスがRDBMSより高速
  • 34. ? 2020 GMO AD Marketing Inc. 34 スケールアウト? 広告リクエスト? ユーザ情報 KVS 1号機? ユーザA? ユーザ情報 KVS 2号機? スケールアウトすることができ、? SPOF(単一障害点)の対策にもなる?
  • 35. ? 2020 GMO AD Marketing Inc. 35 広告配信システム1? Index? 広告配信の課題?2? 高トラフィック対策?3? 分散処理?4? まとめ?5?
  • 36. ? 2020 GMO AD Marketing Inc. 36 広告表示回数? 広告 何回表示された? メディア(媒体) 広告主?
  • 37. ? 2020 GMO AD Marketing Inc. 37 レポート作成? 広告リクエスト, 枠A, 広告A 広告リクエスト, 枠A, 広告A 広告リクエスト, 枠B, 広告B ??? 広告主? メディア(媒体) 広告表示 アクセスログ?
  • 38. ? 2020 GMO AD Marketing Inc. 38 レポート作成? 広告リクエスト, 枠A, 広告A 広告リクエスト, 枠A, 広告A 広告リクエスト, 枠B, 広告B ??? アクセスログ? DBに落とし込む必要
  • 39. ? 2020 GMO AD Marketing Inc. 39 レポート作成? 広告リクエスト, 枠A, 広告A 広告リクエスト, 枠A, 広告A 広告リクエスト, 枠B, 広告B ??? アクセスログ? アクセスログが多いため 処理に時間がかかる 集計アプリケーション 何十台?
  • 40. ? 2020 GMO AD Marketing Inc. 40 分散処理システム? 大規模データを蓄積 集計するためのミドルウェア 最近は分散処理システムを構築せずに Google BigQueryやAWS Redshiftを使う場合も
  • 41. ? 2020 GMO AD Marketing Inc. 41 レポート作成? 広告リクエスト, 枠A, 広告A 広告リクエスト, 枠A, 広告A 広告リクエスト, 枠B, 広告B ??? アクセスログ? 分散処理? アクセスログを集計しDBへ 登録 何十台?
  • 42. ? 2020 GMO AD Marketing Inc. 42 レポート画面? 広告効果を測定? 広告ID 広告リクエスト数 クリック数 コンバージョン数 広告A 1000 10 1 広告B 3000 30 3 レポート参照 広告主?
  • 43. ? 2020 GMO AD Marketing Inc. 43 レポート作成までのまとめ? 広告リクエスト, 枠A, 広告A 広告リクエスト, 枠A, 広告A 広告リクエスト, 枠B, 広告B ??? アクセスログ? 広告リクエスト? 集計処理? レポート作成?レポート参照?
  • 44. ? 2020 GMO AD Marketing Inc. 44 構成図?
  • 45. ? 2020 GMO AD Marketing Inc. 45 Instance Group 配信サーバ Compute Engine Multiple Instances Galera Cluster データベース Compute Engine Multiple Instances AkaNe構成図 BigQuery 一般ユーザ 管理画面 Architecture: adcloud Cloud Load Balancing ログ集計 Cloud Dataproc ログ Cloud Storage Cloud Load Balancing バッチ処理サーバ Compute Engine KVS Compute Engine Instance Group 管理画面 Compute Engine Multiple Instances メッセージキュー Compute Engine 配信ログコピー DB更新通知 配信プロパティの更 新通知 ユーザ情報、クリック履 歴等の更新 ユーザ情報、クリック履 歴等の参照?更新
  • 46. ? 2020 GMO AD Marketing Inc. 46 GCP管理画面?
  • 47. ? 2020 GMO AD Marketing Inc. 47 広告配信システム1? Index? 広告配信の課題?2? 高トラフィック対策?3? 分散処理?4? まとめ?5?
  • 48. ? 2020 GMO AD Marketing Inc. 48 広告配信ではトラフィックの管理が重要? ? ? スケールアウト、KVS、分散処理? などで対策? ? ?