「Content Delivery Netowork」の略でコンテンツをより早く効率的に配信するために構築されたネットワークのことを指しています。
用途
全世界のユーザーに高速に安定した配信したい場合に活用できる。
特徴
- 高品質のネットワーク
- エッジサーバを有する。(クライアントに近いサーバー)
- 広域負荷分散が可能なLB(GSLB:グローバルサーバーロードバランシング)
エッジサーバー
いわゆるProxyです。Cloudflareはnginx、FastlyはVarnishをカスタマイズしたものを使っています。
広域負荷分散が可能なLB(GSLB:グローバルサーバーロードバランシング)
クライアントを適切なエッジサーバーに振り分けるために必要になります。
機能
CDNはキャッシュだけができると思われている方も多いのですがそれ以外の機能もあります。
- DDos対策
- WAF
- Bot対策(自動購入ツールなど)
- サムネイル作成サービス(画像のリサイズ)
- 動画の変換
S3直セクセスと比べて
s3などのオブジェクトストレージに直接参照しているサイトはまだありますが、それはいわばオリジンへの直アクセスになります。
CDNのメリット
コストが安い
トラフィック課金(配信したバイトサイズ)を基本として、リクエスト数や証明書などで追加課金が入る場合が多いです。トラフィックなのでピーク時間が大量にアクセスが来ても平常時がそこまでアクセスがないなら料金は一定に収まります。
ただ、BtoCではなく、BtoB向けの業務アプリケーションの場合はアクセス数が一定なのでこの恩恵はそこまでないかもしれません。
自前のProxyだけだとダメな理由
CDNと似たようなことは、自前にProxyを多段などで用意してできなくもないです。ただ、海外配信やトラフィック量が一過的に増える(例:100Gbpsを超えるなど)ことを考えると現実的なチョイスではないです。
コストがかかる
- インフラ利用料金
- 運用にかかる人件費
- 人材教育費
- 人材獲得コスト(配信に理解があるエンジニアは多くない)
常にアクセスが大量にあるならコストに見合うかもしれないが、ゲームのイベントなど基本は一過的なケースが多いため。
CDNと自社Proxyを組み合わせる
自社Proxyは定額なので平常時は自社のProxyを使って、ピーク時だけCDNを補助的に使うという手法もあります。また、国内は自社proxy、海外はCDNメインという使い方もできます。
CDNの選び方
選定ポイント
配信したいクライアントがいる地域への対応
海外向けなら海外、国内だけなら国内向けもありです。特に中国対応は非常に特殊なので要注意。
ピーク帯域
小規模CDNとかだとピーク時100Gbpsを超えるような大規模サイトのドメインは対応しきれません。なお、100Gbps程度ならメジャーなCDN業者であればクリアできます。
HTTPSの扱い
一部CDNがTLS1.1以下を切る感じになっている。(古いAndroid4とかだとTLS1.0だったりする。)
プロバイダの種類
Cloudflare
専業CDNプロバイダー。世界展開。無料プランがあるため個人にも人気が高い。DNSの1.1.1.1提供でも有名。非常に人気がある。基本無料です。
Fastly
専業CDNプロバイダー。2011年創業の後発サービス。Varnishをベースにした柔軟な設定ができる。非常に人気がある。無料枠があります。動的コンテンツを流すために必須なCDNの高度な制御が無料枠の範囲で可能です。(VCL)
ログがリアルタイムで見れます。
Amazon CloudFront
AWSのサービス。全世界に展開している。150Gbpsの制限がある。
Google Cloud CDN
Google Cloudのサービス。全世界展開。
Akamai
専業CDNプロバイダー。最初期からのCDNプロバイダーで知名度も高い。機能も非常に多い。個人向けというよりは一定規模の企業向け。
CDNキャッシュ消去
処理は重く、CDNによって消去完了までの時間や、消去リクエストの頻度に制限や追加料金が発生する場合があります。
Cache-Controlの解釈がCDNによって異なる。
CDNというよりはProxyソフトウェアレベルで異なります。なので、CDNの乗り換えが発生する場合などはここは注意ポイントになります。
ネットワークの制限に注意
150Gpsなど。超過した後の挙動も各CDNによって異なります。
- 超過するとエラーレスポンスが返る。
- 超過しても即エラーにはならないが制限される可能性がある。
- 大きなトラフィックを流す場合は事前連絡をお願いしている。
コンテンツのサイズに注意
キャッシュできるコンテンツ容量はCDNによって変わります。
Google Cloud CDN
Rangeリクエストに対応している場合は、5TBまで対応できるがしてない場合10MBまでです。
Akamai
1.8GBを超える場合大容量ファイルの最適化が必要になる。
CDNのデバッグ
特定ヘッダを入れるとデバッグできるようになります。ただ、危険でもあります。本来隠したい情報まで見えてしまう可能性があるためです。
エッジサーバー
最近のCDNのトレンドです。現時点で未対応のCDNも今後対応予定があったり、非常にホットな分野です。基本サーバーレス実行環境なので「Lambda」という名前がついていたりします。
これが出てきたことによって今までできなかったようなキャッシュの複雑な制御が可能になりました。(例えば、動的コンテンツのキャッシュ制御など)
制御するためのコードはJavaScriptでも記述できるサービスもあります。
エッジサーバーでやった方が良いこと
- 高度なルーティング(A/Bテストなど)
- 動的コンテンツのキャッシュを行うための高度なキャッシュキー、Varyの操作
- JWT検証
- 柔軟なリダイレクト
- ロードバランシング
- 高度なロギング
- ACL
- 入力データのフィルタリング、バリデーション
- コンテンツ変換
サービス
VCL、Compute@Edge
Fastlyのエッジサーバー
Lambda@Edge
CloudFrontのエッジサーバー
Edge Workers
Akamaiのエッジサーバー
料金体系
○TBまでは○円というような従量制課金になっていたりします。なので、料金を減らすには流すバイト数を減らす努力をすれば良い。
この記事へのコメントはありません。