ロードバランシング
複数のサーバーにトラフィックを分散し、可用性とスケーラビリティを向上させる仕組み
ロードバランシングとは
ロードバランシング (Load Balancing) は、複数のサーバーにトラフィックを分散し、単一サーバーへの過負荷を防ぎ、可用性とスケーラビリティを向上させる仕組みである。
AWS のロードバランサー
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 との 組み合わせを図で示す。
ユーザー → CloudFront (CDN) → ALB → ECS
CloudFront で静的コンテンツをキャッシュし、動的リクエストのみ ALB に転送する。
さらに掘り下げるなら関連書籍が参考になる。
この記事は役に立ちましたか?
関連用語
オートスケーリング
トラフィックや負荷に応じてコンピュートリソースを自動的に増減させる仕組み
フェイルオーバー
障害発生時にスタンバイシステムへ自動的に切り替え、サービスの継続性を確保する仕組み
ヘルスチェックパターン
サービスの稼働状態を定期的に確認し、異常を検知したらトラフィックを切り離す仕組み
リバースプロキシ
クライアントとサーバーの間に位置し、リクエストを中継・制御するサーバー
TCP 輻輳制御
ネットワークの混雑を検知し、送信速度を動的に調整して公平で効率的なデータ転送を実現する TCP の仕組み
Template Method パターン
アルゴリズムの骨格を親クラスで定義し、具体的なステップをサブクラスに委ねるデザインパターン
関連する記事
アルゴリズム本ガイド - 競プロだけじゃない、実務に活きる選び方
アルゴリズム本の 3 タイプと、実務でアルゴリズムの知識が活きる場面、数学が苦手な人向けの学習ルートを紹介します。
機械学習・AI 本ガイド - エンジニアが読むべき技術書の選び方
機械学習の基礎から実践まで学べる技術書の選び方を紹介。「Python ではじめる機械学習」などのハンズオン本を軸に、数学が苦手な人向けの学習ルートと ML 本の賞味期限の見極め方を解説します。
セキュリティ本ガイド - Web 開発者が読むべき技術書の選び方
Web セキュリティの基礎から実践まで学べる技術書の選び方マトリクスと、読了後にやるべき 3 つのアクションを紹介します。