Akamai CDNとは?仕組み・キャッシュ・導入メリットをわかりやすく解説

Akamaiとは

Akamaiは、世界規模の分散ネットワークを利用してWebコンテンツを配信するCDN(Content Delivery Network)などを提供しています。

Akamaiのエッジサーバを経由してコンテンツを配信することで、ユーザーへのレスポンスを高速化するとともに、オリジンサーバへのアクセスを減らして負荷を軽減できます。

Akamaiを導入していない一般的な構成では、ユーザーはオリジンサーバへアクセスしてコンテンツを取得します。一方、Akamaiを導入すると、ユーザーからのリクエストはAkamaiのエッジサーバへ送られます。エッジサーバにコンテンツのキャッシュがあれば、オリジンサーバへアクセスせずにユーザーへコンテンツを返すことができます。

実際、Akamaiの障害が発生すると広範囲に影響が及ぶことがあります。2021年にはAkamaiのサービス障害により、多数のWebサービスに影響が発生しました。私が担当しているシステムもその影響を受けた経験があり、Akamaiの仕組みや役割を理解しておく重要性を改めて感じました。
https://xtech.nikkei.com/atcl/nxt/news/18/10626/

Akamai導入後のコンテンツ配信の流れ

Akamaiを導入すると、ユーザーは基本的にオリジンサーバへ直接アクセスするのではなく、Akamaiのエッジサーバへアクセスします。どのエッジサーバへアクセスするかは、AkamaiのDNSを利用したマッピングによって決定されます。

エッジサーバに要求されたコンテンツの有効なキャッシュが存在する場合をCache Hitと呼びます。Cache Hitの場合、オリジンサーバへリクエストを送信する必要がないため、レスポンスの高速化とオリジンサーバの負荷軽減が期待できます。

  1. ユーザーがWebサイトへアクセスすると、Recursive DNS(キャッシュDNS)へ名前解決を要求します。
  2. Recursive DNSは、対象ドメインを管理する権威DNSサーバへ名前解決を要求します。
  3. 権威DNSサーバは、Akamaiを参照するCNAMEレコードをRecursive DNSへ返します。
  4. Recursive DNSは、CNAMEで指定されたホスト名についてAkamai DNSへ名前解決を要求します。
  5. Akamai DNSは、ネットワーク情報やAkamai側の状況などを考慮して配信先を決定し、Akamai EdgeのIPアドレスをRecursive DNSへ返します。
  6. Recursive DNSは、取得したAkamai EdgeのIPアドレスをユーザーへ返します。
  7. ユーザーは、取得したIPアドレスを使用してAkamai Edge Serverへリクエストを送信します。
  8. Edge Serverに有効なキャッシュが存在する場合はCache Hitとなり、Edge Serverからユーザーへコンテンツが返されます。この場合、コンテンツを取得するためにオリジンサーバへアクセスする必要がないため、オリジンサーバへのリクエスト数やネットワーク負荷を抑えることができます。

Cache Miss時の処理フロー

Akamaiのエッジサーバに、すべてのコンテンツが常にキャッシュされているわけではありません。要求されたコンテンツの有効なキャッシュが存在しない状態をCache Missと呼びます。

Cache Missの場合、Akamaiは設定されたオリジンサーバからコンテンツを取得し、そのレスポンスをユーザーへ返します。コンテンツがキャッシュ可能な設定であれば、取得したレスポンスがキャッシュされ、以降のリクエストで利用される場合があります。

  1. ユーザーがWebサイトへアクセスすると、Recursive DNS(キャッシュDNS)へ名前解決を要求します。
  2. Recursive DNSは、対象ドメインを管理する権威DNSサーバへ名前解決を要求します。
  3. 権威DNSサーバは、Akamaiを参照するCNAMEレコードをRecursive DNSへ返します。
  4. Recursive DNSは、CNAMEで指定されたホスト名についてAkamai DNSへ名前解決を要求します。
  5. Akamai DNSは、ネットワーク情報やAkamai側の状況などを考慮して配信先を決定し、Akamai EdgeのIPアドレスをRecursive DNSへ返します。
  6. Recursive DNSは、取得したAkamai EdgeのIPアドレスをユーザーへ返します。
  7. ユーザーは、取得したIPアドレスを使用してAkamai Edge Serverへリクエストを送信します。
  8. Edge Serverに有効なキャッシュが存在しない場合はCache Missとなり、設定されたオリジンサーバへアクセスするために、必要に応じてオリジンサーバの名前解決を行います。
  9. 名前解決を行った場合、オリジンサーバのIPアドレスを取得します。
  10. Akamai Edge Serverは、オリジンサーバへコンテンツ取得リクエストを送信します。
  11. オリジンサーバは、要求されたコンテンツをAkamai Edge Serverへ返します。

Akamaiのエッジサーバは固定ではない

ユーザーがアクセスするAkamaiのエッジサーバは、特定の1台に固定されるものではありません。Akamaiのマッピングシステムによって、ユーザーのネットワークやAkamai側の状況などに応じて適切な配信先へ誘導されます。

DNS応答にはTTL(Time To Live)が設定されており、TTLの期間中はDNSキャッシュによって取得済みの応答が再利用される場合があります。TTLが切れて再度名前解決が行われると、その時点の状況に応じて異なるIPアドレスが返される可能性があります。

そのため、Akamaiを利用するシステムでは、ユーザーが常に同じエッジサーバへ接続することを前提に設計しないことが重要です。

Site Shieldでオリジンサーバを保護する

インターネットからオリジンサーバへ直接アクセスできる構成では、Akamaiを経由しない通信がオリジンサーバへ到達する可能性があります。セキュリティを考えると、オリジンサーバへのアクセス元をAkamai側に限定したいケースがあります。

このような場合に利用できる機能の一つがSite Shieldです。Site Shieldを利用すると、Akamaiからオリジンサーバへ向かうトラフィックを定義されたIPアドレス範囲に集約し、オリジンサーバ側のFirewallなどでその範囲のみを許可する構成を取りやすくなります。

Akamai Site Shieldを利用したオリジンサーバ保護のイメージ

Site Shieldは、特定の1台のエッジサーバを固定する機能ではなく、オリジンサーバへ到達するAkamai側の通信経路を制御しやすくする仕組みです。

Site Shieldで利用するIPアドレス範囲は変更される可能性があるため、オリジンサーバ側でFirewallやACLによるアクセス制御を行う場合は、変更に追従できる運用も考慮する必要があります。

Akamai Edgeサーバ故障時の挙動

Akamaiは多数のエッジサーバを分散配置しており、特定のエッジサーバや経路に問題が発生した場合でも、正常な配信先へトラフィックを誘導できるよう設計されています。

ユーザーが接続するエッジサーバは固定ではないため、Akamai側の障害やネットワーク状況の変化に応じて、別の正常な配信先へ誘導される場合があります。これが、CDNによる可用性向上の重要なポイントの一つです。
Akamai Edgeサーバ障害時に別の配信先へ誘導されるイメージ

Akamaiとオリジンサーバ間で障害が発生した場合

エッジサーバからオリジンサーバへ正常に接続できない場合、Cache Missしたコンテンツを通常どおり取得できなくなります。ただし、必ず特定のサーバへフェイルオーバするわけではなく、実際の動作はAkamai側の設定によって異なります。

AkamaiではSite Failoverなどを利用し、オリジン障害時の動作を設定できます。例えば、条件に応じて古いキャッシュコンテンツを配信したり、代替ページを返したり、別のURLへリダイレクトしたりする構成が考えられます。

Akamai CDNを導入するメリット

Akamai CDNを導入する主なメリットは、ユーザーに近いエッジからコンテンツを配信できることと、オリジンサーバへのアクセスを減らせることです。

  • レスポンスの高速化:Cache Hit時はユーザーに近いAkamaiのエッジからコンテンツを配信できます。
  • オリジンサーバの負荷軽減:Cache Hitしたリクエストはオリジンサーバまで到達しないため、リクエスト数やネットワーク負荷を削減できます。
  • 大量アクセスへの対応:世界中に分散したAkamaiのネットワークを利用することで、アクセスをオリジンサーバだけで処理する構成と比べて負荷を分散できます。
  • 可用性の向上:特定のエッジや経路に問題が発生した場合でも、別の正常な配信先へ誘導できるよう設計されています。
  • オリジンサーバの保護:Site Shieldなどを組み合わせることで、オリジンサーバへの直接アクセスを制限する構成を取りやすくなります。

おわりに

まとめ

Akamai CDNを導入すると、ユーザーからのアクセスをAkamaiのエッジサーバで受け、キャッシュされたコンテンツをユーザーに近い場所から配信できます。

Cache Hitの場合はオリジンサーバへアクセスせずに応答できるため、レスポンスの高速化やオリジンサーバの負荷軽減が期待できます。一方、Cache Missの場合は、エッジサーバがオリジンサーバからコンテンツを取得してユーザーへ返します。

Akamaiを利用するうえでは、単に「CDNで高速化できる」と理解するだけでなく、次のような仕組みを押さえておくことが重要です。

  • DNSによってユーザーを適切なEdge Serverへ誘導する
  • Cache Hit / Cache Missによって通信経路が変わる
  • Site Shieldなどでオリジンサーバを保護できる
  • 障害時には別のEdge Serverへの誘導やFailover設定が利用される

これらの仕組みを理解しておくことで、Akamaiを利用したシステムの設計だけでなく、性能問題や障害が発生した際の切り分けもしやすくなります。ります。

AkamaiのSSL/TLSやWebセキュリティについては、以下の記事でも解説しています。

【AkamaiのCDN機能】SSL接続および証明書配置について

【Akamai】Webセキュリティ関連機能(KONA Site Defender)について

コメント