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
フルスクラッチで書いたアドサーバの開発・運用史
Search
Satoshi
September 25, 2014
Technology
2
4.3k
フルスクラッチで書いたアドサーバの開発・運用史
アドサーバの開発・運用で得た知見について説明しています。
Satoshi
September 25, 2014
Tweet
Share
More Decks by Satoshi
See All by Satoshi
高速な広告配信サーバの作り方のコツ
satoshi03
3
460
スケールしない広告サーバの作り方
satoshi03
0
220
Gunosy AdServerのデータ周りの話
satoshi03
2
2.8k
Gunosy.go #2 container
satoshi03
1
60
Gunosy Go Lang Study #6 net net/http net/url
satoshi03
0
140
Other Decks in Technology
See All in Technology
Snowflakeの開発・運用コストをApache Icebergで効率化しよう!~機能と活用例のご紹介~
sagara
1
380
プロダクトエンジニア構想を立ち上げ、プロダクト志向な組織への成長を続けている話 / grow into a product-oriented organization
hiro_torii
1
350
抽象化をするということ - 具体と抽象の往復を身につける / Abstraction and concretization
soudai
27
15k
CDKのコードを書く環境を作りました with Amazon Q
nobuhitomorioka
1
160
データマネジメントのトレードオフに立ち向かう
ikkimiyazaki
6
1.2k
白金鉱業Meetup Vol.17_あるデータサイエンティストのデータマネジメントとの向き合い方
brainpadpr
7
1k
php-conference-nagoya-2025
fuwasegu
0
140
Goで作って学ぶWebSocket
ryuichi1208
3
2.7k
わたしのOSS活動
kazupon
2
340
Raycast AI APIを使ってちょっと便利な拡張機能を作ってみた / created-a-handy-extension-using-the-raycast-ai-api
kawamataryo
0
210
実は強い 非ViTな画像認識モデル
tattaka
2
1.2k
Reading Code Is Harder Than Writing It
trishagee
2
120
Featured
See All Featured
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
59k
Rails Girls Zürich Keynote
gr2m
94
13k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.1k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
40
2k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
160
15k
A designer walks into a library…
pauljervisheath
205
24k
Building an army of robots
kneath
303
45k
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
Docker and Python
trallard
44
3.3k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
356
29k
Transcript
フルスクラッチで書いた アドサーバの開発運⽤用史 株式会社Gunosy 2014 年年 9⽉月
©Gunosy Inc. 印南聡志(いんなみ さとし) アドエンジニア 2014年年6⽉月⼊入社(4ヶ⽉月⽬目) ⾔言語 l Java l Python
Git Hubアカウント l satoshi03 ⾃自⼰己紹介
©Gunosy Inc. 業務 • 「広告による収益を最⼤大化する」 • AdServerの開発・運⽤用 • 配信周りの開発 •
広告推薦ロジック開発 • 広告枠の開発 • ログ集計・分析 • チーム⼈人数 • 3 ~∼ 4⼈人 アドチームとは
©Gunosy Inc. 罠にかかって学んだ広告事業で⼤大切切な2つのこと 本⽇日話したい内容
©Gunosy Inc. Gunosyの広告事業 ⾃自社製のAdServerを開発・運⽤用 Gunosy Ads l ⾃自社メディア(Gunosyアプリ)に広告配信 Gunosy Ad
network l 他社メディアに広告配信 今回のお話
©Gunosy Inc. 広告事業で⼤大切切なこと 広告による収益の最⼤大化 良良い広告を⼤大量量に配信すること
©Gunosy Inc. 良良い広告とは? メディア (Gunosy) ・ ユーザのクリック率(CTR)が高い ・
広告の単価が高い 第一の罠 単価の高い広告をクリックさせればいい
©Gunosy Inc. メディア視点での収益⾄至上主義の罠 メディアの収益性を上げたい!! とにかくクリックされやすい広告を出す クリック率率率が上昇しメディアの収益が増加 しかし、、、
©Gunosy Inc. しかし、、 次第に収益が低下
©Gunosy Inc. このとき起きていること ユーザ メディア (Gunosy) 広告主 ・ ユーザのクリック率が高い
・ 広告の単価が高い ・ ニーズにマッチしていない ・ ストレスが多い ・ ユーザのコンバージョン率 が低い • ストレス増加によるユーザの離脱 • 効果があわないことによる広告主の離脱
©Gunosy Inc. ⼤大切切なこと:その1 ユーザ メディア (Gunosy) 広告主 ・ ユーザのクリック率が高い
・ 広告の単価が高い ・ ニーズにマッチしている ・ ストレスが少ない ・ ユーザのコンバージョン率 が高い 良い広告の定義はユーザ・広告主・メディアによって異なる ユーザ・広告主・メディア全ての利益を最大化!「三方良し」
©Gunosy Inc. 【参考】良良い広告を判断するための指標 DAU (Daily Active User) 1⽇日のアクティブユーザ数 CVR (ConveRsion
Rate) クリックに対するコンバージョンの割合 ユーザ 広告主 メディア eCPM (effec2ve Cost Per Mill) 1000回インプレション(表示)あたりの収益 CTR (Click Through Rate) インプレッション(表示)に対するクリックの割合 CPA (Cost Per Acquisi2on) 1コンバージョンにかかったコスト
©Gunosy Inc. 広告事業で⼤大切切なこと 広告による収益の最⼤大化 良良い広告を⼤大量量に配信すること
©Gunosy Inc. ⼤大量量に配信するとは? • 配信にレイテンシを出さない(< 50msec) • 表⽰示枠(在庫)を増やす • (もちろん)⽌止まらない
©Gunosy Inc. アクセス数の急激な増加 5⽉月から4ヶ⽉月で5倍以上のアクセス数の増加 数千万リクエスト/ 日 数億リクエスト/日 5月 9月
©Gunosy Inc. アクセス数の時間ごとの急激な増加 ピーク時には通常時の3倍〜~5倍のアクセス 21:00 17:00 12:00
8:00 リクエスト数 時間
©Gunosy Inc. 第二の罠 サーバを横に並べればなんとかなる!
©Gunosy Inc. サーバ台数を20台に、、 _⼈人⼈人⼈人⼈人⼈人⼈人_ > レイテン⽒氏来訪 <  ̄Y^Y^Y^Y^Y ̄
©Gunosy Inc. そのとき何がおこっていたか 問題:R/WをするRedisにアクセスが集中 Write/Bulk Read待ちが発⽣生し遅延が発⽣生 ・・・・・ Elastic Load Balancing
EC2 instance Redis on EC2 instance Redis Read Replica
©Gunosy Inc. 対策 ・・・・・ Elastic Load Balancing EC2 instance Redis
on EC2 instance Redis Read Replica Amazon S3 bucket 配信側でRedisのReadをファイルで処理 s3からダウンロードして各インスタンスでロード レイテンシ が50msec以内に!!
©Gunosy Inc. ⼤大切切なこと:その2 たとえキャッシュでも1箇所を参照するような構成にしない スケールアウトの過程で必ずボトルネックに
©Gunosy Inc. まとめ 罠にかかって学んだ広告事業で⼤大切切な2つのこと 1. ユーザ・広告主・メディア全ての利利益を最⼤大化 2. キャッシュでも1箇所を参照するような構成にしない
©Gunosy Inc. We are hiring!!! 良良い広告を⼤大量量に配信する仕組みを 作りたいエンジニアWanted!!