前提
古い記事ですが、社内で話に出てきた API に CloudFront を挟んで TTL 0s にすることで API コールを早くするという話がありました。
CloudFrontをかますとキャッシュなしのAPIコールでも速くなるようだ
確かにこの頃、軽くバズってた記憶があります。
GCP でも同じようなことが起きるのかという議題になったので検証してみました。
※めっちゃシンプルな内容なので期待はしないでください
検証
検証条件
- 台湾リージョンに nginx をインストールした GCE を1台構築
- インスタンスグループを1つ作成し、1で作成したVMを追加する
- HTTP LoadBalancer で GIP を2つ付与
- バックエンドサービスを2つ作成し、2で作成したインスタンスグループを指定する
- バックエンドサービスの1つは CloudCDN を無効、1つは CloudCDN を有効にして
Use origin settings based on Cache-Control headers
を指定してキャッシュされないようにする - クライアントは東京のローカルPC
- curl で各エンドポイントに対して 100 回の試行を行いレスポンスタイムの平均値で評価を行う
- プロトコルは HTTP のみ
検証結果
CloudCDN 無し | CloudCDN 有り |
---|---|
平均 0.07620353 秒 | 平均 0.07620353 秒 |
結論
GCP の場合は CloudCDN を経由してもレイテンシーに大きな変化は起きないようだった。
HTTPS にした場合に変わるのかとかもあると思いますが、ここまで変化がないと HTTPS の場合も変わらない可能性あります。
CloudCDN は DSA (Dynamic Site Acceleration) が行われていないのか、 CDN の有無に関わらず最適な経路を通るようになっている可能性があると思います。
公式ドキュメントかどこかで HTTP LoadBalancer はグローバルリソースなので、最適な経路を通るようになっていると見た記憶があります。