ロードバランシング
複数のサーバーにトラフィックを分散し、可用性とスケーラビリティを向上させる仕組み
インフラ可用性
ロードバランシングとは
ロードバランシング (Load Balancing) は、複数のサーバーにトラフィックを分散し、単一サーバーへの過負荷を防ぎ、可用性とスケーラビリティを向上させる仕組みである。
AWS のロードバランサー
| タイプ | レイヤー | 用途 |
|---|---|---|
| ALB (Application) | L7 (HTTP) | Web API、パスベースルーティング |
| NLB (Network) | L4 (TCP/UDP) | 高スループット、低レイテンシ |
| CLB (Classic) | L4/L7 | レガシー (非推奨) |
分散アルゴリズム
| アルゴリズム | 説明 | ALB |
|---|---|---|
| ラウンドロビン | 順番に振り分け | デフォルト |
| 最小接続数 | 接続数が少ないサーバーに振り分け | ✅ |
| IP ハッシュ | クライアント IP でサーバーを固定 | スティッキーセッション |
| 加重 | 重み付きで振り分け | ✅ |
パスベースルーティング
ALB
/api/* → API サーバー (ECS)
/static/* → S3 (静的ファイル)
/ws/* → WebSocket サーバー
ヘルスチェックに失敗したターゲットはトラフィックから自動的に除外される。
サーバーレスでのロードバランシング
Lambda + API Gateway の場合、ロードバランシングは不要。API Gateway が自動的にリクエストを Lambda に振り分け、Lambda が自動スケールする。
| アーキテクチャ | ロードバランサー |
|---|---|
| ECS / EKS | ALB が必要 |
| Lambda + API Gateway | 不要 (自動) |
| EC2 | ALB / NLB が必要 |
CloudFront との組み合わせ
ユーザー → CloudFront (CDN) → ALB → ECS
CloudFront で静的コンテンツをキャッシュし、動的リクエストのみ ALB に転送する。
さらに掘り下げるなら関連書籍が参考になる。