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
Cookpad Tech Kitchen #15
Search
osadake212
March 29, 2018
Technology
3
6k
Cookpad Tech Kitchen #15
osadake212
March 29, 2018
Tweet
Share
More Decks by osadake212
See All by osadake212
cookpadLive 短期間で行うサービス開発術
osadake212
0
2k
App Store/Google Play App内課金の実装 Tips 3つ
osadake212
0
500
cookpadTV のコメント配信における AppSync の導入事例
osadake212
4
1.6k
Other Decks in Technology
See All in Technology
だいたい分かった気になる 『SREの知識地図』 / introduction-to-sre-knowledge-map-book
katsuhisa91
PRO
3
1.2k
Okta Identity Governanceで実現する最小権限の原則 / Implementing the Principle of Least Privilege with Okta Identity Governance
tatsumin39
0
160
All About Sansan – for New Global Engineers
sansan33
PRO
1
1.2k
Wasmの気になる最新情報
askua
0
180
NLPコロキウム20251022_超効率化への挑戦: LLM 1bit量子化のロードマップ
yumaichikawa
1
180
Sansan Engineering Unit 紹介資料
sansan33
PRO
1
3k
アウトプットから始めるOSSコントリビューション 〜eslint-plugin-vueの場合〜 #vuefes
bengo4com
3
200
難しいセキュリティ用語をわかりやすくしてみた
yuta3110
0
360
ソースを読むプロセスの例
sat
PRO
15
9.8k
MCP ✖️ Apps SDKを触ってみた
hisuzuya
0
290
CNCFの視点で捉えるPlatform Engineering - 最新動向と展望 / Platform Engineering from the CNCF Perspective
hhiroshell
0
130
ハノーファーメッセ2025で見た生成AI活用ユースケース.pdf
hamadakoji
0
380
Featured
See All Featured
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
48
9.7k
Building Adaptive Systems
keathley
44
2.8k
The World Runs on Bad Software
bkeepers
PRO
72
11k
Build your cross-platform service in a week with App Engine
jlugia
232
18k
Thoughts on Productivity
jonyablonski
70
4.9k
KATA
mclloyd
PRO
32
15k
The Straight Up "How To Draw Better" Workshop
denniskardys
238
140k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
140
34k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
46
7.7k
Art, The Web, and Tiny UX
lynnandtonic
303
21k
Navigating Team Friction
lara
190
15k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
10
880
Transcript
cookpadTVのライブ配信の裏側 Cookpad Tech Kitchen #15 2018/03/28
• 長田 卓哉 おさだたくや • https://github.com/osadake212 • 2015年10月クックパッド入社 • 広告事業と動画事業の開発・運用を担当
• エンジニア歴 ◦ 2013〜 Android ◦ 2015〜 Web (Ruby, Go) 自己紹介
アジェンダ • cookpadTV • サービス構成 ◦ 全体 ◦ AWS Elemental
MediaLive / AWS Elemental MediaStore ◦ メッセージサーバー
cookpadTV
cookpadTV • 料理家や有名人と一緒に料理ができる • 分かりづらいポイントをその場で質問で き、双方向コミュニケーションができる ◦ コメントで質問 ◦ ハートで盛り上げ
• その場でレシピを確認でき、料理の工程 が分かりやすい クッキングLIVEアプリ
サービス構成
None
LIVE配信 コメント/ハートAPI
LIVE配信
AWS Elemental MediaLive / AWS Elemental MediaStore • MediaLiveがRTMPで映像を受け取ってHLS形式に出力 •
Security Groupを設定できる • LIVEデータはMediaStoreへ ArchiveデータはS3へ出力
AWS Elemental MediaLive / AWS Elemental MediaStore Security GroupはInput作成時に固定され、後から編集することができない •
Input作成時に撮影場所が決まっていない • 場所が決まっても撮影当日までIPアドレスが分からない Problem Why?
AWS Elemental MediaLive / AWS Elemental MediaStore • Inputの前段にhaproxyを配置し、そのSecurity Groupを動的に設定できるように
した • InputごとにIPアドレスが変わるので、管理画面でボタンを押すと 設定をいい感じにできるようにした
AWS Elemental MediaLive / AWS Elemental MediaStore Security GroupはInput作成時に固定され、後から編集することができない •
Input作成時に撮影場所が決まっていない • 場所が決まっても撮影当日までIPアドレスが分からない Problem Why?
AWS Elemental MediaLive / AWS Elemental MediaStore Security GroupはInput作成時に固定され、後から編集することができない •
Input作成時に撮影場所が決まっていない • 場所が決まっても撮影当日までIPアドレスが分からない Problem Why? 2018/03/21 から編集できるようになりました!
コメント/ハートAPI
メッセージサーバー • 他のAPIとは特性が違い、LIVE中にガッとくる ◦ 同時接続が多い ◦ 流量も多い • アプリからポストされたコメント/ハートを 接続されている他のアプリに届ける必要がある
LIVE中のコメント/ハートを捌くAPIサーバー
メッセージサーバー • ECS ServiceのAuto Scalingを設定しピークを乗り切れるようにする • 同時接続が増えてもパフォーマンスを出せるようにするためGoで実装 • レスポンスを速く返すためにDBアクセスがボトルネックにならないよう に、そもそもDBを使わない
◦ 認証は寿命の短いトークンをAPI側で発行し、キャッシュに乗せる ◦ データの永続化は非同期で行う
メッセージサーバー • Firebase Realtime Databaseで双方向通信を実現 ◦ iOS/Android SDKがあるので便利 ◦ アプリは特定のノードを
購読して更新を受け取る • コメント/ハートのポストは 一度メッセージサーバーが受ける ◦ 認証・データの永続化をする
メッセージサーバー 転送量:多 転送量:少 • データ転送量を抑えるために、同じノード を更新し続ける • クライアント側で過去のコメントを保持
まとめ • MediaLive / MediaStore を使ってLive配信 ◦ haproxyを駆使してSecurity Groupの課題を解決 •
コメント/ハートを捌くためのメッセージサーバー ◦ 要件に合わせてアプリケーションを分割 ◦ DB使わない ◦ Firebase Realtime Databaseをイベント通知に使う