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
LINEセグメント配信基盤について / LINE Message Delivery System
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
snagasawa
August 27, 2020
Programming
11k
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
LINEセグメント配信基盤について / LINE Message Delivery System
https://zozotech-inc.connpass.com/event/183818/
で発表したスライドです
snagasawa
August 27, 2020
More Decks by snagasawa
See All by snagasawa
Ruby on AWS Lambdaでファッションチェックアプリのランキングページを作ってみた
snagasawa
2
1.5k
Other Decks in Programming
See All in Programming
モデルのリファクタリングが難しいと思ったら、そもそも複雑だったのはビジネス仕様だった ? / is-the-business-domain-the-real-complexity
hatsu38
0
420
iOS 27でニュースアプリはどう変わる!? 〜日経電子版の新機能対応と、開発事例から〜
lynnswap
7
13k
wkhtmltopdfの次どうするか問題2026
willnet
2
1.8k
Intent as Code
shoppingjaws
6
1.1k
[ハンズオン]AIへの指示だけで「五目並べ」を作ってみよう
satoshi256kbyte
1
250
テストを司るデーモンに会いに行く 〜隔離した仮想マシンでテストを通すまで〜
h1d3mun3
1
580
Are APIs Still Relevant in the AI Era?
soyuka
0
330
半永久的に提供し続けられるプライベートクラウドを目指して ― 利用者の認知負荷を抑えるAPI抽象化とハードウェア世代交代の基盤設計
tomokon
0
130
更なる可用性を求めて、5年間運用したKotlinのアプリケーションをGoでリプレイスする話
ken_tunc
0
390
Omarchy Tokyo やると聞いて UMPC 買ってセットアップしてきた
mtsmfm
0
170
難しいけど、読めた。- OSSの入口に立った話。
sts11142
0
130
thread_parallel_with_free-threaded_Python_and_NumPy.pdf
riku_sakamoto
0
360
Featured
See All Featured
Designing Powerful Visuals for Engaging Learning
tmiket
1
580
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
440
Making the Leap to Tech Lead
cromwellryan
135
10k
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
63
46k
The Invisible Side of Design
smashingmag
301
52k
Being A Developer After 40
akosma
91
590k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
680
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.3k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.9k
It's Worth the Effort
3n
188
29k
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
5
740
Leo the Paperboy
mayatellez
10
2.3k
Transcript
LINEセグメント配信基盤について 株式会社ZOZOテクノロジーズ ECプラットフォーム部 MAアプリケーションチーム 長澤 修平 Copyright © ZOZO Technologies,
Inc.
© ZOZO Technologies, Inc. 株式会社ZOZOテクノロジーズ ECプラットフォーム部 MAアプリケーションチーム 長澤 修平 •
2019年4月中途入社 • 前職では広告代理店でBtoBのスマホアプリ用の マーケティングツールを開発 • サーバーサイドを中心に色々 2
© ZOZO Technologies, Inc. アジェンダ • LINEセグメント配信基盤とは • 開発の動機 •
管理画面での配信予約のフロー • アーキテクチャ(メッセージ配信) • アーキテクチャ(配信ログ/クリックログ) • アーキテクチャの要所の詳細説明 • 現在の課題 • まとめ 3
© ZOZO Technologies, Inc. LINEセグメント配信基盤とは • LINE Messaging APIを利用したメッセージ配信基盤 •
ツール名: LINE Friendship Manager(通称LFM) • LINEのZOZOTOWN公式アカウントの LINE友だちにメッセージを配信できる 4
© ZOZO Technologies, Inc. 5
© ZOZO Technologies, Inc. 開発の動機 • LFM以前 ◦ LINE Official
Account Managerという公式ツールから配信していた ◦ セグメントを切らずにLINE友だち全員に一斉配信のみ • LFM ◦ BigQueryとの連携で社内データを活用したセグメント配信 ◦ セグメント配信によるターゲット最適化とコスト最適化 6
© ZOZO Technologies, Inc. 管理画面での配信予約のフロー 1. コンテンツ登録 2. セグメント登録 3.
キャンペーンの予約 7
© ZOZO Technologies, Inc. コンテンツ登録 8
© ZOZO Technologies, Inc. 9
© ZOZO Technologies, Inc. 10
© ZOZO Technologies, Inc. セグメント登録 11
© ZOZO Technologies, Inc. キャンペーン 登録 12
© ZOZO Technologies, Inc. アーキテクチャ(メッセージ配信) ①予約確認 ②コンテンツ取得 ③セグメント抽出 ④メッセージpublish ⑤Functions起動
⑥重複配信確認 ⑦APIトークン取得 ⑧APIリクエスト ⑨配信ステータス更新 13
© ZOZO Technologies, Inc. アーキテクチャ(配信ログ/クリックログ) 14 ①APIリクエスト ②ログpublish ③ログ取得 ④重複削除
& insert ⑤クリックログ蓄積 ⑥ログエクスポート
© ZOZO Technologies, Inc. Pub/Sub TopicとCloud Functionsの並列化 • スループット向上のために10並列 •
300万requestで1時間を超過するぐらい • LINE Messaging APIのリクエスト上限の都合でこれ以上あげる予定はない 15
© ZOZO Technologies, Inc. Pub/Subの重複削除 • Cloud Pub/Subはat least onceなので2回配信されることがある
• メッセージ配信 ◦ 配信前にDatastoreで重複チェック ◦ 配信成功後にDatastoreに書き込み • 配信ログ ◦ Dataflowのtemplateの「Pub/Sub Topic To BigQuery」で重複削除 16
© ZOZO Technologies, Inc. 配信リトライ① • Cloud Functionsで起こるエラー ◦ Cloud
Datastoreの書き込み上限1秒間1回の超過 ▪ Cloud Firestoreにアップグレードすれば解消されるが未対応 ◦ 503 Transport closed, 503 Socket closed など ◦ LINE Messaging APIのリクエスト上限超過 ◦ そのほか原因不明のエラー • Pythonのretryパッケージを使っても依然として一部が失敗する • 配信失敗率 0.1~1.0% 17
© ZOZO Technologies, Inc. 配信リトライ② • BigQueryのテーブルの差分からのリトライ ◦ 差分抽出はEXCEPT DISTINCT句
• 配信失敗率 0.1~1.0% ➡ ほぼ0.0001%未満(100万人中100以下) 18 ①セグメントを 一時テーブルに保存 ②配信 ③配信ログ保存 ④配信成功/失敗判定 ⑤差分抽出 ⑥リトライ
© ZOZO Technologies, Inc. publish中断 • Pub/Sub Topicへのpublish中断 ◦ publishに最大1時間前後かかる
◦ publish中にリリースすると中断 ◦ Out Of Memoryによりpublish中のプロセスが死に、中断したこともある ▪ 配信前のセグメント抽出でメモリ消費率が高くなるため 19
© ZOZO Technologies, Inc. publish中断の解決策 • BigQuery ➡ Storage ➡
Dataflowバッチ ➡ Pub/Sub Topic を検討中 20
© ZOZO Technologies, Inc. まとめ • 管理画面での配信予約のフロー • アーキテクチャの紹介 ◦
Pub/Sub TopicとCloud Functionsの並列化 ◦ Pub/Subの重複削除 ◦ Cloud Functionsのリトライ 21
None