プログラミングマガジン

プログラミングを中心にIT技術をできるだけわかりやすくまとめます。

  • ホーム
  • Web技術
  • 【Web技術】CDNについて
 
 
     
  • サーバー言語  
    • Python
    • Ruby
    • PHP
    • SQL
  •  
  • インフラ  
       
    • AWS
    •  
    • 基本
    • Git
  • Web
       
    • Web開発
    • JavaScript
    • Vue.js
    • React
  •  
  • 設計  
       
    • 実装設計
    • DB設計
  • 問い合わせ
  

【Web技術】CDNについて

09.14

  • miyabisan2
  • コメントを書く

この記事は3分で読めます

「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までは○円というような従量制課金になっていたりします。なので、料金を減らすには流すバイト数を減らす努力をすれば良い。

スポンサーリンク
  • 2023 09.14
  • miyabisan2
  • コメントを書く
  • Web技術
  • Tweets Twitter
  • このエントリーをはてなブックマークに追加
  • LINEで送る

関連記事

  1. 2018 07.15

    【PWA】特徴、構成要素、設計、実装方法

  2. 2022 04.08

    【WebGL】「カクつく」問題、gtlf

  3. 2023 09.16

    【Web技術】Cache-Control調査

  4. 2022 04.11

    【WebGL】WebGLの基本、知っておいた方が良い「CPU」と「GPU」の知識

  5. 2018 05.27

    ファイルの「圧縮」と「アーカイブ」と「解凍」、gzip圧縮について

  6. 2023 09.16

    【Web技術】画像の遅延読み込み(lazyload)について

  • コメント ( 0 )
  • トラックバック ( 0 )
  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

返信をキャンセルする。

【Web技術】配信のための画像の知識

【Web技術】キャッシュに関わるHTTPヘッダーについ…

RETURN TOP

著者プロフィール

エンジニア歴10年で過去に業務系、Webデザイン、インフラ系なども経験あります。現在はWeb系でフロントエンド開発中心です。

詳細なプロフィールはこちら

スポンサーリンク

カテゴリー

  • Android
  • API
  • AWS
  • C++
  • CSS
  • C言語
  • DDD
  • DevOps
  • Django
  • Docker
  • Git
  • GitLab
  • GraphQL
  • Hasura
  • Java
  • JavaScript
  • Kubernetes
  • Laravel
  • linux
  • MySQL
  • Next.js
  • nginx
  • Node.js
  • NoSQL
  • Nuxt.js
  • Oracle
  • PHP
  • Python
  • React
  • Redux
  • Rspec
  • Ruby
  • Ruby on Rails
  • Sass
  • Spring Framework
  • SQL
  • TypeScript
  • Unity
  • Vue.js
  • WebRTC
  • Webサービス開発
  • Webデザイン
  • Web技術
  • インフラ
  • オブジェクト指向
  • システム開発
  • セキュリティ
  • その他
  • データベース
  • デザインパターン
  • テスト
  • ネットワーク
  • プログラミング全般
  • マイクロサービス
  • マイクロソフト系技術
  • マルチメディア
  • リファクタリング
  • 副業
  • 未分類
  • 業務知識
  • 設計
  • 関数型言語
RETURN TOP

Copyright ©  プログラミングマガジン | プライバシーポリシー