GOOGLE CLOUD 実践 / 静的配信

GCS + Cloud CDN — 静的配信を API と同じ入口にまとめる

GCS をオリジン、Cloud Load Balancing と Cloud CDN を配信入口にすると、独自ドメイン・エッジキャッシュ・パスルーティングをひとつの構成で扱える。

TL;DR

  1. GCS は静的ファイルの保管場所、Cloud CDN は利用者の近くで返すキャッシュ。
  2. ロードバランサがパスに応じて GCS と Cloud Run を振り分ける。
  3. 更新時はキャッシュ制御を設計し、必要なときだけパージする。

01全体像 — 保存・振り分け・エッジ配信

外部 Application Load Balancer は URL map に従い、/static などを GCS backend bucket へ、それ以外を Cloud Run API へ渡せる。

全体像 — 保存・振り分け・エッジ配信
/static は GCS バックエンドバケット、その他は Cloud Run にルーティングする。

一つの入口を役割で振り分ける

02キャッシュが効く場所

最初の取得は GCS まで進む。次回以降は利用者に近い CDN エッジが返すため、待ち時間とオリジンへのアクセスを減らす。

キャッシュが効く場所
初回は GCS、以後は近いエッジのキャッシュから返す流れ。

キャッシュヒットはオリジンを守る

03更新を安全に届ける

内容ハッシュ付きのファイル名なら新旧を安全に共存でき、長いキャッシュを付けやすい。同名ファイルを急いで切り替える場合だけキャッシュパージを使う。

更新を安全に届ける
immutable なアセットと、必要時だけのキャッシュパージを説明する。

更新には2つの手札がある

結論

  1. GCS は保存、Cloud CDN は配信最適化、GCLB は入口と振り分けを担当する。
  2. 静的コンテンツをアプリと同じドメインで安全に配信できる。
  3. キャッシュは「速くする機能」ではなく、更新方法まで含めた設計対象。