ロードバランサーは、一言でいうと交通整理係だ。複数のサーバーへリクエストを振り分けることで、システムの速度・安定性・拡張性を同時に高めてくれる。


ラーメン店で考えると

人気のラーメン店を想像してほしい。レジが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/