動画配信スタートアップ企業が、ユーザーのアップロード動画をバックグラウンドでトランスコード処理するシステムを構築しています。1件あたりの処理時間は5〜10分で、アップロード件数は日中に予測不可能なスパイクが発生します。「処理の遅延は許容できるが、未処理のまま動画が消失することは絶対に許容できない」という要件があります。最も弾力性に優れたアーキテクチャはどれですか?
SQSはメッセージを最大14日間保持するため、「未処理のまま動画が消失することは許容できない」という要件を確実に満たします。ApproximateNumberOfMessagesVisibleメトリクスに基づくスケーリングは、処理待ちタスク量に比例してワーカーを増減でき、スパイク時でも確実にジョブが処理されます。 選択肢Aの(CPU使用率ベースのスケーリング):処理完了後にCPUが低下するため、次のタスクへのスケールアウト反応が遅れます。また、キュー内の未処理メッセージ数を直接反映しないためスケーリングの精度が劣ります。 選択肢Cの(Kinesis + Lambda):Lambda関数の最大実行時間は15分のため、5〜10分のトランスコードは処理時間がばらついた際にタイムアウトリスクがあります。また、Kinesis Data Streamsはリアルタイムストリーム処理向けであり、ジョブのバッファリングにはSQSが適切です。 選択肢Dの(EventBridge + Step Functions):Step Functionsはワークフローのオーケストレーション向けであり、スパイク時のジョブバッファリングには不向きです。イベントごとにEC2インスタンスを直接起動する設計は起動時間のオーバーヘッドが大きく、スケーラビリティに欠けます。