LoginSignup
8
2

More than 5 years have passed since last update.

GCPでのアーキテクチャを確定するまでの経緯〜動画ストリーミング編

Last updated at Posted at 2019-07-01

概要

ストリーミングで受信した動画データをどのように扱えば、GCPのメリットを最大限に享受しつつ、コストを抑えた構成にできるか考える。

要件

  • 動画ストリーミングデータをGCPに保存
  • 保存した動画データをPCにダウンロードできるようにフォーマット変換する
  • サーバコスト・運用コストを出来るだけ下げる

アーキテクチャ

はじめ:Compute Engine をメインとした構成

Architecture1

  1. Compute Engine へ 動画をストリーミング送信
  2. Compute Engine で MUX してダウンロードファイルに変換
  3. Cloud Storage に保存

最終:全てマネージドサービスな構成

Architecture2

  1. App Engine から Cloud Storage バケットの署名付きURLを取得
  2. Cloud Storage へ動画をストリーミング送信
  3. Cloud Storage のオブジェクト作成イベントで Cloud Pub/Sub 通知送信
  4. Cloud Pub/Sub から Cloud Run へ通知
  5. Cloud Run で MUX してダウンロードファイルに変換、Cloud Storage のファイル上書き

コストを下げながら効率的な構成にするための試行錯誤の変遷

はじめの構成の Compute Engine 部分をマネージドサービス化する構成を検討する。

1. App Engine SE

まず、GCP の王道、 GAE のスタンダード環境を検討しました。
しかし、動画変換ライブラリが使用できず、要件を満たしませんでした。

  • メリット
    • PaaS
    • フルマネージドサービス
    • サーバコスト・運用コスト低
  • デメリット
    • リクエストの最大タイムアウト:60秒
    • 動画変換ライブラリ(C言語ベース)が使えない
    • リッスンソケットは作成できない(アウトバウンドソケットのみ)

2. App Engine FE

GAE のフレキシブル環境を検討しました。
しかし、Compute Engine 仮想マシン(VM)上の Docker コンテナで実行されるため、サーバ費用は高めとなります。

  • メリット
    • PaaS
    • マネージドサービス
    • リクエストの最大タイムアウト:60分
    • Runtime とミドルウェアに制限がない → 動画変換ライブラリ使用可能
    • 運用コスト低
  • デメリット
    • サーバコスト高

3. Cloud Pub/Sub + Cloud Functions

次にサーバレス実行環境である Cloud Functions を検討しました。
サーバレス環境は、サーバーを立ち上げることなく、イベント受信時のみ起動するのでコスト減に貢献します。
しかし、動画変換ライブラリが使用できず、要件を満たしませんでした。

  • メリット
    • サーバーレス
    • フルマネージドサービス
    • サーバコスト低
  • デメリット
    • 動画変換ライブラリが使えない(サポート言語は Node.js、Python、Goのみ) *執筆時点

4. Cloud Pub/Sub + Cloud Run

3.と同じくサーバレスですが、Cloud Run はマネージドサーバ上でDockerコンテナを起動して実行するので、動画変換ライブラリも使用可能です。

  • メリット
    • サーバーレス
    • マネージドサービス
    • Runtime とミドルウェアに制限がない → 動画変換ライブラリ使用可能
    • サーバコスト低
  • デメリット
    • beta機能(us-central1 リージョンでしか使えない & 情報少ない) *執筆時点

まとめ

  • コストを下げるなら、PaaS かサーバレス
  • Cloud Pub/Sub を使いこなせるようになりたい
  • Cloud Run は要チェック
8
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
2