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

cookpadLiveのライブ配信基盤

Shota Iguchi
January 30, 2020
920

 cookpadLiveのライブ配信基盤

Shota Iguchi

January 30, 2020
Tweet

Transcript

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

    View Slide

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

    View Slide

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

    View Slide

  4. cookpadLiveの動画コンテンツ
    4
    ● ライブ配信
    ○ スマートフォン向けの縦型配信
    ○ TV向けの横型配信
    ● アーカイブ配信
    ○ 各ライブ配信コンテンツを後から視聴できる

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  8. cookpadLiveの動画配信で利用しているサービス
    ● AWS MediaServicesを活用
    ○ AWS MediaConnect
    ○ AWS MediaConvert
    ○ AWS MediaLive
    ○ AWS MediaPackage
    ○ AWS MediaStore
    ○ AWS MediaTailor
    8

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  18. cookpadLiveのライブ配信基盤

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

    View Slide

  19. cookpadLiveのライブ配信の特徴と課題
    19
    ● 有名人によるライブ配信に数万人単位の視聴者が集まる
    ○ 配信システムのトラブルは極力避けたい
    ○ 配信システムの一部に異常がおきてもすぐに復旧できる構成にしたい
    ● MediaLiveのリソースの立ち上がりに時間がかかる
    ○ リソースの作成からライブ配信開始できるまで1~2分かかる
    ○ 同期的に配信リソースを確保するのは難しい

    View Slide

  20. cookpadLiveのライブ配信の特徴と課題
    20
    ● リソースは無限ではなく有限
    ○ マネージドサービスを使うメリットとしてリソースの管理を仮想化でき
    る一方で制約もある
    ○ 管理を怠ると不要リソースが発生するなどしてコストがかかってしまう

    View Slide

  21. ライブ配信基盤で実現すること
    21
    ● 可用性の向上
    ○ リソースの一部に障害がおきても素早く復旧できる
    ○ いつでも配信を始めることができる
    ● 配信に利用するMediaServicesのリソースを一元管理
    ○ リソースのライフサイクルの管理
    ○ 不要なリソースを作らない・放置しない

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  26. ライブ配信フロー(リソースの割り当て)
    26
    Admin cookpadLive
    Server
    ライブ配信基盤 MediaLive
    プーリングしている
    idle状態のリソース
    をサービスに割り当て
    配信用リソースの
    リクエスト
    RTMP Pushエンドポイント、
    master playlist URLを返す
    RTMP Pushエンドポイントに
    映像ストリームを流す
    RTMP Pushエンドポイント表示

    View Slide

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

    View Slide

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

    View Slide

  29. cookpadLiveのライブ配信基盤

    29
    ライブ配信基盤
    cookpadLive API
    AWS MediaServices
    cookpadLive app
    JSON over HTTP (garage) 

    JSON over HTTP (aws-sdk) 


    View Slide

  30. cookpadLiveのライブ配信基盤
    ● サービス間通信にはgRPCを採用
    ○ Protocol Buffersでインターフェースを定義
    ○ protocでインターフェースとなるコードを自動出力
    ■ ライブ配信基盤を利用するプロジェクトの言語ごとにSDKを
    作成するコストが抑えられる
    ○ googleが作成したAPI Design Guideを参考に一貫性のあるRPCを設計
    ■ https://cloud.google.com/apis/design/
    30

    View Slide

  31. ● MediaServicesを活用したライブ配信基盤の機能拡充
    ● CMAFを利用した低遅延ライブ配信
    ● 映像の品質最適化
    ● などなど...
    ライブ配信基盤で今後やっていくこと
    31

    View Slide

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

    View Slide