Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
広告ログのリアルタイム集計とその活用 / Realtime Ad log aggregati...
Search
wata
July 28, 2017
Technology
7k
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
広告ログのリアルタイム集計とその活用 / Realtime Ad log aggregation and utilization
Cookpad Tech Kitchen #9
https://cookpad.connpass.com/event/60831/
wata
July 28, 2017
More Decks by wata
See All by wata
クックパッド動画事業開発のチャレンジ / CookpadTV challenge
wata
1
2.4k
クックパッドの動画事業での AWS AppSync 活用事例 / Practical use of AWS AppSync by Cookpad
wata
17
12k
Other Decks in Technology
See All in Technology
データ_AIの事業の勝敗をわけるもの
nek0128
1
470
AI de Idea
kawaguti
PRO
2
130
Claude Codeを「使うほど育つ」AI秘書にするノウハウ
minorun365
PRO
33
30k
GoのInterface内部構造から学ぶ!最高パフォーマンスを出すコード設計
yappli_developers
1
250
え、こんなに早く改修できるの?──新人エンジニアとスクラムマスターの2人が語る、AI×アジャイル開発の現場
ysasago
2
650
AIで社員の自主発信に広報目線を組み込む
_mossann_t
0
140
ScotSecure West 2026 - Glasgow
raybugg
0
150
Issue 駆動でスペシャリストの意図を届ける、AI 実装のアクセシビリティ向上
thkt
0
130
`t*(42&t>>10)`だけで音楽が鳴る、Swiftで実装するBytebeat / iOSDC Japan 2026
yutailang0119
0
130
白金鉱業Meetup Vol.25 アウトカムが二値のデータに対するCausal Impact
brainpadpr
0
280
山手線を徒歩で一周してわかった、 位置情報アプリは「足」が最強のデバッガー
hinakko
0
180
ソフトウェアDNAとクラウドエージェントのススメ
cloudace
0
120
Featured
See All Featured
Speed Design
sergeychernyshev
33
2.1k
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
340
Building a Scalable Design System with Sketch
lauravandoore
464
34k
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
830
Navigating Team Friction
lara
192
16k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
500
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
18k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
500
Design in an AI World
tapps
1
330
The Pragmatic Product Professional
lauravandoore
37
7.4k
Faster Mobile Websites
deanohume
310
32k
Transcript
ࠂϩάͷϦΞϧλΠϜूܭͱ ͦͷ׆༻ 2017-07-26 Cookpad Tech Kitchen #9 wata
自己紹介 • 渡辺 慎也 • マーケティングプロダクト開発部 • 広告配信基盤周りの整備、開発保守 • やりたいこと
• Rails でアプリを書くよりコンテンツ配信に関わ る、ミドルウェア、インフラ、プロトコルのアー キテクチャを考えることや、改善、安定運用
Agenda • サービス規模 • アーキテクチャ ‣ 以前 ‣ Lambda Architecture
‣ 変更後 • 活用方法について
サービス規模 • インスタンス • c3.xlarge, c4.xlarge で構成 • 5 〜
18 台(Auto Scaling) • ピーク時同時リクエスト数 • 2,000 req/s 以上 ※2017年7月現在
アーキテクチャ
アーキテクチャ HTML レンダリング時に JavaScript で広告配信サーバに リクエストを投げて表示する。 配信 サーバ impression log
click log 302 redirect JSON Ajax
アーキテクチャ reverse proxy app mysql memcached fluentd queue Amazon
Redshift #SJDPMBHF 4USFBNJOH-PBE backup batch %8) Amazon DynamoDB
アーキテクチャ reverse proxy app mysql memcached fluentd queue Amazon
Redshift #SJDPMBHF 4USFBNJOH-PBE backup batch %8) Amazon DynamoDB ログデータがバッチ集計終わって mysql に入るまでに 1 時間ぐらいのラグがあった
もっと早くログが出ているか 確認したい!
そこで
Lambda Architecture
Lambda Architecture 出典元:http://lambda-architecture.net/
Lambda Architecture 出典元:http://lambda-architecture.net/ 既存のバッチ処理集計がここにあたる
Lambda Architecture 出典元:http://lambda-architecture.net/ それに speed layer を追加
アーキテクチャ app mysql memcached fluentd queue Amazon Redshift #SJDPMBHF
4USFBNJOH-PBE backup batch DWH Amazon DynamoDB reverse proxy
アーキテクチャ app mysql memcached fluentd queue Amazon Redshift #SJDPMBHF
4USFBNJOH-PBE backup batch DWH Amazon DynamoDB reverse proxy ここに
アーキテクチャ app mysql memcached fluentd queue Amazon Redshift #SJDPMBHF
4USFBNJOH-PBE backup batch DWH Amazon Kinesis Streams Lambda function Amazon DynamoDB speed layer Amazon DynamoDB reverse proxy
アーキテクチャ app mysql memcached fluentd queue Amazon Redshift #SJDPMBHF
4USFBNJOH-PBE backup batch DWH Amazon Kinesis Streams Lambda function Amazon DynamoDB speed layer Amazon DynamoDB reverse proxy speed layer を追加
None
Kinesis Streams から Lambda で DynamoDB に書き込む
DynamoDB Streams で 次の Lambda を起動させ 1 時間単位、1 日単位で集計 (処理的には
ADD)
日単位の集計は 1 時間単位で集計した データを利用
950 executions/min 75 〜 125ms 225 executions/min 190 〜 425ms
2900 executions/min 0.2 〜 1.0s
活用方法について
活用方法について • 集計データの確認方法 ‣ batch layer の集計データは mysql を参照 ‣
speed layer の集計データは DynamoDB を参照 • 使い分け ‣ batch layer はレポーティング等の正式なデータと して利用 ‣ speed layer はあくまでも速報値や確認の為に利用
活用方法について • 異常検知(耐障害性) • ログの流量変化によって異常検知 • 配信制御 • 直近のデータを考慮して、高精度で制御 •
在庫予測 • 直近のデータを考慮して、予測値を最適化
異常検知(耐障害性) • layer で突き合わせをしてズレを検知 ‣ batch layer の集計と、speed layer の集計を突
き合わせて、大きなズレがある場合は異常とし てエンジニアに通知する • 冗長化 ‣ 別の集計方法(完全に別ではないが)をするこ とで、DynamoDB または Redshift が落ちてい ても完全にログ集計が止まることはない
配信制御 • インプレッションの出し方が単純には いかない商品がある • 例えば 500 インプレッションを 1 週
間で出す場合はなるべく平準化する必 要がある
配信制御
配信制御
これでは駄目で
配信制御
配信制御
平準化する
配信制御 • 出しすぎてもいけないし、期間で平準 化する必要がある
在庫予測 • 在庫が余った場合に、別の商品を掲出 させたいことがある。 • その場合に人手で配信設定をせずとも 直近のデータに基いて掲出量を変更す る。
まとめ • batch layer だけでなく speed layer も導入、活用することで ‣ 掲出確認が迅速に行えるようになった
‣ 在庫の無駄を減らすことが出来る ‣ 2 layer で集計することで、異常検知可 能
ຖͷྉཧΛָ͠Έʹ 5IBOLZPV