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
210
クッキングライブアプリの高速開発
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
100
Recent enhancements in Fluentd and the future
ganmacs
0
56
gRPC in Cookpad
ganmacs
7
4.2k
Treasure Data Summer Internship 2016
ganmacs
0
110
Other Decks in Technology
See All in Technology
セマンティックHTMLによる アクセシビリティ品質向上の基礎
zozotech
PRO
0
120
Capitole du Libre 2025 - Keynote - Cloud du Coeur
ju_hnny5
0
120
Rubyist入門: The Way to The Timeless Way of Programming
snoozer05
PRO
7
520
リアーキテクティングのその先へ 〜品質と開発生産性の壁を越えるプラットフォーム戦略〜 / architecture-con2025
visional_engineering_and_design
0
270
[mercari GEARS 2025] なぜメルカリはノーコードを選ばなかったのか? 社内問い合わせ工数を60%削減したLLM活用の裏側
mercari
PRO
0
140
re:Invent2025 事前勉強会 歴史と愉しみ方10分LT編
toshi_atsumi
0
160
プロジェクトの空気を読んで開発してくれるPerlのAIツールがほしい
kfly8
2
100
Error.prototype.stack の今と未来
progfay
1
180
Lazy Constant - finalフィールドの遅延初期化
skrb
0
230
スタートアップの事業成長を支えるアーキテクチャとエンジニアリング
doragt
0
1k
新しい風。SolidFlutterで実現するシンプルな状態管理
zozotech
PRO
0
120
FFMとJVMの実装から学ぶJavaのインテグリティ
kazumura
0
130
Featured
See All Featured
Typedesign – Prime Four
hannesfritz
42
2.9k
Designing for humans not robots
tammielis
254
26k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
132
19k
Build your cross-platform service in a week with App Engine
jlugia
234
18k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
How STYLIGHT went responsive
nonsquared
100
5.9k
Building Applications with DynamoDB
mza
96
6.8k
Six Lessons from altMBA
skipperchong
29
4.1k
How GitHub (no longer) Works
holman
315
140k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
9.7k
Mobile First: as difficult as doing things right
swwweet
225
10k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
670
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/