[AWS] ALB vs NLB: L7 vs L4 로드 밸런서
AWS ALB NLB, ALB, NLB, Application Load Balancer, Network Load Balancer, AWS Load Balancer, ELB
정의
| ALB | NLB | (Classic ELB) | |
|---|---|---|---|
| Layer | L7 (HTTP) | L4 (TCP/UDP) | L4 + L7 (legacy) |
| 라우팅 | path / host / header | port | 단순 |
| TLS termination | O | O (TLS listener) | O |
| WebSocket | O | O | 부분 |
| gRPC | O | O | X |
| 처리량 | 큼 | 매우 큼 | 보통 |
| Static IP | NO | 예 (EIP) | NO |
| Latency | 중간 (ms) | 극저지연 (µs) | 중간 |
| 가격 | LCU (요청 + 데이터) | LCU | 시간 + GB |
ALB (Application Load Balancer)
flowchart LR
Client -->|HTTP| ALB
ALB -->|/api/* | Tg1["Target Group 1<br/>(api pods)"]
ALB -->|/web/*| Tg2["Target Group 2<br/>(web pods)"]
ALB -->|host: admin.x.com| Tg3["Target Group 3<br/>(admin)"]
기능:
- Path-based / Host-based / Header / Query routing
- WebSocket / HTTP/2 (gRPC)
- WAF 통합
- Cognito / OIDC 인증 (앞단)
- Lambda 직접 target
- IP 또는 instance target
NLB (Network Load Balancer)
flowchart LR
Client -->|TCP/UDP| NLB["NLB<br/>(static IP, AZ 별)"]
NLB --> Tg[Target Group]
Tg --> EC2[(EC2 / IP)]
기능:
- 극저지연: 마이크로초.
- static IP: AZ 별 EIP 고정 (방화벽 허용 친화).
- millions of conn.
- TLS termination 옵션.
- TCP / UDP / TLS listener.
IMPORTANT
gRPC, WebSocket idle 대응 은 NLB 가 ALB 보다 안정. 정 idle timeout 길게.
선택 트리
flowchart TD
Q1{프로토콜}
Q1 -->|HTTP / HTTPS / gRPC| Q2{L7 라우팅 필요?}
Q1 -->|TCP / UDP| NLB[NLB]
Q2 -->|예| ALB[ALB]
Q2 -->|아니오 + 극저지연| NLB
Q2 -->|아니오 + 일반| ALB
Target Group
TargetType: instance | ip | lambda
HealthCheck:
Protocol: HTTP
Path: /health
Interval: 30s
HealthyThreshold: 2
UnhealthyThreshold: 3
Sticky Session
Stickiness:
Type: lb_cookie # ALB 가 쿠키 박음
Duration: 1d
또는 application-controlled (app 이 cookie 박음).
WAF 통합 (ALB 만)
flowchart LR
Client --> WAF[AWS WAF]
WAF --> ALB
ALB --> Target
Note[ALB 앞단 WAF: SQLi, XSS, rate limit, bot]
ALB → Lambda
TargetType: lambda
Targets:
- { Id: arn:aws:lambda:us-east-1:123:function:myFunc }
API Gateway 대신 ALB + Lambda 도 가능. 더 cheap, REST API 만.
흔한 함정
WARNING
- ALB Idle Timeout 60s = WebSocket / SSE 가 silent close. ping/pong 또는 timeout 늘림.
- NLB + auto-scaling = NLB 의 target deregistration delay. 트래픽 차단 후 수십 초 까지 일부 요청.
- HTTP/2 → 백엔드는 HTTP/1.1 = ALB 가 down-grade. gRPC backend 는 NLB 또는 HTTP/2 enable.
- NLB cross-zone disabled = AZ 간 불균등 분포. enable 권장 (가격 약간 더).
관련 위키
이 글의 용어 (4개)
- [AWS] Route 53: DNS, routing policies, health checkscloud
- 정의 Route 53 = AWS 의 글로벌 DNS + health check + 라우팅 정책. 단순 DNS 뿐 아니라 글로벌 트래픽 분산. Hosted Zone Alias Rec…
- [AWS] VPC: subnet, route, NAT, peeringcloud
- 정의 VPC (Virtual Private Cloud) = AWS 안의 논리적 격리 네트워크. CIDR 정의 + subnet 분할 + 라우팅. 구조 Subnet 종류 | 종류 |…
- [K8s] Ingress: L7 라우팅, TLS termination, Gateway APIkubernetes
- 정의 Ingress = 클러스터 외부 HTTP/HTTPS 트래픽 → 내부 Service 라우팅. L7 LB 역할. Service 의 LoadBalancer 다수 대안. [!IMP…
- [Network] Load Balancer: L4 vs L7, 알고리즘, sticky sessionnetwork
- 정의 Load Balancer 는 트래픽을 여러 백엔드로 분산 하는 인프라. 수평 확장 + 가용성 + 무중단 배포 의 토대. L4 vs L7 | 구분 | L4 (Transport…
이 개념을 다룬 위키 페이지 (7)
- wiki[AWS] API Gateway: REST/HTTP API 관리
- wiki[AWS] Auto Scaling: EC2 ASG, target tracking, predictive
- wiki[AWS] CloudFront: CDN, origin, behavior, signed URL
- wiki[AWS] ECS + Fargate: 컨테이너 오케스트레이션
- wiki[AWS] Route 53: DNS, routing policies, health checks
- wiki[AWS] VPC: subnet, route, NAT, peering
- wiki[Network] Load Balancer: L4 vs L7, 알고리즘, sticky session
💬 댓글