SAAの試験勉強において、Webアプリケーションのロードバランサー選定においてALBを採用する旨味は何なのか? 自分の理解が漠然としていた為、認識の整理とアウトプットを兼ねて、それぞれの特徴と採用基準をまとめました。
1. NLB(Network Load Balancer)の特徴
レイヤー4(TCP/UDP)に特化しているからこそ実現できる、圧倒的なパフォーマンスとネットワーク制御能力が特徴です。
-
通信速度・パフォーマンスが優れている
- ミリ秒未満の低レイテンシ
- 事前ウォーミングなしで、毎秒数百万リクエストのスパイクをそのまま処理可能
-
固定IPアドレス(EIP)を保持可能
- ALBでは動的IPが割り当てられる
-
HTTP/HTTPS以外のプロトコルに対応
- データベース通信、RTMP、ゲームサーバーなど、L4レベル(プロトコルベース)での負荷分散が可能
-
送信元IP(Source IP)の保持
- クライアントの元のIPをパケット内に保持したままターゲットへ渡せる
- ※ALBの場合は送信元がALBのIPに書き換わるため、
X-Forwarded-Forヘッダーを参照する必要あり
-
AWS PrivateLink のバックエンド(受入口)になれる
- VPCエンドポイント(Interface型)からのプライベート通信を受け止めて、オリジンの前でプロキシ可能
2. ALB(Application Load Balancer)の特徴
ALBは、レイヤー7(HTTP/HTTPS)を理解できる。
そして、Webアプリケーションのロードバランシングに有用な高度な機能が揃っている。
-
HTTP/HTTPSベースの高度なヘルスチェックが可能
- 「Webアプリとして実際に機能しているか(200 OKが返るか)」 という観点で監視ができ、サービスの可用性向上に寄与
- NLBはポート疎通(TCP接続)確認のみのため、アプリが500エラーでフリーズしていても正常と判定してしまうリスクあり
-
レイヤー7での柔軟なルーティング
- URLパスベースやホストベースでの振り分け(
/api/*は別サーバーへ、等)が可能
- URLパスベースやホストベースでの振り分け(
-
SSL証明書の一元管理と「SSLオフロード」
- 暗号化(HTTPS)の終端をALBにすることで、オリジン(EC2)側の復号負荷を大幅に軽減
- VPC内部はセキュリティが担保されているため、ALB ⇔ オリジン間は HTTP 通信で構成可能
- ACM(AWS Certificate Manager)との完全統合: 無料証明書の適用・自動更新に対応
-
セキュリティの強化
- AWS WAF を直接アタッチして、SQLインジェクションやXSSなどの攻撃をブロック可能
-
モダンプロトコルへの標準対応
- HTTP/2、HTTP/3、WebSocket をALBが自動で仲介するため、オリジン側の構成変更が不要
まとめ:選定の基準
上記の理由から、Webアプリケーションをロードバランシングする場合は、通信パフォーマンスや固定IPといった特別な要件(L4レベルの制約)がない限り、ALBを採用するメリットのほうが大きい。