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
広告ログのリアルタイム集計とその活用 / Realtime Ad log aggregati...
Search
wata
July 28, 2017
Technology
2
6.8k
広告ログのリアルタイム集計とその活用 / Realtime Ad log aggregation and utilization
Cookpad Tech Kitchen #9
https://cookpad.connpass.com/event/60831/
wata
July 28, 2017
Tweet
Share
More Decks by wata
See All by wata
クックパッド動画事業開発のチャレンジ / CookpadTV challenge
wata
1
2.3k
クックパッドの動画事業での AWS AppSync 活用事例 / Practical use of AWS AppSync by Cookpad
wata
17
12k
Other Decks in Technology
See All in Technology
Amazon Qで2Dゲームを作成してみた
siromi
0
160
MCPサーバーを活用したAWSコスト管理
arie0703
0
100
オブザーバビリティ文化を組織に浸透させるには / install observability culture
mackerelio
0
150
Mackerel in さくらのクラウド
cubicdaiya
1
120
「Roblox」の開発環境とその効率化 ~DAU9700万人超の巨大プラットフォームの開発 事始め~
keitatanji
0
140
九州の人に知ってもらいたいGISスポット / gis spot in kyushu 2025
sakaik
0
180
メルカリIBIS:AIが拓く次世代インシデント対応
0gm
2
400
Amazon Inspector コードセキュリティで手軽に実現するシフトレフト
maimyyym
0
130
ファッションコーディネートアプリ「WEAR」における、Vertex AI Vector Searchを利用したレコメンド機能の開発・運用で得られたノウハウの紹介
zozotech
PRO
0
570
Foundation Model × VisionKit で実現するローカル OCR
sansantech
PRO
1
400
AIに頼りすぎない新人育成術
cuebic9bic
3
320
Nx × AI によるモノレポ活用 〜コードジェネレーター編〜
puku0x
0
760
Featured
See All Featured
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
1.3k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
53
2.9k
How to Ace a Technical Interview
jacobian
278
23k
Producing Creativity
orderedlist
PRO
347
40k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
3.1k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
47
9.6k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
60k
Site-Speed That Sticks
csswizardry
10
770
Six Lessons from altMBA
skipperchong
28
4k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Become a Pro
speakerdeck
PRO
29
5.5k
Raft: Consensus for Rubyists
vanstee
140
7.1k
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