Upgrade to Pro — share decks privately, control downloads, hide ads and more …

クッキングライブアプリの高速開発

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.

 クッキングライブアプリの高速開発

AWS Summit Tokyo 2018

Avatar for Yuta Iwama

Yuta Iwama

May 29, 2018

More Decks by Yuta Iwama

Other Decks in Technology

Transcript

  1. 目指す 3 つの No.1 レシピ動画数 No.1 レシピ動画広告 No.1 レシピ動画ユーザー課金 No.1

    クッキング LIVEで 新しい料理体験 スマホなしで 2 時間で、誰もが驚く レシピが決まる 1 分動画を。 cookpad studio storeTV cookpadTV
  2. AWS Elemental MediaLive • リリース当初は SecurityGroup が編集不可 ◦ 番組登録時は IP

    アドレスが未確定 EIP + HAproxy を前段において EC2 インスタンスの SecurityGroup を動的 変更することで対応
  3. API サーバの Auto Scaling • ライブ配信は配信開始時に一気にアクセスが発生 ◦ 通常の Auto Scaling

    では間に合わない ◦ 事前に Auto Scaling しておく仕組みが必要 独自のデータ活用基盤で過去の 来場者数等を集計しアプリケー ションの MySQL に保存
  4. 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
  5. 設計方針 • 配信部分は S3 / MediaStore のような マネージドサービスに任せる • 避けたかったこと

    ◦ 人気番組があるからサーバ増強 ◦ 想定外のアクセスがあって落ちる よくスケールして運用が楽であること
  6. AWS Elemental MediaLive 採用理由 • Wowza Streaming Engine と比較 ◦

    想定した設計を素直に構築できる ▪ S3 / MediaStore との連携 ◦ AWS の他のサービスとの連携 ◦ マネージドサービスに任せられる 詳細 : AWS Elemental MediaLive を使用したライブ動画配信アプリの基盤開発 http://techlife.cookpad.com/entry/2018/05/10/090000
  7. アーキテクチャ • APIサーバがリクエストをもとに MediaLive に channel / input を作成 •

    ライブ動画は MediaStore を output • アーカイブ動画は S3 を output • S3 / MediaStore がオリジンサーバ ◦ エンコーダから直接配信しない • CDN 経由で配信
  8. ライブ配信 1. 番組情報を受け取る 2. 1. をもとに MediaLive に channel /

    input を 作成 3. 開始時間の一定時間前 3.1. MediaLive のchannel を idle から running へ 3.2. AWS CloudWatch のアラーム設定 4. 配信されてきた動画をMediaStore へ ユーザは CDN を経由して視聴
  9. アーカイブ配信 • MediaLive の Archive Output Group • 出力先を S3

    へ • ライブ配信が終了したら S3 から動画を 集めて変換
  10. MediaLive の状態遷移 • MediaLive で配信するためには running にする必 要がある • idle

    から running にならないことがあった • 一定時間 running にならなければ channel を再作 成するようにして対応している
  11. 動画の配信検知 • 配信検知用のデーモンを実装 • 開始検知 ◦ アーカイブの S3 Event を使用

    ◦ 1つ目の動画作成されると SQS に通知 • 終了検知 ◦ MediaLive の Network out を使用 ◦ 当初は両方 Network out
  12. Archive Output Group の動画フォーマット • 数秒ごとに ts ファイルを作られる • S3

    Multipart Upload で細切れの ts ファイル を結合 • 1つの ts ファイルを社内動画変換サービスへ ◦ 動画変換サービスのバックエンドは ElasticTranscoder S3 Multipart Upload: https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html