ロードバランサーは、一言でいうと交通整理係だ。複数のサーバーへリクエストを振り分けることで、システムの速度・安定性・拡張性を同時に高めてくれる。
ラーメン店で考えると
人気のラーメン店を想像してほしい。レジが1台しかないと行列ができる。でも複数のレジを開けて「こちらへどうぞ」と案内する人がいれば、流れはスムーズになる。
ロードバランサーはまさにその案内係の役割を担う。
仕組みの流れ
1. ユーザーがアプリにアクセスする
2. リクエストがロードバランサーに届く
3. ロードバランサーが「どのサーバーが空いているか」を判断する
4. 適切なサーバーにリクエストを振り分ける
5. サーバーが処理してユーザーにレスポンスを返す
ユーザーはどのサーバーが応答したかを意識しない。ロードバランサーが透過的に仲介してくれるためだ。
なぜ必要か
サーバーが1台だけだと、アクセスが集中したときに限界を迎えてしまう。ロードバランサーがあると、次の3つのメリットが得られる。
速度が上がる — 空いているサーバーに振り分けるので、待ち時間が減る。
落ちにくくなる — 1台が障害を起こしても、他のサーバーが引き継ぐ。単一障害点(SPOF)を排除できる。
スケールしやすい — サーバーを増やすだけで処理能力が上がる。トラフィックの増加にも柔軟に対応できる。
AWSではALBが使われる
AWSには複数種類のロードバランサーがあるが、Webアプリケーションでよく使われるのが ALB(Application Load Balancer) だ。
ECSのコンテナ群の前に置いて、HTTPリクエストをいい感じに分散してくれる。
Internet
↓
ALB(Application Load Balancer)
↓ ↓ ↓
ECS Task1 ECS Task2 ECS Task3
パスベース・ホストベースルーティング
ALBはリクエストの内容を見て振り分け先を変えることもできる。
| ルーティング種別 | 判断基準 | 例 |
|---|---|---|
| パスベース | URLのパス | /api/* → APIサーバー |
| ホストベース | ホスト名 | api.example.com → APIサーバー |
/api/* はAPIサーバーへ、/static/* はCDNへ、といった振り分けが1台のALBで実現できる。
一言でまとめると
「複数サーバーへリクエストを振り分け、速度・可用性・スケーラビリティを同時に高める仕組み」 がロードバランサーだ。
AWSのALBはHTTPレイヤーで動くため、パスやホスト名を見たルーティングが得意。ECS Fargateと組み合わせるのが現代のAWSでよく見られる構成だ。
参考文献・リンク
https://aws.amazon.com/jp/elasticloadbalancing/
https://docs.aws.amazon.com/ja_jp/elasticloadbalancing/latest/application/introduction.html
https://www.cloudflare.com/ja-jp/learning/performance/what-is-load-balancing/