Remotion Lambda — AWSで数千本のビデオを並列レンダリング
Lambda関数がフレームを分散レンダリングしS3で結合するサーバーレスビデオパイプライン
ローカルレンダリングの限界は明確です。CPUコア数までしか並列化できず、1000本のビデオを順次レンダリングすると数時間かかります。
Remotion Lambdaはこの問題をサーバーレスで解決します。
レンダリングプロセス: 1つのビデオ(例: 900フレーム)をリクエストすると、オーケストレーターLambdaがこれを複数チャンク(例: 20個 × 45フレーム)に分割します。各チャンクを別々のLambda関数が同時にレンダリングしS3に部分ビデオをアップロードします。全チャンク完了後、最終LambdaがFFmpegでチャンクを結合して完成ビデオを生成します。
コスト構造: Lambdaは実行時間(GB秒)基準の課金なので、10個のLambdaが1分ずつ実行すると1個のLambdaが10分実行するのと同じコストです。つまり速度は10倍速くなるがコストは同一です。
限界: Lambdaのメモリ最大10GB、実行時間最大15分制限があります。4K解像度の長いビデオはチャンクサイズを小さくする必要があります。またRemotion Lambdaは有料ライセンス(Company License)が必要です。
動作フロー
remotion lambda deployでLambda関数 + S3バケット + IAMロールをAWSにプロビジョニング
renderMediaOnLambda()でレンダリング要求 → オーケストレーターLambdaがチャンク分割
N個のワーカーLambdaが各チャンクを同時にレンダリング → 部分ビデオをS3にアップロード
全チャンク完了 → 結合LambdaがFFmpegでチャンクをconcatし最終MP4生成
getRenderProgress()で進捗をポーリング → 完了時S3ダウンロードURLを返却
メリット
- ✓ 水平スケーリング: Lambda同時実行数を増やしレンダリング時間を線形的に短縮
- ✓ コスト効率: アイドル時コスト0、レンダリング時のみGB秒課金
- ✓ インフラ管理不要: サーバープロビジョニング、スケーリング、パッチすべてAWSが処理
デメリット
- ✗ 有料ライセンスが必要: Remotion Company License(年間課金)
- ✗ AWS依存: Lambda + S3 + IAM設定が複雑、他クラウド未サポート
- ✗ コールドスタート: 最初のレンダリングに数秒のLambdaウォームアップ時間が追加