CDN技術理解・運用方針等
#技術
CDNに関する技術的理解や、その運用方針をまとめる。この領域に関して筆者は素人である。鵜呑みにしないこと。
## Edge Computing
現代的なCDNは、リクエストをEdge Server(アクセス元ホストから物理的距離が近いサーバー)に流す。
これを実現する仕組みは幾らか想定できるが、原理上、Anycast DNS Serverを用いるのが高効率のはずであり、よくある実装だと推測できる(ノーソース。中身見ていないので知らない)
Anycast DNS Serverに関しては以下がわかりやすい。
https://www.cloudflare.com/ja-jp/learning/dns/what-is-anycast-dns/
## Cache
Edge Serverにリクエストを流せても、距離的に遠いOrigin Serverへのコンテンツ取得リクエストが同期的に行われてしまったらあまり意味がない。Origin Serverに負荷はかかるし、レスポンスにもその分のレイテンシが掛かる。
CDNは、「高頻度で要求されかつ一貫性要求が厳しくないコンテンツ」をEdge Server側でCacheすることによって、高速なレスポンス・インフラストラクチャ全体の負荷軽減を行う。
## 一貫性要求
逆に、1 requestごとに動的に結果を返したい場合は当然、CacheではなくOrigin Serverへのリクエストをパススルーする必要がある。これを実現するための仕組みがCDNには備わっている。例えば、「requestのURLやHTTP Headerをみてcacheしない対象のエンドポイント・リクエスト内容であれば、Origin Serverにforwardする’というような仕組みがこれに当たる(ex: AWS CloudFrontのCache Behavior)。
## 動画CDN
動画のホスティングを行いたい場合、ファイルをクラウドストレージに配置、CDNから配信する構成にしたい。
都度Origin Server側のファイルが読み込まれるという状況は、事業者に費用面での負担をもたらすのみならず、可用性やレスポンス速度の面でも問題を起こしかねない。
また、現代的には動画はストリーミング再生で対応したい。
認可されたユーザーのみに閲覧を許したいファイルである場合は、署名付きURLでの配信を検討する必要がある。
Cloudflareの動画CDN機能は、そのあたりの要求を概ね吸収できる。
## Cache Invalidationの是非
## この話題に関連して、後で読む
Future Tech Blogの記事「CDN入門とエッジでのアプリケーション実行」