Cloud Functions を使ってファイルアップロード後に自動的に画像をリサイズして別のバケットに保存する処理を実装したいと考えています。最も適切なアーキテクチャはどれですか?
- A. Compute Engine の常時稼働インスタンスで Cloud Storage を監視して処理する
- B. ユーザーのブラウザで JavaScript でリサイズして Cloud Storage に保存する
- C. Cloud Scheduler で 1 分ごとに Cloud Storage をポーリングして新規ファイルを処理する
- D. Cloud Storage の finalize イベントをトリガーに Cloud Functions を起動してリサイズ処理を実行する
解答と解説を見る
正解: D
Cloud Storage のオブジェクト finalize イベント(オブジェクト作成・上書き完了)をトリガーとして Cloud Functions を設定すると、ファイルがアップロードされた直後に自動的に処理が起動します。イベントドリブンなサーバーレス処理で、ファイルがないときはコストが発生しません。Cloud Scheduler によるポーリングはリアルタイム性が低く、処理遅延が生じます。ブラウザでのリサイズはクライアント負荷が高く、処理の信頼性が低く、サーバー側では制御できません。常時稼働インスタンスはアイドル時もコストが発生し、サーバーレスの利点がありません。
📚 関連サービスの解説: Cloud Storage ・ Cloud Functions