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
LINEセグメント配信基盤について / LINE Message Delivery System
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
snagasawa
August 27, 2020
Programming
3
11k
LINEセグメント配信基盤について / LINE Message Delivery System
https://zozotech-inc.connpass.com/event/183818/
で発表したスライドです
snagasawa
August 27, 2020
Tweet
Share
More Decks by snagasawa
See All by snagasawa
Ruby on AWS Lambdaでファッションチェックアプリのランキングページを作ってみた
snagasawa
2
1.4k
Other Decks in Programming
See All in Programming
AI Assistants for YourAngular Solutions @Angular Graz, March 2026
manfredsteyer
PRO
0
110
ポーリング処理廃止によるイベント駆動アーキテクチャへの移行
seitarof
3
1.3k
ファインチューニングせずメインコンペを解く方法
pokutuna
0
190
Redox OS でのネームスペース管理と chroot の実現
isanethen
0
450
Geminiをパートナーに神社DXシステムを個人開発した話(いなめぐDX 開発振り返り)
fujiba
0
110
20260315 AWSなんもわからん🥲
chiilog
2
180
Claude Codeログ基盤の構築
giginet
PRO
7
3.7k
コードレビューをしない選択 #でぃーぷらすトウキョウ
kajitack
3
1.2k
「効かない!」依存性注入(DI)を活用したAPI Platformのエラーハンドリング奮闘記
mkmk884
0
250
AIコードレビューの導入・運用と AI駆動開発における「AI4QA」の取り組みについて
hagevvashi
0
560
What Spring Developers Should Know About Jakarta EE
ivargrimstad
0
680
PHPで TLSのプロトコルを実装してみる
higaki_program
0
490
Featured
See All Featured
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.1k
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.1k
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
0
190
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
150
Designing for Timeless Needs
cassininazir
0
170
Art, The Web, and Tiny UX
lynnandtonic
304
21k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
180
A Tale of Four Properties
chriscoyier
163
24k
Java REST API Framework Comparison - PWX 2021
mraible
34
9.2k
Producing Creativity
orderedlist
PRO
348
40k
A better future with KSS
kneath
240
18k
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