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

cookpadLiveのライブ配信基盤

4c37cca2c79e5be471ad79c2fe9590f0?s=47 Shota Iguchi
January 30, 2020
570

 cookpadLiveのライブ配信基盤

4c37cca2c79e5be471ad79c2fe9590f0?s=128

Shota Iguchi

January 30, 2020
Tweet

Transcript

  1. cookpadLiveのライブ配信基盤 Cookpad Tech Kitchen #23 井口 翔太

  2. 自己紹介 • 井口翔太 @iguchi1124 • 2017年新卒 • 2019年からcookpadLiveのサーバーサイドを担当 2

  3. cookpadLiveの動画コンテンツ 3

  4. cookpadLiveの動画コンテンツ 4 • ライブ配信 ◦ スマートフォン向けの縦型配信 ◦ TV向けの横型配信 • アーカイブ配信

    ◦ 各ライブ配信コンテンツを後から視聴できる
  5. cookpadLiveの動画コンテンツ 5 • 「スペシャルTIME」の配信 ◦ 有料会員のみが番組の後半を視聴できるライブ配信 無料 有料

  6. お話すること • AWSを活用した動画配信ワークフローの紹介 • cookpadLiveのライブ配信基盤 6

  7. cookpadLiveのAWSを活用した 動画配信ワークフロー 7

  8. cookpadLiveの動画配信で利用しているサービス • AWS MediaServicesを活用 ◦ AWS MediaConnect ◦ AWS MediaConvert

    ◦ AWS MediaLive ◦ AWS MediaPackage ◦ AWS MediaStore ◦ AWS MediaTailor 8
  9. cookpadLiveの動画配信で利用しているサービス 9

  10. cookpadLiveの動画配信で利用しているサービス 10 動画配信をすべてAWSの マネージドサービスで構築

  11. 11 cookpadLiveの動画配信で利用しているサービス

  12. 12 MediaLive • AWSのライブ動画処理サービス ◦ RTMP等、ライブ配信の入力エンドポイントを提供 ◦ 入力ストリームをエンコードし、メディアセグメントとプレイリスト ファイルを出力

  13. 13 MediaStore • AWSのライブ配信に最適化されたストレージサービス ◦ ライブ配信に必要なパフォーマンス、整合性、低レイテンシーを実現

  14. 14 MediaTailor • AWSのサーバーサイド広告挿入サービス ◦ プレイリストファイルの広告挿入マーカーをもとに広告サーバーに 広告リクエストを送り、動画広告を挿入 ◦ スペシャルTIME配信の無料会員向けの配信に利用

  15. 15 cookpadLiveの動画配信で利用しているサービス

  16. MediaConvert • AWSの動画トランスコーダー ◦ アーカイブのトランスコーダとして利用 ◦ MediaLiveがS3にアーカイブ用に出力したメディアセグメントを ソースとして配信用に映像をトランスコード 16

  17. cookpadLiveの ライブ配信基盤 17

  18. cookpadLiveのライブ配信基盤
 18 ライブ配信基盤 cookpadLive API AWS MediaServices cookpadLive app

  19. cookpadLiveのライブ配信の特徴と課題 19 • 有名人によるライブ配信に数万人単位の視聴者が集まる ◦ 配信システムのトラブルは極力避けたい ◦ 配信システムの一部に異常がおきてもすぐに復旧できる構成にしたい • MediaLiveのリソースの立ち上がりに時間がかかる

    ◦ リソースの作成からライブ配信開始できるまで1~2分かかる ◦ 同期的に配信リソースを確保するのは難しい
  20. cookpadLiveのライブ配信の特徴と課題 20 • リソースは無限ではなく有限 ◦ マネージドサービスを使うメリットとしてリソースの管理を仮想化でき る一方で制約もある ◦ 管理を怠ると不要リソースが発生するなどしてコストがかかってしまう

  21. ライブ配信基盤で実現すること 21 • 可用性の向上 ◦ リソースの一部に障害がおきても素早く復旧できる ◦ いつでも配信を始めることができる • 配信に利用するMediaServicesのリソースを一元管理

    ◦ リソースのライフサイクルの管理 ◦ 不要なリソースを作らない・放置しない
  22. • 予めリソースをプーリングするリソースプール ◦ 一般にリソースの作成コストが高いシステムに適用される、 DBのコネクションプール等と同様のしくみ ◦ 新たなリソースが必要な時、あるいはリソースの不具合が起きても リプレースできるように余裕を持ってリソースを作成しスタンバイする ライブ配信基盤のコンセプト 22

  23. ライブ配信基盤のコンセプト • プールごとに配信設定をコントロールするプリセット ◦ スマートフォン向け縦型配信、横型配信、入力の映像ストリームの品質 に合わせた配信設定を保持する • ライブ配信数に応じてスケールするための予約モデル ◦ 一日の配信数が多くなるケースを考慮して、自動で

    プールサイズをスケールする 23
  24. ライブ配信フロー(リソースの確保) 24 Admin cookpadLive Server ライブ配信基盤 MediaLive ライブ配信数を予約 予約リクエスト 予約テーブルに

    書き込み リソースのプーリング 非同期に リソースの作成
  25. ライブ配信フロー(リソースの確保) 25 Admin cookpadLive Server ライブ配信基盤 MediaLive ライブ配信数を予約 予約リクエスト 予約テーブルに

    書き込み リソースのプーリング 非同期に リソースの作成 プール管理バッチジョブ
  26. ライブ配信フロー(リソースの割り当て) 26 Admin cookpadLive Server ライブ配信基盤 MediaLive プーリングしている idle状態のリソース をサービスに割り当て

    配信用リソースの リクエスト RTMP Pushエンドポイント、 master playlist URLを返す RTMP Pushエンドポイントに 映像ストリームを流す RTMP Pushエンドポイント表示
  27. ライブ配信フロー(リソースのクリーニング) 27 Admin cookpadLive Server ライブ配信基盤 MediaLive RTMP Pushエンドポイントに 映像ストリームを流す

    配信停止 リソースの利用終了 リソースの状態を 削除待ち状態に 非同期に リソースのクリーニング
  28. ライブ配信フロー(リソースのクリーニング) 28 Admin cookpadLive Server ライブ配信基盤 MediaLive RTMP Pushエンドポイントに 映像ストリームを流す

    配信停止 リソースの利用終了 リソースの状態を 削除待ち状態に 非同期に リソースのクリーニング プール管理バッチジョブ
  29. cookpadLiveのライブ配信基盤
 29 ライブ配信基盤 cookpadLive API AWS MediaServices cookpadLive app JSON

    over HTTP (garage) 
 JSON over HTTP (aws-sdk) 

  30. cookpadLiveのライブ配信基盤 • サービス間通信にはgRPCを採用 ◦ Protocol Buffersでインターフェースを定義 ◦ protocでインターフェースとなるコードを自動出力 ▪ ライブ配信基盤を利用するプロジェクトの言語ごとにSDKを

    作成するコストが抑えられる ◦ googleが作成したAPI Design Guideを参考に一貫性のあるRPCを設計 ▪ https://cloud.google.com/apis/design/ 30
  31. • MediaServicesを活用したライブ配信基盤の機能拡充 • CMAFを利用した低遅延ライブ配信 • 映像の品質最適化 • などなど... ライブ配信基盤で今後やっていくこと 31

  32. ありがとうございました 32