AWS Global Accelerator を導入するとざっくりどのくらい速くなるの?手軽にシミュレーションできるWebツールができた

AWS Global Accelerator の パフォーマンス改善の簡単なシミュレーションに使える Speed Comparison のご紹介です。リージョン別の比較結果が視覚的に把握できます。

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

コンバンハ、千葉(幸)です。

AWS Global Accelerator は、ALBやNLB、EC2などアプリケーションを提供するコンポーネントの前段に配置することで、可用性とパフォーマンスを改善してくれるネットワークサービスです。

パフォーマンスの改善のイメージについては、公式ページの以下の図が分かりやすいでしょう。

https://aws.amazon.com/jp/global-accelerator/より。

速くなるのは分かったけど、どのくらい速くなるのかもちっと具体的な数字が知りたい!しかも手軽に!という要望にぴったりなツールが AWS Global Accelerator Speed Comparison です。

Jeff Barr 氏も思わず ”Speed” の"e" を抜かしてしまうほどのスピード感です。(?)

目次

AWS Global Accelerator とは

ツールの説明に入る前に、サービスそのものをおさらいしておきましょう。

これまた公式の製品ページから画像を引用しました。

矢印の流れに逆らって、右から確認していきます。

エンドポイント

ALBや、NLB、EC2、EIPは、AWS Global Accelerator においてはエンドポイントというコンポーネントととして扱われます。

AWS Global Accelerator とエンドポイント間の通信は、ちょっと特殊な形で行われます。

AWS Global Accelerator は、AWS Global Accelerator と Amazon Virtual Private Cloud (Amazon VPC) 間でピア接続を作成します。2 つの VPC 間のトラフィックには、プライベート IP アドレスを使用します。

ALBとEC2インスタンスをエンドポイントとして使用する際には、さらに特殊な留意点があります。

  • インターナルでいい(パブリックIP不要
  • VPCにはインターネットゲートウェイ(IGW)のアタッチが必要
  • エンドポイントが所属するサブネットのルートテーブル にIGW向けのルートの登録が不要

詳細は以下を確認してください。

Secure VPC Connections in AWS Global Accelerator

エンドポイントグループ

エンドポイントは、エンドポイントグループに属します。エンドポイントグループは、特定のリージョンに関連付けて作成します。複数リージョンにエンドポイントグループを作成し、リージョンを跨いでバランシングするということも可能です。もちろん同一リージョンで複数のエンドポイントグループを作成することができて、重みづけの設定などで適宜要件に応じたバランシングができます。

エンドポイントグループは、ALBやNLBにおける ターゲットグループ と似た概念であると捉えると分かりやすいかと思います。そして、そうした場合に ロードバランサー に該当するのがアクセラレーターです。

アクセラレーター

アクセラレーターはAWS Global Accelerator のメインのコンポーネントです。1つ以上のリスナーを持ち、リスナーで受け付けたトラフィックをどのエンドポイントグループにルーティングするかを決定することができます。

アクセラレーターからエンドポイントグループへのヘルスチェックの仕組みもあり、まさにALBやNLBをグローバルな規模に拡大したものとイメージするとしっくりきます。

アクセラレーターを作成する際には静的なグローバルIPが2つ払い出され、ユーザーはその静的IPに向けてアクセスすることになります。

エッジロケーション

ユーザーが静的IPに向けてアクセスすると、途中でエッジロケーションを経由します。AWSのグローバルネットワーク内で、エッジロケーションはエニーキャストにより同一のグローバルIPを持ちます。ユーザーから最寄りのエッジロケーションにアクセスが到達すると、そこからグローバルネットワーク内の通信でエンドポイントにアクセスが到達します。

2018-reinvent-Osaka_track2_1-Compute_Network-reInvent2018-recap.pdfより

エッジロケーションと聞くと先にCloudFrontが思いつきますが、AWS Global Accelerator で使用できるエッジロケーションの数はCloudFrontに比べてまだ少ないようです。

AWS Global Accelerator についてさらに知りたい

設定手順としては、以下の記事がイメージつきやすいかと思います。

また、具体的なユースケースやメリットなどは よくある質問 が一通り網羅しています。目を通しておくとよいでしょう。

Blackbeltで資料が公開されていないかな?と思ったのですが、ELBに関する資料に1ページだけ出てくるものしか見つけられませんでした。

20191029-aws-black-belt-online-seminar-elastic-load-balancing-elbより

AWS Global Accelerator Speed Comparison を使ってみる

ようやく本題に入ります。以下のサイトです。

使い方は......ブラウザで開くだけです。

開くとこのような画面になります。

リージョンごとに順次計測が行われ、その結果が表示されるのみというシンプルな作りです。

各リージョンに存在するALBからファイルをダウンロードし、その所要時間を「インターネットから直接」の場合と「AWS Global Accelerator を用いた場合」で比較しています。

ユーザーが操作できるのはファイルサイズを指定することくらいです。

ファイルサイズが大きいほど、両者の差も大きくなることがわかります。

10KB の場合。

1MB の場合。

私は日本からブラウザを開いて試しているので、Tokyoリージョンに関しては他のリージョンと比較して差異が小さくなっています。海外から日本のサイトにアクセスする際の改善結果を確認したい場合は、VPNを経由したり海外リージョンに立てたEC2インスタンスから試行する、といった工夫が必要になるでしょう。

また、10KB で試した際には、むしろAWS Global Accelerator の方が時間がかかっているケースもあります。これは「ファイルサイズが小さいとそもそもの改善の幅が小さい」ことに加えて、後述するSpeed Comparisonの注意点が関係しています。

デフォルトでは限られたリージョンのみ対象とされているので、他のリージョンも試したいときは[ Show more Regions ] を選択する必要があります。

注意点

以下の記載があります。

Results may differ when you run the test multiple times. Download times can vary based on factors that are external to Global Accelerator, such as the quality, capacity, and distance of the connection in the last-mile network that you’re using.

機械翻訳した結果は以下です。

テストを複数回実行すると、結果が異なる場合があります。ダウンロード時間は、使用しているラストマイルネットワークでの接続の品質、容量、距離など、Global Acceleratorの外部にある要素に基づいて変化する可能性があります。

クライアント側のネットワーク品質にも影響を受けるので、先ほどのように結果が逆転することもあります。飽くまで指標の一つとして捉えるのがよいでしょう。

終わりに

AWS Global Accelerator の パフォーマンス改善のシミュレーションに使える Speed Comparison のご紹介でした。

AWS Global Accelerator を使用するメリットはパフォーマンス改善のみではありませんが、重要な要素ではあります。これまでは、その改善の度合いを計測しようと思えば 「実際にELBを作成して、アクセラレータを作成して、諸々準備して計測」 という手順を取らざるを得なかったですが、ブラウザを開くだけでおしまい、と非常に簡便に行えるようになりました。

実際にアプリケーションにAWS Global Accelerator を適用する際には、様々パフォーマンスに関す要素があるため、ここでの確認結果がそのまま適用されるとは限りませんが、リージョン単位での比較結果はひとつ分かりやすい指標として使用できるのではないでしょうか。ぜひご活用ください。

以上、ゆで卵の殻がうまく剥けない千葉(幸)がお送りしました。