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

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

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

AWS Summit Tokyo 2018

Yuta Iwama

May 29, 2018
Tweet

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