1. Application Load Balancer (ALB) 개요
ALB는 Layer 7 (HTTP) 레벨에서 작동하는 로드 밸런서입니다.
핵심 기능:
- 여러 머신의 HTTP 애플리케이션에 대한 로드 밸런싱 (Target Groups)
- 동일 머신의 여러 애플리케이션에 대한 로드 밸런싱 (예: 컨테이너)
- HTTP/2 및 WebSocket 지원
- 리다이렉트 지원 (예: HTTP → HTTPS)
2. ALB 라우팅 기능
ALB는 라우팅 테이블을 통해 다양한 Target Group으로 트래픽을 분산합니다.
라우팅 방식
URL 경로 기반 라우팅:
example.com/users → User 서비스
example.com/posts → Post 서비스
호스트명 기반 라우팅:
one.example.com → 첫 번째 서비스
other.example.com → 두 번째 서비스
쿼리 스트링/헤더 기반 라우팅:
example.com/user?id=123&order=false
- HTTP 헤더 값에 따른 라우팅
마이크로서비스 최적화
- 마이크로서비스 & 컨테이너 기반 애플리케이션에 최적 (Docker, Amazon ECS)
- 포트 매핑 기능: ECS의 동적 포트로 리다이렉트
- 비교: Classic Load Balancer는 애플리케이션마다 별도 필요
3. Target Groups (대상 그룹)
ALB가 트래픽을 전달할 수 있는 4가지 Target Group 유형:
EC2 인스턴스:
- Auto Scaling Group으로 관리 가능
- HTTP 프로토콜 사용
ECS 태스크:
Lambda 함수:
IP 주소:
- 반드시 사설 IP여야 함
- 온프레미스 서버 연결 시 사용
Target Group 특징
- ALB는 여러 Target Group으로 라우팅 가능
- Health Check는 Target Group 레벨에서 수행
4. 실제 라우팅 예시
마이크로서비스 라우팅
ALB → /user 경로 → User 서비스 Target Group (EC2)
→ /search 경로 → Search 서비스 Target Group (EC2)
플랫폼별 라우팅
ALB → ?Platform=Mobile → 모바일 Target Group (AWS EC2)
→ ?Platform=Desktop → 데스크톱 Target Group (온프레미스)
5. ALB 주요 특징
고정 호스트명
- 형식:
XXX.region.elb.amazonaws.com
- 애플리케이션에서 사용할 고정된 DNS 엔드포인트 제공
클라이언트 IP 처리
ALB는 연결 종료(Connection Termination)를 수행합니다.
문제: 애플리케이션 서버는 클라이언트의 실제 IP를 직접 볼 수 없음
해결: HTTP 헤더를 통한 클라이언트 정보 전달
- X-Forwarded-For: 클라이언트의 실제 IP
- X-Forwarded-Port: 클라이언트가 사용한 포트
- X-Forwarded-Proto: 사용된 프로토콜 (HTTP/HTTPS)
트래픽 흐름
클라이언트 (12.34.56.78)
↓
ALB (연결 종료)
↓
EC2 인스턴스 (ALB 사설 IP로 수신)
↓
X-Forwarded-For 헤더로 실제 클라이언트 IP 확인
💡 핵심 포인트
- ALB는 Layer 7에서 작동하여 HTTP 기반의 지능적 라우팅 제공
- 마이크로서비스 아키텍처에 최적화된 설계
- 다양한 라우팅 규칙으로 복잡한 애플리케이션 구조 지원
- Target Group 레벨에서 Health Check 및 관리 수행
- 클라이언트 정보는 HTTP 헤더를 통해 애플리케이션에 전달
작성일: 2026-01-26
주제: AWS ALB