ALB(Application Load Balancer) えーえるびー
簡単に言うとこんな感じ!
ALBは「賢い交通整理係」だよ!Webサービスへのアクセスを複数のサーバーに振り分けてくれるんだけど、URLやリクエストの中身を見て「この道はあっち!」って仕分けできるのが特徴なんだ。AWSの代表的な機能の一つだよ!
ALB(Application Load Balancer)とは
ALB(Application Load Balancer) とは、AWS(Amazon Web Services)が提供するロードバランサー(負荷分散装置)の一種で、アプリケーション層(HTTP/HTTPS)の情報を読み取って、リクエストを適切なサーバーへ振り分ける サービスです。
従来のロードバランサーは「とにかく均等に振り分ける」シンプルな役割でしたが、ALBはリクエストのURL・HTTPヘッダー・クッキー・メソッドなどの内容を見て振り分け先を変える「コンテンツベースルーティング」 が可能です。たとえば /api/ へのリクエストはAPIサーバーへ、/images/ へのリクエストは画像サーバーへ、といった細かい制御ができます。
ALBはAWSの Elastic Load Balancing(ELB) ファミリーの一つとして2016年に登場し、マイクロサービスやコンテナ(ECS・EKS)との親和性が高く、モダンなWebアーキテクチャの中核を担うサービスとして広く使われています。
ALBの仕組みと主な機能
ALBは受け取ったHTTP/HTTPSリクエストを解析し、設定したルール(リスナールール) に従ってターゲットグループ(振り分け先サーバーの集合)へ転送します。
| 機能 | 内容 |
|---|---|
| パスベースルーティング | URLパス(/api/、/shop/など)で振り分け先を変える |
| ホストベースルーティング | ドメイン名(api.example.com vs www.example.com)で振り分け |
| HTTPヘッダー/メソッドルーティング | GETとPOSTで振り分け先を変えるなど |
| ターゲットグループ | EC2・Lambda・ECSコンテナなど複数の宛先をグループ化 |
| ヘルスチェック | サーバーの死活監視を自動で行い、障害時は自動除外 |
| SSL/TLS終端 | HTTPSの暗号化・復号をALBで一括処理 |
| Sticky Session | 同じユーザーを同じサーバーに送り続けるセッション維持 |
| WAF連携 | AWS WAFと組み合わせて不正アクセスを遮断 |
ALB vs CLB vs NLBの覚え方
AWSのELBには3種類あります。「A(Application)は賢い、N(Network)は速い、C(Classic)はレガシー」と覚えましょう。
| 種類 | レイヤー | 特徴 | 向いている用途 |
|---|---|---|---|
| ALB | L7(アプリ層) | URL・ヘッダーで振り分け | Webアプリ・マイクロサービスAPI |
| NLB | L4(トランスポート層) | 超高速・固定IP | ゲーム・IoT・大量TCPコネクション |
| CLB | L4/L7 | 旧世代・機能が少ない | 古いシステムの維持(非推奨) |
ルーティングのイメージ
クライアント
│
▼
[ ALB:リスナー(443/HTTPS) ]
│
├─ /api/* → ターゲットグループA(APIサーバー群)
├─ /admin/* → ターゲットグループB(管理サーバー)
└─ /* → ターゲットグループC(フロントエンド)
歴史と背景
- 2009年 — AWSが初代ロードバランサー「CLB(Classic Load Balancer)」をElastic Load Balancingとしてリリース
- 2014年頃 — マイクロサービスアーキテクチャの普及により、URLごとに異なるサービスへ振り分けたいニーズが急増
- 2016年8月 — AWSがALB(Application Load Balancer)をリリース。L7の高度なルーティングが可能に
- 2017年 — NLB(Network Load Balancer)もリリースされ、ELBファミリーが3種体制に
- 2019年〜 — ECS(コンテナサービス)やEKS(Kubernetes)との統合が強化され、コンテナ時代の標準的な入口として定着
- 現在 — サーバーレス(Lambda)への直接転送やgRPCプロトコルのサポートも追加され、ALBは現代的なクラウドアーキテクチャに不可欠な存在に
ALBとシステムアーキテクチャ上の位置づけ
ALBはインターネットとアプリケーションサーバーの「入口」に配置され、複数のサーバーやサービスへトラフィックを分散します。以下はALBがマイクロサービス構成でどう機能するかの全体像です。
ALBが特に力を発揮する場面
| シナリオ | ALBの使い方 |
|---|---|
| マイクロサービス | サービスごとにターゲットグループを分けてURLで振り分け |
| Blue/Greenデプロイ | 新旧バージョンへの振り分け比率を段階的に変更してリリース |
| A/Bテスト | 加重ルーティングで一部のユーザーだけ新機能に誘導 |
| コンテナ(ECS/EKS) | コンテナの動的なポートに自動で転送先を更新 |
| Lambda連携 | サーバーレス関数に直接HTTPリクエストを転送 |
関連する規格・RFC
| 規格・RFC番号 | 内容 |
|---|---|
| RFC 7230 | HTTP/1.1 メッセージ構文とルーティングの基礎仕様 |
| RFC 7540 | HTTP/2(ALBはHTTP/2をサポート) |
| RFC 8446 | TLS 1.3(ALBのHTTPS終端で使用) |
| RFC 7235 | HTTP認証フレームワーク(ヘッダーベースルーティングの基礎) |
関連用語
- ELB(Elastic Load Balancing) — AWSのロードバランサーサービス全体の総称(ALBはその一種)
- NLB(Network Load Balancer) — L4層で動作する超高速なAWSロードバランサー
- ロードバランサー — 複数サーバーにトラフィックを分散する装置・機能の総称
- マイクロサービス — アプリを小さなサービス群に分割するアーキテクチャ手法
- ターゲットグループ — ALBの振り分け先サーバーをまとめたグループ設定
- Auto Scaling — 負荷に応じてサーバー台数を自動増減する仕組み
- WAF(Web Application Firewall) — Webアプリへの攻撃を検知・遮断するセキュリティ機能
- SSL/TLS — HTTPS通信の暗号化プロトコル(ALBでの終端処理に関係)