ALB, NLB, GWLB & Global Accelerator

- **ALB（Application Load Balancer）**
- **NLB（Network Load Balancer）**
- **GWLB（Gateway Load Balancer）**

って、なんとなく「レイヤーがちゃうな」って理解しとるけど、ちょっと知識があいまいだったりせん？

しかもワイ、ここに**Global Accelerator**がどう絡んでくんのか、うまく答えられんかってん。

全部まとめて、「どれをどう使い分けるべきか」を分かりやすく整理するで！

---

## **1. ALB、NLB、GWLB って何？**
### **ALB（Application Load Balancer）**
- **って何？**  
    - **アプリケーション層（L7）** で動くロードバランサや
    - HTTP/HTTPSプロトコル
        - ヘッダーやパスに基づいてトラフィックを振り分けるんや
- **特徴**:
  - URLパスベースやホストベースのルーティングが可能
  - WebSocket、gRPCにも対応
  - WAF（Web Application Firewall）と統合してセキュリティ強化できる

---

### **NLB（Network Load Balancer）**
- **って何？**  
    - **ネットワーク層（L4）** で動く超高速なロードバランサや
    - TCP、UDPレベルで動くトラフィックを処理するで
- **特徴**:
  - 超低レイテンシー
  - IPアドレスベースのターゲット指定が可能
  - Static IP（固定IP）が利用できるからDNS更新不要
  - 一部のAWSサービス（VPC Latticeなど）と相性が良い
  - **WAFは使えへんで！！**

---

### **GWLB（Gateway Load Balancer）**
- **って何？**  
    - **セキュリティアプライアンス向け**のロードバランサや
    - ファイアウォールや侵入検知システム（IDS）をスケーラブルに設置するのに使うで！
- **特徴**:
  - **透明性**：トラフィックを中継するだけで、アプリケーションには見えへん
  - AWSパートナー製品（Fortinet、Palo Altoなど）と連携
  - セキュリティトラフィック用に最適化

---

## **2. Global Acceleratorとの関係**
- **って何？**  
    - AWSの**グローバルネットワーク**を使って、ユーザーから最適なエンドポイント（ALB、NLB、EC2など）にトラフィックをルーティングするサービスや
- **特徴**:
  - **パフォーマンス向上**：
      - インターネット経由ではなく、AWSが持つ高速で信頼性の高いバックボーンネットワークを使うから、パフォーマンスが向上する！
  - **高可用性**：
      - 世界中にあるAWSのエッジロケーションから最適なエンドポイントに接続
  - **IPアドレス固定**：
      - アプリケーションを移行してもIP変更なし
      - ユーザーがどの国や地域からアクセスしても、同じ固定IPでサービスを提供できる
  - **高可用性**：
      - リージョン間フェイルオーバーが可能
          - 例えば、東京リージョンがダウンしたら、オレゴンリージョンに自動的に切り替える
      - アクティブ-アクティブ構成やアクティブ-スタンバイ構成をサポート
  - **ヘルスチェック**：
     - 各エンドポイントの状態を監視し、トラフィックを「健全なエンドポイント」にだけ送る
     - アプリケーションが動いていないエンドポイントへのリクエストを自動で回避
- **エンドポイントに指定できるもの：**：
    - ALB（Application Load Balancer）
    - NLB（Network Load Balancer）
    - EC2インスタンス
    - Elastic IPアドレス

---

### **Global AcceleratorとALB/NLBの違い**
- **Global Accelerator**
    - エンドポイント（ALB/NLB/EC2など）にトラフィックを送る**上位サービス**
- **ALB/NLB**
    - トラフィックを具体的なアプリケーションやサービスに振り分けるロードバランサ

:::note info
- **Global Accelerator**
    - 「道案内役」 
- **ALB/NLB**
    - 「ゲートの番人」
:::
---

## **3. どれを使うべき？**


| **項目**              | **ALB**                          | **NLB**                          | **GWLB**                      | **Global Accelerator**       |
|-----------------------|-----------------------------------|-----------------------------------|--------------------------------|------------------------------|
| **プロトコル層**      | L7（HTTP/HTTPS）                 | L4（TCP/UDP）                    | L3/L4（IP/TCP）               | グローバルルーティング       |
| **ユースケース**      | Webアプリ、API                   | 超低レイテンシーアプリ           | ファイアウォール、IDS/IPS     | 複数リージョン間の高速接続  |
| **パフォーマンス**    | 高機能（L7処理）で若干遅め       | 超高速                           | 中間（セキュリティ処理次第）   | 高速（AWSバックボーン利用） |
| **固定IPの利用**      | **利用不可**                         | 利用可能                         | 利用可能                      | 利用可能                    |
| **主な特徴**          | URL/ホストベースルーティング       | 固定IP、TCP/UDP対応              | サードパーティセキュリティ連携 | エッジロケーションから接続 |

せっかくなのでGlobal Accelerator vs CloudFrontの表も！
| **特徴**                | **Global Accelerator**                                 | **CloudFront**                       |
|-------------------------|-------------------------------------------------------|--------------------------------------|
| **目的**                | グローバルトラフィックの最適ルーティング               | 静的コンテンツのキャッシュと配信      |
| **対象**                | 動的・静的トラフィックの両方                           | 静的コンテンツ（画像、CSS、JSなど）   |
| **ネットワーク利用**    | AWSバックボーンを使用してエンドポイントにルーティング   | エッジロケーションでキャッシュして配信 |
| **ユースケース**         | アプリケーション全体のパフォーマンス向上               | コンテンツ配信の高速化               |

---

## **4. おまけ**
### **ALBのターゲットグループでのgRPCサポート**
- gRPCは高速なRPCプロトコルやけど、ALBはこれを直接サポートしとる。**分散アプリケーション**やマイクロサービスではALBが大活躍する！

### **NLBのTLSパススルー**
- NLBは暗号化されたTLSトラフィックをそのままターゲットに転送できる
- これにより、EC2やオンプレミスでTLS終端を行いたい場合でもNLBを使える

### **GWLBと仮想セキュリティアプライアンス**
- GWLBは、例えば侵入検知（IDS）やデータ漏洩防止（DLP）のためのサードパーティアプライアンスをスケールさせる仕組みとして重宝される
- しかも、透明性があるからネットワーク構成を壊さない

### **Global Acceleratorと地域間の災害復旧**
- Global Acceleratorを使うと、**複数のリージョン間**でアクティブ-アクティブ構成が簡単に実現できる
- たとえば、東京リージョンがダウンしてもシームレスにオレゴンリージョンにフェイルオーバーできる

---