LinuCレベル4 システムアーキテクト ネットワークとストレージの選定 問39
ネットワークとストレージの選定/ストレージとアクセスプロトコル数GBから数十GBの動画ファイルをオブジェクトストレージへアップロードするシステムを設計する。ネットワーク断が発生しても失敗した箇所だけを再送して処理を再開できるようにしたい。採用する方式として最も適切なものはどれか。
当サイトのオリジナル問題(LinuCレベル4 システムアーキテクトの出題範囲「ネットワークとストレージの選定」に対応。実際の試験問題ではありません)
- Aアップロード前に動画ファイルをgzipで圧縮してサイズを削減し、ネットワーク断が発生した場合はファイル全体を最初から再送する
- B動画ファイルを一定サイズのパートに分割してマルチパートアップロードAPIを使い、失敗したパートだけを再送してから全パートの完了を宣言する
- C署名付きURL(presigned URL)を発行してクライアントから直接オブジェクトストレージへアップロードさせ、ネットワーク断が発生した場合はURLを再発行して全体を再送する
- DrsyncコマンドをSSH経由で実行し、差分アップロードとして中断点から再開する
正解:B
解説
マルチパートアップロードは大容量ファイルを一定サイズのパート(最小5MB)に分割し、各パートを独立してアップロードする方式。アップロード済みのパートは中断後も保持されるため、ネットワーク断が発生したパートだけを再送できる。全パートのアップロード完了後に完了APIを呼び出してオブジェクトを確定する。大容量ファイルの転送では再送コストの最小化と並列アップロードによる速度向上の両面でメリットがある。
選択肢ごとの解説
- A誤り。動画ファイルはmp4やH.264等すでに圧縮済みの形式が多くgzip圧縮の効果は低い。また断が発生したら全体を再送する設計では「失敗した箇所だけを再送」という要件を満たせない。
- B正しい。マルチパートアップロードはまさにこの要件のために設計されたAPI。パート単位の再送が可能でネットワーク断への耐性が高く、要件に直接合致する。
- C誤り。presigned URLはアプリサーバーを介さずクライアントが直接ストレージへアップロードする経路設計に有効だが、中断再開の機能はない。断が発生した場合は全体を最初から送り直すことになり、要件を満たせない。
- D誤り。rsyncはファイルシステム間の差分同期ツールであり、オブジェクトストレージのHTTP APIに対しては直接使えない。