Closed17

CDN、CDNエッジサーバー、エッジコンピューティング

high-ghigh-g

CDN(Content Delivery Network)

  • 大容量のデジタルコンテンツをインターネット上で大量配信するためのネットワーク
  • 大量配信の為のネットワークだけでなく、大量配信を通して収益を上げるための課金・認証システムも含めてCDNと呼ばれるようになってきている
  • 簡単に言うと、負荷を肩代わりしてくれるレンタルサーバ+ネットワークのようなもの

なぜCDNを利用するか?

  • 身近な例だと、PCやスマホのOSアップデートにも利用される
  • アップデート初日は高い負荷がかかるが、それ以外はとても低い
  • 最高負荷に合わせて、大容量サーバや高速通信ネットワークを用意すると低負荷の日にも無駄なコストがかかってしまう
  • 上記の様な場合にコストよく運営する場合に存在しているのがCDN

CDNのおかげで、本体サーバには負荷がかからないようになる為、安定してサービスを提供できるようになる。

high-ghigh-g

CDNは、DNSのCNAMEが利用される。
CNAMEで、あるドメインと別ドメインを紐付ける事が可能。

www.example.com のCNAMEを www.example.jp に設定すると、
www.example.com へアクセスしたユーザは www.example.com のURL表示のまま、
www.example.jp へアクセスすることができます。

引用:https://knowledge.sakura.ad.jp/19191/

high-ghigh-g

リダイレクトと少し似ているが、異なるのは、リクエストしたURLのまま別サイトの内容を取得できる部分。
これを利用すれば、URLは自サイトのまま、別サーバからデータを配信することが可能。

high-ghigh-g

オリジンサーバについて
CDNの場合、元のデータが入っているサーバを指す。
反対に、データを代わりにに配信してくれるサーバをキャッシュサーバやエッジサーバと呼ぶ。

CDNはざっくりいうと、DNS、キャッシュサーバ、オリジンサーバで成り立っている。

high-ghigh-g

CDNの場合は、DNS経由(CNAME)でエッジサーバのドメインへアクセス
CDNの管理画面へは、オリジンサーバのドメインへアクセス
するのが理想

high-ghigh-g

キャッシュサーバは、最初何も入っていない為、オリジンサーバまでデータを取得しに行く必要がある。
初回にオリジンサーバからデータを取得した後、2回目以降のアクセスは、キャッシュサーバから直接配信され、オリジンサーバへのアクセスは発生しない。
この状態を「キャッシュしている」という。

正しくデータをキャッシュしてくれれば良いが、オリジンサーバのデータを更新してもキャッシュサーバがデータを取りに来てくれなくて、間違ったデータが配信され続けるなんてこともある。

上記を防ぐために、CDNにはキャッシュ時間がある。
キャッシュ時間を30秒とすると、初回アクセスから30秒間は、キャッシュを持ち、
31秒後のアクセスからは、キャッシュサーバが再度オリジンへアクセスし、データを取得してくれる。
そして、また30秒間データを保持する。

このおかげで、ドメインへのアクセスが集中しても、初回アクセスから30秒間はオリジンサーバへのアクセスはなく、すべてCDNがさばくことになる。

high-ghigh-g

CDNはキャッシュ時間と共に、キャッシュ対象ファイルを明確にしておく必要あり

  • 一部のファイルをサブドメイン配下において、サブドメインは以下全体をキャッシュする方法
  • URLごとCDN経由にし、ファイル単位でキャッシュするしないを決める方法
high-ghigh-g

CDNエッジで実行される関数を提供するプラットフォーム

CDNで実行する系

  • Cloudflare Workers
  • Fastly Compute@Edge
  • AWS CloudFront Functions
  • AWS Lambda@Edge
  • Deno Deploy
  • Vercel Edge Functions
  • Netlify Functions
high-ghigh-g

CDNだとキャッシュがコントロールしにくいが、Edge Functionだとそれが可能。
nginxやapache等でやっていたことがCDNで出来る。
キャッシュを聞かせつつ、オリジンへの負荷もかけない。

high-ghigh-g

エッジコンピューティングについて整理

high-ghigh-g

エッジコンピューティングとは

クラウドで実行するプロセスを減らし、減らした分のプロセスを別のPCやサーバで処理することで、遅延、帯域幅の消費などを低減することを目的としたネットワークのこと。

クライアントとサーバ間で発生する長距離通信の量が最小限に抑えられる。

このスクラップは2022/09/15にクローズされました