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
220
クッキングライブアプリの高速開発
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
110
Recent enhancements in Fluentd and the future
ganmacs
0
58
gRPC in Cookpad
ganmacs
7
4.3k
Treasure Data Summer Internship 2016
ganmacs
0
110
Other Decks in Technology
See All in Technology
Introduction to Sansan for Engineers / エンジニア向け会社紹介
sansan33
PRO
6
72k
OpenClawで回す組織運営
jacopen
3
610
vLLM Community Meetup Tokyo #3 オープニングトーク
jpishikawa
0
190
管理者向けGitHub Enterpriseの運用Tips紹介: 人にもAIにも優しいプラットフォームづくり
yuriemori
0
160
Contract One Engineering Unit 紹介資料
sansan33
PRO
0
14k
LLM のプロダクト導入における開発の裏側と技術的挑戦
recruitengineers
PRO
1
120
8万デプロイ
iwamot
PRO
2
170
ビズリーチにおける検索・推薦の取り組み / DEIM2026
visional_engineering_and_design
1
110
モブプログラミング再入門 ー 基本から見直す、AI時代のチーム開発の選択肢 ー / A Re-introduction of Mob Programming
takaking22
1
260
Eight Engineering Unit 紹介資料
sansan33
PRO
1
6.9k
EMからVPoEを経てCTOへ:マネジメントキャリアパスにおける葛藤と成長
kakehashi
PRO
9
1.1k
わたしがセキュアにAWSを使えるわけないじゃん、ムリムリ!(※ムリじゃなかった!?)
cmusudakeisuke
1
350
Featured
See All Featured
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
How Software Deployment tools have changed in the past 20 years
geshan
0
32k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.1k
jQuery: Nuts, Bolts and Bling
dougneiner
65
8.4k
The agentic SEO stack - context over prompts
schlessera
0
680
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
2
500
How to Talk to Developers About Accessibility
jct
2
150
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
55k
Rebuilding a faster, lazier Slack
samanthasiow
85
9.4k
A Modern Web Designer's Workflow
chriscoyier
698
190k
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/