Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
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
6.1k
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
510
cookpadTV のコメント配信における AppSync の導入事例
osadake212
4
1.6k
Other Decks in Technology
See All in Technology
Agent Skillsがハーネスの垣根を超える日
gotalab555
6
4.3k
マイクロサービスへの5年間 ぶっちゃけ何をしてどうなったか
joker1007
20
7.7k
TED_modeki_共創ラボ_20251203.pdf
iotcomjpadmin
0
150
AIエージェント開発と活用を加速するワークフロー自動生成への挑戦
shibuiwilliam
5
850
ソフトウェアエンジニアとAIエンジニアの役割分担についてのある事例
kworkdev
PRO
0
250
20251203_AIxIoTビジネス共創ラボ_第4回勉強会_BP山崎.pdf
iotcomjpadmin
0
140
Bedrock AgentCore Memoryの新機能 (Episode) を試してみた / try Bedrock AgentCore Memory Episodic functionarity
hoshi7_n
2
1.9k
MySQLとPostgreSQLのコレーション / Collation of MySQL and PostgreSQL
tmtms
1
1.2k
Connection-based OAuthから学ぶOAuth for AI Agents
flatt_security
0
360
Amazon Quick Suite で始める手軽な AI エージェント
shimy
1
1.9k
投資戦略を量産せよ 2 - マケデコセミナー(2025/12/26)
gamella
0
390
会社紹介資料 / Sansan Company Profile
sansan33
PRO
11
390k
Featured
See All Featured
エンジニアに許された特別な時間の終わり
watany
106
220k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
37
2.7k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2k
Paper Plane (Part 1)
katiecoart
PRO
0
1.9k
A better future with KSS
kneath
240
18k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.1k
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
1
1.3k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
61
49k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
3.4k
Practical Orchestrator
shlominoach
190
11k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.1k
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をイベント通知に使う