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
6.2k
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Cookpad Tech Kitchen #15
osadake212
March 29, 2018
More Decks by osadake212
See All by osadake212
cookpadLive 短期間で行うサービス開発術
osadake212
0
2.1k
App Store/Google Play App内課金の実装 Tips 3つ
osadake212
0
540
cookpadTV のコメント配信における AppSync の導入事例
osadake212
4
1.7k
Other Decks in Technology
See All in Technology
「休む」重要さ
smt7174
7
1.8k
なぜ、あなたのエージェントは言うことを聞かないのか
segavvy
1
580
最高のシステムプロンプトを作るためにフィードバック機能を導入した話
alchemy1115
0
220
AIエージェントの知識表現と推論に なぜグラフが使われるのか - 記号的AIの復権とニューラルAIとの統合
yohei1126
1
200
reFACToring
moznion
1
880
事業成長とAI活用を止めないデータ基盤アーキテクチャの設計思想
hiracky16
0
770
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
15
110k
GMOフィナンシャルゲートが挑む、「止まらない」決済インフラ構築の裏側【SORACOM Discovery 2026】
soracom
PRO
0
110
最新IoT事例11選に学ぶ!現場の成功パターンと実践のコツ【SORACOM Discovery 2026】
soracom
PRO
0
120
AI研修(Day1)【MIXI 26新卒技術研修】
mixi_engineers
PRO
2
2.7k
コンポーネント名には何を含めるべきなのか? / what-should-be-included-in-component-names
airrnot1106
0
180
基調講演:人とAIをつなぐIoTの今と未来 ー 「フィジカル」と「デジタル」が出会うその先へ【SORACOM Discovery 2026】
soracom
PRO
0
360
Featured
See All Featured
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
400
AI Search: Where Are We & What Can We Do About It?
aleyda
0
7.7k
The SEO identity crisis: Don't let AI make you average
varn
0
520
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
640
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
540
Testing 201, or: Great Expectations
jmmastey
46
8.2k
Believing is Seeing
oripsolob
1
170
Building the Perfect Custom Keyboard
takai
2
820
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
580
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.3k
4 Signs Your Business is Dying
shpigford
187
22k
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をイベント通知に使う