グローバルに速く届ける ── CloudFront と Global Accelerator の違い

目次

概要

世界中のユーザーにアプリケーションを速く届けたいとき、AWS で候補に挙がるのが Amazon CloudFront と AWS Global Accelerator です。どちらも世界中に広がる AWS のエッジロケーションを入口に使うため、名前だけで覚えていると取り違えやすいサービスです。

両者を分ける手がかりは、エッジでコンテンツをキャッシュするかどうかと、どの種類の通信を扱うかです。CloudFront はウェブコンテンツ(HTTP / HTTPS)をエッジにキャッシュして配信する CDN、Global Accelerator はキャッシュをせず、TCP / UDP の通信を固定のエニーキャスト IP で受けて AWS のグローバルネットワーク経由でエンドポイントへ運ぶサービスです。

この記事では、2 つのサービスをキャッシュの有無・対象プロトコル・固定 IP・フェイルオーバー・典型的なユースケースで比較表にまとめ、あわせて Amazon Route 53 のルーティングポリシー(レイテンシー・フェイルオーバー)との組み合わせ方と、名前の似ている Amazon S3 Transfer Acceleration の位置づけを整理します。AWS Certified Cloud Practitioner(CLF)の「ネットワークとコンテンツ配信」に当たる内容で、AWS Certified Solutions Architect – Associate(SAA)で問われる「高パフォーマンス」「高可用性」の設計判断の土台にもなります。

クラウドおさる

猿山からバナナを遠くの里へ届けるのに、里の近くに倉庫を置くか、猿山専用の近道を通すか、という話でござるな。どちらが合うかを確かめるでござる。

入口はどちらもエッジロケーション。CloudFront はキャッシュして返し、Global Accelerator は運ぶ
入口はどちらもエッジロケーション。CloudFront はキャッシュして返し、Global Accelerator は運ぶ

—

この記事のメリット

  • CloudFront と Global Accelerator の違いを、キャッシュの有無と対象プロトコルから説明できます
  • 「固定 IP が必要」「UDP を使う」「静的コンテンツを配信したい」といった要件から、どちらを選ぶか判断できます
  • 2 つのサービスのフェイルオーバーの仕組みの違いを把握できます
  • Route 53 のレイテンシールーティング・フェイルオーバールーティングとの役割の違いを整理できます
  • S3 Transfer Acceleration が何をするサービスかを、似ているサービスとの対比で説明できます

—

執筆者とキャラクター紹介

執筆者:土肥(とひ)

株式会社ジェニュインの代表であり元エンジニア。これまでオンプレミスと AWS 環境のインフラ業務を担当。AWS 認定資格の学習で得た知識を、ハンズオンとともに解説するのが得意。直近では新人の教育も行っており、これから技術を学ぶ方が納得できる解説を心がけています。基礎編・Cloud Practitioner の記事では、解説役としても登場します。

土肥

クラウドおさる

クラウドおさる

はじめましてでござる。弊猿はクラウドおさる。IT インフラが異常に発達した猿山から、雲に乗って地上の AWS を学びに降りてきたのでござる。

クラウドおさる

基礎編や Cloud Practitioner の記事では、とひさんに素朴な疑問をぶつける役でござるな。Security - Specialty などの記事では、要所でワンポイントや注意点をひとこと添えるでござる。

クラウドおさる

猿山にもデータセンターや監視当番があって、地上で起きることはだいたい猿山にも同じ仕組みがあるのでござる。例え話がつい猿山に寄るのは、弊猿の癖でござる。

技術解説

CloudFront ── エッジでキャッシュして配る

クラウドおさる

とひさん、CloudFront と Global Accelerator は、どちらも「エッジロケーションを使って速くする」と聞いたでござる。同じものではないのでござるか?

土肥

入口がエッジロケーションなのは同じなんだけど、そこでやっていることが違うんだ。まず CloudFront から見ていこう。CloudFront は、.html や .css、.js、画像ファイルのような静的・動的なウェブコンテンツの配信を速くするサービスだよ。

クラウドおさる

どうやって速くするのでござるか?

土肥

ユーザーがコンテンツをリクエストすると、いちばん低いレイテンシーで応答できるエッジロケーションに振り分けられる。そのエッジにコンテンツがもうあれば、すぐに返すんだ。なければ、S3 バケットやウェブサーバーといった オリジン から取ってきて返す。一度取ってきたものはエッジに保持されるから、次の人からは速くなるわけだね。既定では 24 時間保持されて、この期間は設定で変えられるよ。

クラウドおさる

なるほど、里の近くにバナナの出張倉庫を置いておけば、毎回猿山まで取りに戻らずに済むのでござるな!

土肥

そうそう、その通り! ちなみに CloudFront の料金は、エッジロケーションからのデータ転送と、HTTP / HTTPS リクエストの数で決まるんだ。つまり CloudFront が扱うのは、ウェブの通信(HTTP / HTTPS)ということでもあるね。

ドキュメントに挙がっている CloudFront の主な使い方は次のとおりです。

使い方内容
静的ウェブサイトの配信の高速化画像・スタイルシート・JavaScript などを世界中に速く配る。S3 バケットをオリジンにする構成が定番
動画のオンデマンド配信・ライブ配信MPEG DASH や Apple HLS などの形式の動画を配信。ライブ配信ではメディアのフラグメントをエッジにキャッシュしてオリジンの負荷を減らす
エッジでのカスタマイズLambda@Edge でエッジでコードを実行し、応答をカスタマイズする
プライベートコンテンツの配信署名付き URL・署名付き Cookie で、見られる人を限る

Global Accelerator ── 固定 IP で受けて AWS のネットワークで運ぶ

クラウドおさる

では Global Accelerator は、何をエッジに置くのでござるか?

土肥

Global Accelerator は、エッジに コンテンツを置かない んだ。かわりに、アクセラレーターを作ると 2 つの静的 IPv4 アドレス が払い出される(デュアルスタックなら IPv4 と IPv6 が 2 つずつ)。この IP は AWS のエッジネットワークから エニーキャスト で広告されていて、ユーザーの通信はいちばん近いエッジロケーションで受け止められるよ。

クラウドおさる

受け止めたあとは、どうなるのでござる?

土肥

そこから先は、混み合うインターネットではなく、AWS のグローバルネットワークを通ってエンドポイントまで運ばれるんだ。エッジで TCP 接続をいったん終端して、エンドポイントとは新しい接続を張るから、レイテンシーが下がってスループットが上がる。運び先のエンドポイントには、Application Load Balancer、Network Load Balancer、EC2 インスタンス、Elastic IP アドレスを指定できるよ(標準アクセラレーターの場合)。

クラウドおさる

出張倉庫ではなく、里の入口から猿山まで専用の近道を引くようなものでござるな。荷物そのものは毎回猿山から運ぶのでござる。

土肥

いい例えだね! もうひとつ大事なのが、扱う通信の種類なんだ。Global Accelerator のリスナーは TCP と UDP をサポートしている。HTTP に限らないから、オンラインゲームや VoIP、IoT のような通信にも使えるんだよ。

CloudFront は 2 回目以降エッジで返り、Global Accelerator は毎回エンドポイントまで届く
CloudFront は 2 回目以降エッジで返り、Global Accelerator は毎回エンドポイントまで届く

比較表で整理する

クラウドおさる

違いが見えてきたでござる。並べて見られると覚えやすいのでござるが……。

土肥

まとめるとこんな感じだよ。

観点Amazon CloudFrontAWS Global Accelerator
ひとことでCDN(コンテンツ配信ネットワーク)ネットワーク層でトラフィックを最適な経路に乗せるサービス
エッジでのキャッシュする(エッジにコンテンツを保持して返す)しない(毎回エンドポイントまで届ける)
対象のプロトコルHTTP / HTTPSTCP / UDP
入口ディストリビューションのドメイン名(例 d111111abcdef8.cloudfront.net)2 つの静的エニーキャスト IP(デュアルスタックは IPv4・IPv6 各 2 つ)
届け先オリジン(S3 バケット、ウェブサーバーなど)エンドポイント(ALB / NLB / EC2 / Elastic IP)
フェイルオーバーオリジングループで、プライマリが失敗したらセカンダリのオリジンへ切り替えヘルスチェックで異常を検知すると、正常なエンドポイントへ即座に切り替え
典型的なユースケース静的コンテンツ配信、動画のオンデマンド配信・ライブ配信オンラインゲーム、VoIP、IoT、固定 IP を許可リストに登録したい API、マルチリージョンの DR
クラウドおさる

「入口」の行が気になるでござる。CloudFront には固定の IP はないのでござるか?

土肥

よく見てるね! CloudFront は普段、ドメイン名で使うサービスなんだ。実は CloudFront にも、許可リストなどの用途向けにエニーキャスト静的 IP をリクエストする仕組みはあるんだけど、申請してサポートの確認を受ける別の手続きになる。「アプリケーションの入口を固定 IP にしたい」と聞いたら、まず思い浮かべるのは Global Accelerator だね。

クラウドおさる

「エッジロケーションを使う」だけで飛びつくと取り違えるでござる。キャッシュするか、HTTP か TCP / UDP か、固定 IP が要るか、の 3 つで見分けるでござるぞ。

フェイルオーバーの違い

クラウドおさる

比較表のフェイルオーバーの行も、仕組みが違うようでござるな。

土肥

そうなんだ。CloudFront の場合は オリジングループ を作って、プライマリとセカンダリの 2 つのオリジンを登録する。プライマリがつながらなかったり、あらかじめ決めた HTTP ステータスコード(500、502、503、504 など)を返したりすると、セカンダリに切り替わるんだ。ただし切り替わるのは、ビューワーのリクエストが GET・HEAD・OPTIONS のときだけだよ。

クラウドおさる

では POST で注文を送るような通信は、切り替わらないのでござるか?

土肥

その通り。CloudFront のオリジンフェイルオーバーは、読み取り系のリクエスト向けの仕組みなんだ。一方の Global Accelerator は、エンドポイントの正常性を自動でチェックしていて、異常を見つけると即座に別の正常なエンドポイントへトラフィックを振り向ける。ユーザーが向ける IP アドレスは変わらないまま、裏の行き先だけが切り替わるんだよ。

クラウドおさる

入口の看板は同じまま、中の道だけが別の猿山に付け替わるのでござるな。里の猿たちは何も気づかずに済むのでござる。

Route 53 との組み合わせ

クラウドおさる

Route 53 にも「レイテンシー」や「フェイルオーバー」のルーティングがあったでござる。CloudFront や Global Accelerator とは何が違うのでござるか?

土肥

Route 53 は DNS サービスだから、名前解決の段階で行き先を選ぶ んだ。ルーティングポリシーのうち、この記事に関係が深いのは次の 2 つだね。

ルーティングポリシー使いどころ
レイテンシールーティング複数の AWS リージョンにリソースがあり、レイテンシーが最も小さいリージョンへ振り分けたい
フェイルオーバールーティングアクティブ / パッシブのフェイルオーバーを構成したい
クラウドおさる

Global Accelerator も近いリージョンに振り分けて、異常なら切り替えるでござる。役割がかぶっていないのでござるか?

土肥

似ているけど、効く場所が違うんだ。Route 53 は「どの IP を答えるか」を決めるだけで、そのあとの通信はふつうのインターネットを通る。Global Accelerator は通信そのものの入口になって、AWS のネットワークで運ぶ。だから組み合わせて使うことも多いよ。たとえば Route 53 で独自ドメインを CloudFront のディストリビューションに向けたり、Global Accelerator の固定 IP を DNS レコードに登録したりする形だね。

クラウドおさる

道案内の立て札が Route 53、実際に荷を運ぶ近道や出張倉庫が Global Accelerator と CloudFront、という分担でござるな!

要件から選ぶ ── キャッシュか、通信の入口か、DNS か、S3 への転送か
要件から選ぶ ── キャッシュか、通信の入口か、DNS か、S3 への転送か

似ているもの ── S3 Transfer Acceleration

クラウドおさる

名前に「Acceleration」が付くものがもうひとつあったでござる。S3 Transfer Acceleration でござる。

土肥

S3 Transfer Acceleration は、S3 バケットへの転送 を速くする機能なんだ。CloudFront のエッジロケーションでデータを受けて、そこから最適化されたネットワーク経路で S3 に届ける。世界中から 1 つのバケットにアップロードを集めたいときや、大陸をまたいで大きなデータを定期的に送るときに向いているよ。使うときは bucket-name.s3-accelerate.amazonaws.com という専用のエンドポイントにアクセスするんだ。

クラウドおさる

S3 へのアップロードを速くしたいなら Transfer Acceleration、S3 のコンテンツを世界に配りたいなら CloudFront、と向きで分けて覚えるでござる。

—

新卒・未経験の方へ
クラウドおさる

AWS を仕事にしたい方へ ── 新卒・未経験から

この記事を書いているのは、AWS の設計・構築を仕事にしている現役エンジニアです。運営元の株式会社ジェニュインでは、新卒・未経験の方も募集しています。異業種や文系からインフラエンジニアになり活躍しているメンバーもいます。

  • ✓システム開発・WEB エンジニア / インフラ構築などの職種で、未経験から応募できます
  • ✓未経験から入社した社員の声を含む社員アンケートを掲載
  • ✓応募フォームから 1 分で応募できます

実践

ハンズオンガイド3 ステップ画面 3 枚

コンソールの横に開いて、チェックしながら進めましょう。

ガイドを開く

別タブで開きます。チェックはこのブラウザに保存されます。

課金が発生しない範囲で、CloudFront のディストリビューション作成画面と Global Accelerator のアクセラレーター作成画面を開き、技術解説で比べた違い(オリジンを指定するか、プロトコルとポートを指定するか)が設定項目にどう表れているかを見比べます。この実践ではリソースを作成しません。 どちらも最後の作成ボタンを押す手前で画面を離れます。

前提条件

  • AWS マネジメントコンソールにログイン済みであること(CloudFront と Global Accelerator のコンソールを閲覧できる権限)
  • 作成するリソースはありません。CloudFront の「ディストリビューションを作成」、Global Accelerator の「アクセラレータを作成」の最後のボタンは押さないでください
  • Global Accelerator は作成すると、有効・無効にかかわらず削除するまで時間単位の固定料金がかかります。この実践では作成しません

手順 1: CloudFront の作成画面を確認する

AWS マネジメントコンソールにログインします。

上部の検索バーに CloudFront と入力し、表示された「CloudFront」を選択します。CloudFront はグローバルサービスのため、リージョンの選択はありません。

左側ナビゲーションの「ディストリビューション」を選択し、「ディストリビューションを作成」をクリックします。

作成画面は「Choose a plan」→「Get started」→「Specify origin」→「Enable security」→「Review and create」の 5 ステップで、項目名の多くは英語で表示されます。

「Choose a plan」では、月額の料金プラン(無料・Pro・ビジネス・プレミアム)と従量課金の選択肢を確認します。ここでは 無料 を選んで先へ進みます(最後に作成するまで料金はかかりません)。

「Get started」で「Distribution name」に csl-compare-cf と入力し、「Single website configuration」を選択して「Next」をクリックします。

「Specify origin」で、以下を確認します。

  • 「Origin type」で、配信元(Amazon S3・Elastic Load Balancer・API Gateway・Other など)を選ぶようになっていること
  • 選んだオリジンタイプに応じて、配信元のバケットやドメインを指定する欄(Amazon S3 なら「S3 origin」)が表示されること
CloudFront のディストリビューション作成画面の「Specify origin」(Origin type の選択肢が並んでいる状態)
CloudFront のディストリビューション作成画面の「Specify origin」(Origin type の選択肢が並んでいる状態)

CloudFront では「どこからコンテンツを取ってくるか(オリジン)」を指定し、エッジがそのコンテンツを配る、という構成が画面からも分かります。TCP や UDP といったプロトコルやポートを選ぶ欄はありません。

確認が済んだら、この先の「Review and create」で作成のボタンは押さずに、ブラウザでこのページを離れます。

手順 2: Global Accelerator の作成画面を確認する

上部の検索バーに Global Accelerator と入力し、表示された「Global Accelerator」を選択します。Global Accelerator もグローバルサービスのため、リージョンの選択はありません。

「アクセラレータを作成」をクリックします。作成画面は「名前を入力」→「リスナーを追加」→「エンドポイントグループを追加」→「エンドポイントを追加」の 4 ステップです。

「名前を入力」で、以下を入力・確認します。

  • アクセラレータ名: csl-compare-ga
  • アクセラレータのタイプ: 標準(カスタムルーティング も選べることを確認します)
  • IP アドレスタイプ: IPv4(デュアルスタック も選べることを確認します)
Global Accelerator の「名前を入力」画面(アクセラレータ名・アクセラレータのタイプ・IP アドレスタイプ)
Global Accelerator の「名前を入力」画面(アクセラレータ名・アクセラレータのタイプ・IP アドレスタイプ)

「次へ」をクリックします。この時点ではアクセラレーターは作成されません。

「リスナーを追加」で、以下の項目が並んでいることを確認します。

  • ポート
  • プロトコル(UDP と TCP から選ぶ)
  • クライアントアフィニティ(なし / ソース IP)
Global Accelerator の「リスナーを追加」画面(ポート・プロトコル・クライアントアフィニティの入力欄。プロトコルの選択肢に TCP と UDP が見える状態)
Global Accelerator の「リスナーを追加」画面(ポート・プロトコル・クライアントアフィニティの入力欄。プロトコルの選択肢に TCP と UDP が見える状態)

Global Accelerator では、オリジンではなく「どのポート・どのプロトコルの通信を受けるか(リスナー)」を最初に決めます。CloudFront の画面との違いが、HTTP / HTTPS のコンテンツ配信と、TCP / UDP の通信の入口という違いに対応しています。この先には「エンドポイントグループを追加」(リージョン・トラフィックダイヤル・ヘルスチェック)と「エンドポイントを追加」が続きます。

確認が済んだら、最後の作成ボタンは押さずに、ブラウザでこのページを離れます。

クラウドおさる

Global Accelerator は作った瞬間から、無効にしていても時間ごとに弊猿のバナナが減っていくでござる。画面を眺めるだけにして、最後のボタンは押さぬよう気をつけるでござるぞ。

クラウドおさる

試験では「キャッシュが効くか」「HTTP か TCP / UDP か」「固定 IP が要るか」の手がかりから、CloudFront と Global Accelerator を選び分ける観点が問われやすいでござる。DNS で振り分ける Route 53 や、S3 へのアップロードを速くする Transfer Acceleration との取り違えにも気をつけるでござる。

—

まとめ

要件の手がかり選ぶサービス
画像・動画・静的ファイルなどのウェブコンテンツをエッジにキャッシュして配りたいAmazon CloudFront
TCP / UDP の通信(ゲーム、VoIP、IoT など)を速く安定して届けたいAWS Global Accelerator
アプリケーションの入口を固定 IP にして、許可リストに登録したいAWS Global Accelerator
リージョンの障害時に、IP を変えずに別リージョンへ即座に切り替えたいAWS Global Accelerator
DNS の段階で、レイテンシーの小さいリージョンや待機系へ振り分けたいAmazon Route 53(レイテンシー / フェイルオーバールーティング)
遠くのクライアントから S3 バケットへのアップロードを速くしたいAmazon S3 Transfer Acceleration
  • CloudFront と Global Accelerator は、どちらもエッジロケーションを入口に使うが、CloudFront はキャッシュする CDN、Global Accelerator はキャッシュせずに AWS のグローバルネットワークで運ぶサービス
  • 対象のプロトコルは、CloudFront が HTTP / HTTPS、Global Accelerator が TCP / UDP
  • Global Accelerator は 2 つの静的エニーキャスト IP を入口にし、ヘルスチェックで異常を検知すると正常なエンドポイントへ即座に切り替える
  • CloudFront のフェイルオーバーはオリジングループで行い、切り替わるのは GET・HEAD・OPTIONS のリクエスト
  • Route 53 は名前解決で行き先を選ぶ DNS サービスで、CloudFront や Global Accelerator と組み合わせて使う

エッジロケーションやリージョンそのものについては AWS グローバルインフラストラクチャ:リージョン・AZ・エッジロケーション、CloudFront と S3 を組み合わせた安全な配信構成は CloudFront Origin Access Control(OAC)によるS3オリジン保護:OAIからの移行と推奨構成 で解説しています。

—

参照先

キャリア相談
クラウドおさる

独学の先に、AWS の仕事がある ── ジュニアおさるのキャリア相談

CLF には受かったけれど、次に何をすればいいのか分からない。独学で AWS を学ぶジュニアおさるの相談に、株式会社ジェニュイン代表の土肥が答えています。

  • ✓資格はゴールか、CLF の次に何から手を付けるか
  • ✓EC2 の次に作ってみる構成と、IaC・コスト管理
  • ✓実務経験ゼロでも、面接で話せる「これまで」の作り方
新卒・未経験の方へ
クラウドおさる

AWS を仕事にしたい方へ ── 新卒・未経験から

この記事を書いているのは、AWS の設計・構築を仕事にしている現役エンジニアです。運営元の株式会社ジェニュインでは、新卒・未経験の方も募集しています。異業種や文系からインフラエンジニアになり活躍しているメンバーもいます。

  • ✓システム開発・WEB エンジニア / インフラ構築などの職種で、未経験から応募できます
  • ✓未経験から入社した社員の声を含む社員アンケートを掲載
  • ✓応募フォームから 1 分で応募できます

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

株式会社ジェニュイン(https://genuine-pt.jp)の代表取締役.

2018年〜インフラエンジニアとしてキャリアをスタートし、オンプレミスのネットワーク・サーバ環境で3年半、クラウド環境で4年半の8年間エンジニアとして従事。
2021年に佐藤氏の創業した株式会社Luxyを引き継ぎ、代表に就任。
その後アガルートグループ内の株式会社ジェニュインと合併。
合併後同社代表に就任。

目次