Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
How to face the load
Search
Saki
March 27, 2022
Programming
290
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
How to face the load
学生団体Volareさんとの勉強会(
https://volare.connpass.com/event/238578/
)で発表した資料です
Saki
March 27, 2022
Other Decks in Programming
See All in Programming
PHP Application における Kubernetes 内 gRPC 通信
ganchiku
0
500
地域 SRE コミュニティ最前線 - ホンマでっかSRE勉強会
tk3fftk
0
250
AI時代のPHPer生存戦略 ~「言語、もうなんでもよくない?」に本気で向き合う~
vivion
0
110
ソフトウェア設計に溶けるインフラ ― AWS CDK のインフラ認識論
konokenj
2
570
ビデオ通話が繋がる0.2秒で何が起きているのか
supurazako
2
150
SLOをサービス品質の共通言語にするために 取り組んできたこと
wakana0222
0
520
言語を使う側から、作る側へ。 自作 Lisp で得た新たな気づき。
andpad
0
130
なぜ関数型プログラミングで「型」と「証明」が語られるのか #fp_matsuri
kajitack
3
980
はてなアカウント基盤 State of the Union
cockscomb
1
1.3k
『コードを書く以外の』エンジニアリング〜課金基盤移行プロジェクト推進のためのTips4選
yuriko1211
0
510
鹿野さんに聞く!『TypeScriptコードレシピ集』で磨く実践力
tonkotsuboy_com
4
1.1k
任せる範囲はこう広がった / How the Scope of AI Delegation Has Expanded
nrslib
1
260
Featured
See All Featured
Joys of Absence: A Defence of Solitary Play
codingconduct
1
410
Faster Mobile Websites
deanohume
310
32k
Are puppies a ranking factor?
jonoalderson
1
3.7k
The untapped power of vector embeddings
frankvandijk
2
1.8k
For a Future-Friendly Web
brad_frost
183
10k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
280
HDC tutorial
michielstock
2
750
Rails Girls Zürich Keynote
gr2m
96
14k
Google's AI Overviews - The New Search
badams
0
1.1k
The Pragmatic Product Professional
lauravandoore
37
7.4k
Odyssey Design
rkendrick25
PRO
2
730
Fireside Chat
paigeccino
42
4k
Transcript
大規模な広告配信の仕組み pixiv 広告のシステム例 pixiv Inc. saki 2022.03.27
2 Profile • saki (@yensaki) • 経歴 ◦ - 2017:
カカクコム(食べログ) ◦ 2017 -: ピクシブ ▪ 2017 - 2019: pixivFACTORY ▪ 2019 - : 広告 • 好きな技術 ◦ Ruby on Rails ◦ Kubernetes saki ピクシブ株式会社 アドプラットフォーム事業部
3 発表の流れ 1. 広告の概要 2. インフラ構成 3. アプリケーション構成 4. 重要ポイント
4 1.広告の概要
5 ピクシブの広告規模 リクエスト数 • 月間500億件…超 ◦ 年々増えてる 広告の リクエスト種類とは •
広告取得 • rendering通知 • クリック • コンバージョンなど https://www.wantedly.com/companies/pixiv/post_articles/283162
広告配信のフロー 6 広告配信サーバーから JavaScriptを取得 &実行して広告を描画
広告配信のフロー: 広告リクエスト 7
広告配信のフロー: rendering完了通知 8 impressionとして受領 (本当は画面内に表示されたことも計測するなどもう少し考えることはある )
広告配信のフロー: クリック遷移 9
10 データ登録やレポートなどのビジネスを支える管理画面 裏側には管理画面
11 これから紹介するもの 移行途中のものもあるので、実際の構成の中から クラウドを中心とした構成を紹介します
12 2. インフラ構成
13 アーキテクチャ
14 GKE(Google Kubernetes Engine) 広告配信サーバー・管理画面はGKE上
15 GKE(Google Kubernetes Engine) 「サーバーレス化できたほうが楽では?」 → GKE(GCE)のEgressはCloud Runより省費用 広告配信の特徴によるもの •
リクエスト数が多い • リクエストあたりのサイズが小さい
16 pximg • pixivのイラスト配信に使われているもの ◦ 画像変換と高速配信を両立できる • なぜCDNではない? ◦ 広告用画像の要件を満たしつつ
費用減が両立可能 ◦ 管理コストもほぼ増えない https://www.sakura.ad.jp/services/imageflux/image/ 使ってみたい方はこちらをご検討ください
17 配信ログ集積 • 配信サーバーからCloud Loggingに送信 ◦ BigQueryにexport • BigQuery上で加工してDBにレポート記録 •
BIツールでの分析にも活用 • 蓄積データ ◦ 1日100GB超
18 3.アプリケーション構成
19 広告配信サーバー • Golang + echo • Pod: ◦ 70〜200(移行途中の分も含む)
• レイテンシ: ◦ 〜20ms • リクエスト処理: ◦ 最大300万件/min
20 管理画面 • Ruby on Rails ◦ CRUDをベースにした管理画面 ◦ 社内にはRailsサービスが多い
• Pod: 2件前後
21 バッチ • Argo Workflow • Rails rakeタスクがメイン • DB,
Redis, BigQueryに対してアクセス・更新
22 4. 重要ポイント
23 データ反映 • 配信サーバーはDBを参照しない ◦ DBクエリでは遅くなるため ◦ その分、反映時間は0秒ではない ▪ バッチ実行間隔とキャッシュクリアに依存
24 シンプル化 • 配信サーバーは責務に集中 ◦ 高速な大量配信 • そのために他の要素は完全分離 ◦ 管理画面
◦ CTR予測 ◦ ログ集計
25 まとめ
26 • 各サービスに責務を分けてシンプル化 • 分ける際は遅延反映や事前処理を検討 まとめ ※このシステム構成は私だけでなく、昔のチーム &今のチームで考えられたものです