タイトル
ライブ配信サービス作ってみた Takusuta TechConf #1 - connpass (2015.10.26)
会場
株式会社サイバーエージェント
渋谷区道玄坂1丁目12番1号(渋谷マークシティウエスト 13階)
サービス紹介と開発体制について
船ヶ山 慶氏
- Live と VOD(アーカイブ)配信の二種類がある
- Python, node.js, Golang, Java(Wowza関連)
- スマホ開発は、Swift, Java
- DBは、MongoDB, Redis
- AWS, GCPの混合
- プロトコルは、RTMP, HLS, websocket, 一部 mpeg-dash
AWSとGCPを利用したインフラ技術について
永岡 克利氏
- 初期のころのインフラ構成は、AWSメイン
- 死活監視は StackDriver、Slackに通知が行く
- オーケストレーションは、Hashicorp社製の Terraform を採用
- JSONで定義できる
- 新しくインフラ構築する場合はすごく便利
- 変更内容をレビューできる
- ELBなどの状態をもつものは Terraformの管理下に置かない、など不向きもある。。
- 書くインスタンス固有の設定は Ansible で行っている
- バージョンアップがクッソ早い。。v0.6系は安定しているかも。
- Web V2以降は、GCE-LB, GKE(Kubernetesのクラスタ)も採用し、徐々に GCP を本番投入
- GCE-LB の破壊力の享受を受けられる。
- 参考:GoogleCloudPlatform - GoogleのHTTPロードバランサーの破壊力があり過ぎる #gcpja - Qiita
- マルチリージョン環境
- GCP は、Google Cloud SDK で管理している
- gcloud, kubectl
- SDKがまだ未対応のものも多い??
- GKE以外は GA になっていない
- Production環境で Docker を使える時代になった
Wowzaを利用した配信基盤について
大田 和寛氏
- 共通配信基盤
- 動画・音声の配信・視聴
- 配信サーバの管理
- 配信ストリームの管理
- 各種APIの提供
- takusuta、アメスタ、ラジ生にも採用
- 配信サーバ
- EC2
- RTMP のエンドポイントを提供、HLS を CloudFront にキャッシュさせる
- CDN
- CloudfFront
- APIサーバ
- Go on EC2
- 配信プロトコルは RTMP、視聴プロトコルは HLS
- Wowza Streaming Engine
- Java製の動画ストリーミングサーバ
- Adobe Media Serverと同じように使える。互換?
- 設定やアドオンの他、プラグインの自作も可能
- アダプティブビットレート機能
- Transcoderアドオン(有料??)
- 対応プロトコル・対応コーデック・対応ファイルフォーマットが多い
- マネージドな Wowza Streaming Cloud もある(使ってない)
- Wowza GoCoder というアプリから配信もできる(Wowzaサーバ向け)
- EC2インスタンスのタイプは、c3.2xlarge x 5台
- トランスコード先の Stream種類
- 1Mbps 288 x 512 px
- 300kbps 288 x 512 px
- 200kbps 216 x 384 px
- 100kpbs 90 x 160 px
- HLSで配信すると、8〜13秒の遅延が発生してしまう。今後の課題
- HLSのチャンクは Apple推奨の10秒にしている
Live配信のワークフローについて
杉山 仁則氏
- 配信サーバは Wowza Streaming Engine
- Python製 workerプロセス
- Lambda で実現できそうだが、開発時に東京リージョンに来ていなかったので非採用
- SQSを使用
- SNS や Transcoderとも連携
- APIサーバは Golang製(ただの HTTPサーバなので Golang で作った深い意味はなし)
- VOD配信のときは、S3をバックエンドにした CloudFrontからダウンストリーミングさせる
- Live配信のときは、Wowza がバックエンド
- Amazon Elastic Transcoder で MP4 を HLS に変換
- SQS ・・・Workerプロセスを組み合わせ
- SNS ・・・SQS や HTTP(S) と連携し、アーカイブの終了などを通知
- Elastic Trasncoder は SQS に直接キューを投げられないので(ほんと?)、一旦 SNS に処理を渡している
Riot.jsを用いたWeb開発について
今井 啓介氏