AWS Global Acceleratorを整理してみた

# 背景・目的
以前、[AWS Gateway Load Balancerについて整理してみた](https://qiita.com/zumax/items/57902304829861e44ca7)でGateway Loadbalancerを調べました。
今回は、Global Acceleratorについて整理してみます。


# まとめ
下記に特徴を整理します。

| 特徴 | 説明 |
| :-- | :-- |
| GlobalAcceleeratorとは | 複数のAWSリージョンのエンドポイントをサポートするグローバルサービス|
| 目的 | ローカル、グローバルユーザ向けのパフォーマンス向上|
| アクセラレーターの種類|標準とカスタムルーティングのアクセラレータの2種類がある|
|標準のアクセラレーター|・世界中のユーザが使用するインターネットアプリケーションの可用性を向上できる<BR><BR>・AWSグローバルネットワーク経由でクライアントに最も近いリージョンのエンドポイントにトラフィックを転送する|
|カスタムルーティングアクセラレーター|・1人以上のユーザを複数の宛先の特定の宛先にマッピングできる<BR><BR>・VPCサブネットエンドポイントタイプのみサポート。サブネット内のプライベートIPアドレスにトラフィックをルーティングする|
| GlobalAcceleeratorのコンポーネント |下記がある。<BR>・静的 IP アドレス<BR>・アクセラレーター<BR>・DNS 名<BR>・ネットワークゾーン<BR>・Listener<BR>・エンドポイントグループ<BR>・エンドポイント|
|DNS|・Global Acceleratorは、各アクセラレータのデフォルトのDNSを割り当てる<BR><BR>・グローバルアクセラレータが割り当てる、または独自のIPアドレスから選択する静的IPのこと<BR><BR>・ユースケースに応じて、アクセラレータの静的IP、DNSを使用してトラフィックをアクセラレータや、独自のカスタムドメイン名を使用してルーティングするようにDNSレコードを設定できる|
|ネットワークゾーン|・一意のIPサブネットからアクセラレータの静的IPアドレスを提供する<BR><BR>・ネットワークゾーンは、独自の物理インフラを備えた独立したユニット<BR><BR>・特定のクライアントNWによるIPアドレスブロックまたは、NW中断により、NWゾーンの1つのIPアドレスが使用できなくなった場合、クライアントアプリケーションは、別の分離されたNWゾーンから正常な静的IPアドレスを再試行できる|
|エンドポイントグループ|・各エンドポイントグループは、特定のAWSリージョンに関連付けられる<BR><BR>・リージョン内の1つ以上のエンドポイントが含まれる<BR><BR>・標準アクセラレータを使用すると、エンドポイントグループに送信されるトラフィックの割合を増減できる<BR><BR>・トラフィックダイヤルにより、パフォーマンステスト、Blue/Greenのデプロイを簡単に実行できる|
|エンドポイント|エンドポイントは、グローバルアクセラレータがトラフィックを転送するリソース|
|ユースケース|・アプリケーション使用率の向上のための拡張性<BR>・レイテンシーに敏感なアプリケーション向けのアクセラレーション<BR>・ディザスタリカバリとマルチリージョンの耐障害性<BR>・アプリケーションの保護<BR>・VoIPまたはオンラインゲームアプリケーションのパフォーマンスを向上|
|料金|・固定の時間単位課金費用<BR>・標準のデータ転送速度を超過した分が課金される（プレミアムデータ転送料金）|


# 概要
[AWS Global Accelerator](https://docs.aws.amazon.com/ja_jp/global-accelerator/latest/dg/what-is-global-accelerator.html)を元に整理します。

> AWS Global Accelerator は、アクセラレーターを使用すると、ローカルおよびGlobal ユーザー向けのアプリケーションのパフォーマンスが向上します。選択したアクセラレーターのタイプに応じて、追加のメリットを得ることができます。

- ローカル、グローバルユーザ向けのパフォーマンスが向上する

> - 標準のアクセラレーターを使用すると、世界中のユーザーが使用するインターネットアプリケーションの可用性を向上できます。標準アクセラレータを使用すると、Global Accelerator は AWS グローバルネットワーク経由でクライアントに最も近いリージョンのエンドポイントにトラフィックを転送します。
> - カスタムルーティングアクセラレータを使用すると、1 人以上のユーザーを複数の宛先の特定の宛先にマッピングできます。

- 標準とカスタムルーティングアクセラレータがある
    - 標準のアクセラレーター
        - 世界中のユーザが使用するインターネットアプリケーションの可用性を向上できる
        - AWSグローバルネットワーク経由でクライアントに最も近いリージョンのエンドポイントにトラフィックを転送する
    - カスタムルーティングアクセラレーター
        - 1人以上のユーザを複数の宛先の特定の宛先にマッピングできる

> グローバルアクセラレータは、複数の AWS リージョンのエンドポイントをサポートするグローバルサービスです。これらのエンドポイントは、AWS リージョン表。

- グローバルアクセラレータは、複数のAWSリージョンのエンドポイントをサポートするグローバルサービス


> デフォルトでは、グローバルアクセラレータには、アクセラレータに関連付けられた 2 つの静的 IP アドレスが用意されています。標準アクセラレータでは、グローバルアクセラレータが提供する IP アドレスを使用する代わりに、グローバルアクセラレータに持ち込む独自の IP アドレス範囲の IPv4 アドレスにこれらのエントリポイントを構成できます。静的 IP アドレスは、AWS エッジネットワークからのエニーキャストです。

- グローバルアクセラレータのデフォルトの挙動
    - アクセラレータに間れ付けられた2つの静的IPアドレスが用意されている
    - 標準アクセラレータでは、グローバルアクセラレータが提供するIPアドレスを使用する代わりに、独自のIPv4アドレスに、これらのエンドポイントを構成できる
    - 静的IPアドレスは、AWS エッジネットワークからの anycast


> 標準アクセラレータの場合、Global Accelerator は AWS グローバルネットワークを使用して、正常性、クライアントの場所、および設定したポリシーに基づいて、最適なリージョンエンドポイントにトラフィックをルーティングします。これにより、アプリケーションの可用性が向上します。標準アクセラレータのエンドポイントは、ネットワークロードバランサー、アプリケーションロードバランサー、Amazon EC2 インスタンス、または 1 つの AWS リージョンまたは複数のリージョンにある Elastic IP アドレスです。このサービスは、正常性または構成の変更に即座に対応し、クライアントからのインターネットトラフィックが常に正常なエンドポイントに送信されるようにします。

> カスタムルーティングアクセラレーターはVirtual Private Cloud (VPC) サブネットエンドポイントタイプのみをサポートし、そのサブネット内のプライベート IP アドレスにトラフィックをルーティングします。


- 標準アクセラレータ
    - AWSグローバルNWを使用する
    - 正常性、クライアントのロケーション、設定したポリシーにより、最適なリージョンエンドポイントにトラフィックをルーティングする
    - アプリケーションの可用性が向上する
    - エンドポイントは、NLB、ALB、EC2インスタンス、ElasticIPを指定する
    - 正常性、構成の変更に即時対応し、クライアントからのインターネットトラフィックが常に正常なエンドポイントに送信する
- カスタムルーティングアクセラレーター
    - VPCサブネットエンドポイントタイプのみサポート
    - サブネット内のプライベートIPアドレスにトラフィックをルーティングする

## コネポーネント
概要にあげた内容以外について、記載します。


### DNS名
> Global Accelerator は、各アクセラレーターのデフォルトのドメインネームシステム (DNS) 名を割り当てます。これはa1234567890abcdef.awsglobalaccelerator.comで、グローバルアクセラレータが割り当てる、または独自の IP アドレス範囲から選択する静的 IP アドレスを指します。ユースケースに応じて、アクセラレータの静的 IP アドレスまたは DNS 名を使用してトラフィックをアクセラレータにルーティングしたり、独自のカスタムドメイン名を使用してトラフィックをルーティングするように DNS レコードを設定できます。

- Global Acceleratorは、各アクセラレータのデフォルトのDNSを割り当てる
- グローバルアクセラレータが割り当てる、または独自のIPアドレスから選択する静的IPのこと
- ユースケースに応じて、アクセラレータの静的IP、DNSを使用してトラフィックをアクセラレータや、独自のカスタムドメイン名を使用してルーティングするようにDNSレコードを設定できる

### ネットワークゾーン
> ネットワークゾーンは、一意の IP サブネットからアクセラレータの静的 IP アドレスをサービスします。AWS アベイラビリティーゾーンと同様に、ネットワークゾーンは、独自の物理インフラストラクチャセットを備えた独立したユニットです。アクセラレータを構成すると、デフォルトでは、グローバルアクセラレータによって 2 つの IPv4 アドレスが割り当てられます。特定のクライアントネットワークによる IP アドレスブロックまたはネットワークの中断により、ネットワークゾーンの 1 つの IP アドレスが使用できなくなった場合、クライアントアプリケーションは、別の分離されたネットワークゾーンから正常な静的 IP アドレスを再試行できます。

- 一意のIPサブネットからアクセラレータの静的IPアドレスを提供する
- ネットワークゾーンは、独自の物理インフラを備えた独立したユニット
- 特定のクライアントNWによるIPアドレスブロックまたは、NW中断により、NWゾーンの1つのIPアドレスが使用できなくなった場合、クライアントアプリケーションは、別の分離されたNWゾーンから正常な静的IPアドレスを再試行できる


### Listener
> リスナーは、構成するポート (またはポート範囲) とプロトコル (またはプロトコル) に基づいて、クライアントからグローバルアクセラレータへの受信接続を処理します。リスナーは、TCP、UDP、または TCP と UDP の両方のプロトコルに対して構成できます。各リスナーには、1 つ以上のエンドポイントグループが関連付けられており、トラフィックはいずれかのグループのエンドポイントに転送されます。トラフィックを配信するリージョンを指定して、エンドポイントグループをリスナーに関連付けます。標準アクセラレータを使用すると、リスナーに関連付けられたエンドポイントグループ内の最適なエンドポイントにトラフィックが分散されます。


- リスナーは、構成するポート、プロトコルに基づき、クライアントからグローバルアクセラレータへの受信接続を処理する
- TCP/UDP、TCPとUDPに両方に対して構成できる
- 各リスナーは、1つ以上のエンドポイントグループが関連づけられ、トラフィックはいずれかのグループのエンドポイントに転送される
- トラフィックを配信するリージョンを指定して、エンドポイントグループをリスナーに関連付ける
- 標準アクセラレータを使用すると、リスナーに関連付けられたエンドポイントグループ内の最適なエンドポイントにトラフィックが分散される

### エンドポイントグループ
> 各エンドポイントグループは、特定の AWS リージョンに関連付けられています。エンドポイントグループには、リージョン内の 1 つ以上のエンドポイントが含まれます。標準アクセラレータを使用すると、エンドポイントグループに送信されるトラフィックの割合を増減できます。トラフィックダイヤル。トラフィックダイヤルを使用すると、パフォーマンステストやブルー/グリーンのデプロイテストを簡単に実行できます。たとえば、さまざまな AWS リージョンの新しいリリースなどです。

- 各エンドポイントグループは、特定のAWSリージョンに関連付けられる
- リージョン内の1つ以上のエンドポイントが含まれる
- 標準アクセラレータを使用すると、エンドポイントグループに送信されるトラフィックの割合を増減できる
- トラフィックダイヤルにより、パフォーマンステスト、Blue/Greenのデプロイを簡単に実行できる

### エンドポイント
> エンドポイントは、グローバルアクセラレータがトラフィックを転送するリソースです。

- エンドポイントは、グローバルアクセラレータがトラフィックを転送するリソース

> 標準アクセラレータのエンドポイントは、ネットワークロードバランサー、アプリケーションロードバランサー、EC2 インスタンス、または Elastic IP アドレスです。Application Load Balancer エンドポイントは、インターネットに接続したエンドポイントまたは内部エンドポイントです。標準アクセラレータのトラフィックは、エンドポイントの正常性と、エンドポイントの重みなどの選択した設定オプションに基づいてエンドポイントにルーティングされます。エンドポイントごとに、重みを設定できます。重みは、各エンドポイントにルーティングするトラフィックの割合を指定するために使用できる数値です。これは、リージョン内でパフォーマンステストを行う場合などに便利です。

- 標準アクセラレータのエンドポイント
    - NLB、ALB、EC2、Elastic IP
    - ALBのエンドポイントは、インターネットに接続したエンドポイント、または内部エンドポイント
    - エンドポイントの正常性、重みなど選択した設定オプションに基づいてエンドポイントにルーティングされる
- エンドポイントの重み
    - ルーティングする割合
    - 数値で指定する

> カスタムルーティングアクセラレータのエンドポイントは、トラフィックの宛先である 1 つまたは複数の Amazon EC2 インスタンスを持つ仮想プライベートクラウド（VPC）サブネットです。

- カスタムルーティングアクセラレータのエンドポイント
    - 1つ、複数のEC2インスタンスを持つVPCサブネット

## ユースケース
> アプリケーション使用率の向上のための拡張性
アプリケーションの使用量が増加すると、管理する必要がある IP アドレスとエンドポイントの数も増加します。グローバルアクセラレータを使用すると、ネットワークを拡大または縮小できます。これにより、ロードバランサーや Amazon EC2 インスタンスなどのリージョンリソースを 2 つの静的 IP アドレスに関連付けることができます。これらのアドレスは、クライアントアプリケーション、ファイアウォール、および DNS レコードに 1 回だけ許可リストに含めます。Global Accelerator を使用すると、クライアントアプリケーションの IP アドレスを更新しなくても、AWS リージョンのエンドポイントの追加や削除、青/緑のデプロイの実行、A/B テストを実行できます。これは、クライアントアプリケーションを頻繁に更新できないIoT、小売、メディア、自動車、ヘルスケアのユースケースに特に役立ちます。

- アプリケーション使用率の向上のための拡張性
    - NWを拡大、または縮小できる
    - LBやEC2インスタンスなどのリソースを2つの静的IPに関連付けられる
    - クライアントアプリケーションのIPアドレスを更新しなくても、AWSリージョンのエンドポイントの追加、削除
    - Blue　/ Greenのデプロイの実行
    - A/Bテストを実行できる

> レイテンシーに敏感なアプリケーション向けのアクセラレーション
特にゲーム、メディア、モバイルアプリ、財務などの多くのアプリケーションでは、優れたユーザーエクスペリエンスを実現するために、非常に低いレイテンシーを必要とします。ユーザーエクスペリエンスを向上させるために、Global Accelerator はユーザーのトラフィックをクライアントに最も近いアプリケーションエンドポイントに転送し、インターネットのレイテンシーとジッタを低減します。Global Accelerator は、エニーキャストを使用してトラフィックを最も近いエッジロケーションにルーティングし、AWS グローバルネットワーク経由で最も近いリージョンのエンドポイントにルーティングします。Global Acceleratorは、ネットワークパフォーマンスの変化に迅速に対応し、ユーザーのアプリケーションパフォーマンスを向上させます。

- レイテンシーに敏感なアプリケーション向けアクセラレーション
    - 低いレイテンシーを必要とする場合
    - ゲーム、メディア、モバイルアプリなど
    - Anycast によりトラフィックを最も近いエッジロケーションにルーティングし、AWSグローバルネットワーク経由で、最も近いリージョンのエンドポイントにルーティングする

> ディザスタリカバリとマルチリージョンの耐障害性
利用できるようにするには、ネットワークに依存できる必要があります。災害復旧、高可用性、低レイテンシー、コンプライアンスをサポートするために、複数の AWS リージョンでアプリケーションを実行している可能性があります。Global Accelerator は、プライマリの AWS リージョンでアプリケーションエンドポイントに障害が発生したことを検出すると、次に利用可能な AWS リージョンでアプリケーションエンドポイントへのトラフィックの再ルーティングを即座にトリガーします。

- DRとマルチリージョンの耐障害性
    - プライマリのAWSのリージョンでアプリケーションエンドポイントに障害が発生したことを検出すると、次に利用可能なAWSリージョンでアプリケーションエンドポイントへのトラフィックの再ルーティングを即座にトリガーする

> アプリケーションの保護
アプリケーションロードバランサーや Amazon EC2 インスタンスなどの AWS オリジンをパブリックインターネットトラフィックに公開すると、悪意のある攻撃が発生する可能性があります。Global Acceleratorは、2つの静的エントリポイントの後ろにオリジンをマスキングすることで、攻撃のリスクを低減します。AWS Shield による分散サービス妨害 (DDoS) 攻撃からデフォルトで保護されています。Global Accelerator は、プライベート IP アドレスを使用して Amazon Virtual Private Cloud とのピアリング接続を作成し、内部アプリケーションロードバランサーまたはプライベート EC2 インスタンスへの接続をパブリックインターネットから維持します。

- アプリケーションの保護
    - ALBやEC2インスタンスなど、AWS Originをパブリックインターネットトラフィックに公開すると悪意のある攻撃が、発生する可能性がある
    - Global Acceleratorでは 2つの静的エントリポイントの後ろにOriginをマスキングすることで、攻撃のリスクを低減する
    - AWS ShieldによるDDoS攻撃からデフォルトで保護されている
    - プライベートIPアドレスを使用して、VPCにとのピアリング接続を作成し、内部ALB、プライベートEC2インスタンスへの接続をパブリックインターネットから維持する 

> VoIPまたはオンラインゲームアプリケーションのパフォーマンスを向上
カスタムルーティングアクセラレータを使用すると、VoIP やゲームアプリケーションに Global Accelerator のパフォーマンス上のメリットを活用できます。たとえば、1 つのゲームセッションに複数のプレイヤーを割り当てるオンラインゲームアプリケーションに Global Accelerator を使用できます。Global Accelerator を使用すると、マルチプレイヤーゲームや VoIP コールなどの特定のエンドポイントにユーザーをマッピングするカスタムロジックを必要とするアプリケーションのレイテンシーとジッタをグローバルに削減できます。1 つのアクセラレータを使用して、1 つまたは複数の AWS リージョンで実行されている数千の Amazon EC2 インスタンスにクライアントを接続できます。同時に、どの EC2 インスタンスおよびポートにどのクライアントを転送するかを完全に制御できます。

- VoIPまたはオンラインゲームアプリケーションのパフォーマンスを向上
    - カスタムルーティングアクセラレータを使用すると、VoIPやゲームアプリにGlobal Acceleratorのパフォーマンス上のメリットを活用できる

## 料金
最新情報は、[こちら](https://aws.amazon.com/jp/global-accelerator/pricing/)のページをご確認ください。

> AWS Global Accelerator では、プロビジョニングされたアクセラレーターや、アクセラレーターを流れる主要な方向のトラフィック量に応じて課金されます。アクセラレーターは、AWS グローバルネットワーク上の最適なエンドポイントへのダイレクトトラフィックのために作成するリソースです。顧客は通常、アプリケーションごとに 1 つのアクセラレーターを設定しますが、より複雑なアプリケーションでは複数のアクセラレーターが必要な場合があります。プロビジョニングされたすべてのアクセラレーター (有効化と無効化の両方) について、固定の時間単位課金費用のほか、標準のデータ転送速度を超過した分が、プレミアムデータ転送料金 (DT-Premium) として課金されます。DT-Premium は、使用しているトラフィックの方向 (インターネットでのアプリケーションへのインバウンドトラフィックやアプリケーションからのユーザーへのアウトバウンドトラフィックなど) を毎時間計算します。

> 固定料金: アクセラレーターが削除されるまで、あなたのアカウントでアクセラレーターが稼働している 1 時間 (1 時間未満は繰上げ) 毎に 0.025 USD 課金されます。
プレミアムデータ転送料金 (DT-Premium): AWS ネットワーク経由で転送されるデータのギガバイトあたりの料金です。DT-Premium の料金はリクエストを受け付けた AWS リージョン (送信元) とレスポンスが向けられた AWS エッジロケーション (送信先) により異なります。主要なデータ転送方向でのみ DT-Premium が課金されます。AWS Global Accelerator にかかる DT-Premium 料金は AWS Global Accelerator を流れるすべてのトラフィックに適用され、送信先がインターネット、別の AWS リージョン、アベイラビリティーゾーンかは問いません。DT-Premium 料金は、AWS リージョンで実行されているアプリケーションエンドポイントに対して請求される通常の EC2 データ転送料金に追加されます。

- 固定の時間単位課金費用
    - 1H毎に 0.025USD
- 標準のデータ転送速度を超過した分が課金される（プレミアムデータ転送料金）
    - GBあたりの料金
    - 料金は、リクエストを受け付けたAWSリージョンと、レスポンスが向けられたAWSエッジロケーションにより異なる
    - EC2データ転送料金に追加される

# 実践
## 速度比較ツール
https://speedtest.globalaccelerator.aws/#/
で、AWS リージョン間で直接インターネットダウンロードと比較したグローバルアクセラレータのダウンロード速度を確認できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206276/6290d42a-baf9-4516-cedb-c3c8cf8823d4.png)

- Tokyoですと、インターネットと比較して、61 % 高速になりました

# 考察
今回、Global Acceleratorを整理してみました。
直近では、使う機会はなさそうですが、知識として整理できたのは良かったです。


# 参考
https://docs.aws.amazon.com/ja_jp/global-accelerator/latest/dg/what-is-global-accelerator.html

https://aws.amazon.com/jp/global-accelerator/pricing/

https://www.cloudflare.com/ja-jp/learning/cdn/glossary/anycast-network/