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
クッキングライブアプリの高速開発
Search
Yuta Iwama
May 29, 2018
Technology
0
190
クッキングライブアプリの高速開発
AWS Summit Tokyo 2018
Yuta Iwama
May 29, 2018
Tweet
Share
More Decks by Yuta Iwama
See All by Yuta Iwama
CNCFCon&KubeCon NA 2019
ganmacs
0
87
Recent enhancements in Fluentd and the future
ganmacs
0
43
gRPC in Cookpad
ganmacs
7
3.8k
Treasure Data Summer Internship 2016
ganmacs
0
79
Other Decks in Technology
See All in Technology
Terraformあれやこれ/terraform-this-and-that
emiki
8
1.4k
Compose Compiler Metricsを使った実践的なコードレビュー
tomorrowkey
1
220
Google Cloud Next '24 Recap(Cloud Run/k8s)
mokocm
0
240
EMとして2023年度に頑張ったこと / What we did well in FY2023 as a EM
pauli
1
170
どうするコスト最適化のトレードオフ
tetsuyaooooo
1
530
Além do else! Categorizando Pokemóns com Pattern Matching no JavaScript
wmsbill
0
640
web-application-security
matsuihidetoshi
0
170
長期間TiDBを使ってきた話 @ 私たちはなぜNewSQLを使うのかTiDB選定5社が語る選定理由と活用LT / Experiences with TiDB Over Time
chibiegg
2
900
Azure犬駆動開発の記録/GlobalAzureFukuoka2024_20240420
nina01
1
220
データベース02: データベースの概念
trycycle
0
160
AOAI をきっかけに 社内の Azure 管理を見直した話
recruitengineers
PRO
1
300
JSON攻略法.pdf
miyakemito
8
5.1k
Featured
See All Featured
Building Flexible Design Systems
yeseniaperezcruz
319
37k
Ruby is Unlike a Banana
tanoku
96
10k
How GitHub Uses GitHub to Build GitHub
holman
468
290k
Statistics for Hackers
jakevdp
789
220k
Gamification - CAS2011
davidbonilla
76
4.6k
WebSockets: Embracing the real-time Web
robhawkes
59
7k
Debugging Ruby Performance
tmm1
70
11k
Designing with Data
zakiwarfel
96
4.8k
Writing Fast Ruby
sferik
621
60k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
7
1k
Infographics Made Easy
chrislema
238
18k
Web Components: a chance to create the future
zenorocha
305
41k
Transcript
クッキングライブアプリの 高速開発 クックパッドが仕掛ける新規事業 渡辺 慎也 岩間 雄太
自己紹介 • 渡辺 慎也 ◦ twitter.com/wata_dev • クックパッド株式会社 ◦ メディアプロダクト開発部部長
• CookpadTV 株式会社 ◦ 取締役 CTO
レシピ動画事業注力の為、子会社を設立 new!
目指す 3 つの No.1
目指す 3 つの No.1 レシピ動画数 No.1 レシピ動画広告 No.1 レシピ動画ユーザー課金 No.1
クッキング LIVEで 新しい料理体験 スマホなしで 2 時間で、誰もが驚く レシピが決まる 1 分動画を。 cookpad studio storeTV cookpadTV
Image Area cookpad studio 2 時間で、誰もが驚く 1 分動画を。
Image Area storeTV スマホなしで レシピが決まる
Image Area cookpadTV クッキングライブで 新しい料理体験
全体アーキテクチャ cookpad-tv-admin cookpad-tv-message cookpad-tv-api cookpad-tv-kinu ライブ動画配信基盤 fluentd-proxy streaming load Amazon
Redshift bricolage HAproxy cookpad auth RTMP HLS 番組情報 コメント 認証 画像
AWS Elemental MediaLive • MediaLive がすぐに配信出来る状態にはならない ◦ 配信直前ではなく番組配信日時が決まったらすぐにリソース作成 ◦ 配信予定番組数分リソースが必要に
▪ →制限緩和依頼
AWS Elemental MediaLive • リリース当初は SecurityGroup が編集不可 ◦ 番組登録時は IP
アドレスが未確定 EIP + HAproxy を前段において EC2 インスタンスの SecurityGroup を動的 変更することで対応
API サーバの Auto Scaling • ライブ配信は配信開始時に一気にアクセスが発生 ◦ 通常の Auto Scaling
では間に合わない ◦ 事前に Auto Scaling しておく仕組みが必要 独自のデータ活用基盤で過去の 来場者数等を集計しアプリケー ションの MySQL に保存
API サーバーの Auto Scaling • 過去の来場者数をベースに事前 Auto Scaling ◦ desired
count ではなく min capacity を上げる ◦ 放送開始時に min capacity を戻す(後は自然 scale-in に任せる) 詳細は Techlife「cookpadTV ライブ配信サービスの”突貫”Auto Scaling 環境構築」 http://techlife.cookpad.com/entry/2018/04/26/214500
コメント、ハート配信 • ライブの盛り上がり、コミュニケーションの要 ◦ 気軽にコメント、ハートを連打させたい ◦ コメントサーバは golang で別途実装 詳細は
Techlife「クッキングLIVEアプリcookpadTVのコメント配信技術」 http://techlife.cookpad.com/entry/2018/04/12/180000
ライブ動画 配信基盤
自己紹介 • 岩間雄太 ◦ twitter.com/ganmacs • クックパッド株式会社 ◦ 2017新卒 ◦
技術部開発基盤グループ
ライブ動画配信基盤の責任とは • ライブ動画 ◦ 開始/終了時間 をもとにライブ動画配 信 • アーカイブ動画 ◦
ライブ終了後の見逃し配信
設計方針 • 配信部分は S3 / MediaStore のような マネージドサービスに任せる • 避けたかったこと
◦ 人気番組があるからサーバ増強 ◦ 想定外のアクセスがあって落ちる よくスケールして運用が楽であること
AWS Elemental MediaLive 採用理由 • Wowza Streaming Engine と比較 ◦
想定した設計を素直に構築できる ▪ S3 / MediaStore との連携 ◦ AWS の他のサービスとの連携 ◦ マネージドサービスに任せられる 詳細 : AWS Elemental MediaLive を使用したライブ動画配信アプリの基盤開発 http://techlife.cookpad.com/entry/2018/05/10/090000
アーキテクチャ • APIサーバがリクエストをもとに MediaLive に channel / input を作成 •
ライブ動画は MediaStore を output • アーカイブ動画は S3 を output • S3 / MediaStore がオリジンサーバ ◦ エンコーダから直接配信しない • CDN 経由で配信
ライブ配信 1. 番組情報を受け取る 2. 1. をもとに MediaLive に channel /
input を 作成 3. 開始時間の一定時間前 3.1. MediaLive のchannel を idle から running へ 3.2. AWS CloudWatch のアラーム設定 4. 配信されてきた動画をMediaStore へ ユーザは CDN を経由して視聴
アーカイブ配信 • MediaLive の Archive Output Group • 出力先を S3
へ • ライブ配信が終了したら S3 から動画を 集めて変換
工夫した点 • MediaLive の状態遷移 ◦ 稀に running 状態にならないことがあった • 動画の配信検知
◦ CloudWatch のアラーム設定 • Archive Output Group
MediaLive の状態遷移 • MediaLive で配信するためには running にする必 要がある • idle
から running にならないことがあった • 一定時間 running にならなければ channel を再作 成するようにして対応している
動画の配信検知 • 配信検知用のデーモンを実装 • 開始検知 ◦ アーカイブの S3 Event を使用
◦ 1つ目の動画作成されると SQS に通知 • 終了検知 ◦ MediaLive の Network out を使用 ◦ 当初は両方 Network out
Archive Output Group の動画フォーマット • 数秒ごとに ts ファイルを作られる • S3
Multipart Upload で細切れの ts ファイル を結合 • 1つの ts ファイルを社内動画変換サービスへ ◦ 動画変換サービスのバックエンドは ElasticTranscoder S3 Multipart Upload: https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html
今後の開発 • 演者との更なる双方向コミュニケーション機能の実装 ◦ アンケート、スタンプ、特別なコメント ◦ AWS AppSync を利用 •
有料機能の実装 ◦ 都度課金、継続課金 • トライアルとしてグローバル展開
We are hiring! https://cookpad.jobs/