[Infra] ALB vs NLB

고수가 되고 싶은 감자·2026년 9월 17일
post-thumbnail

ALB vs NLB 차이점 정리 (어떤 로드밸런서를 써야 할까?)

AWS에서 쿠버네티스(EKS)나 인프라 환경을 구축하다 보면 항상 마주치는 고민이 있다.

"외부 트래픽을 분산해서 받으려면 로드밸런서를 달아야 하는데, ALB를 써야 할까 NLB를 써야 할까? 둘 다 로드밸런서인데 뭐가 다른 거지?"

두 서비스는 동작하는 네트워크 계층(OSI 계층) 자체가 다르고, 제공하는 기능과 목적이 완전히 다르다.

두 로드밸런서를 선택하는 기준과 차이점을 정리해 봤다.


1. 한 줄 요약: L7이냐 L4냐

  • ALB (Application Load Balancer): L7 (애플리케이션 계층) 로드밸런서. HTTP/HTTPS 패킷의 '내용(URL, 헤더, 쿠키)'을 들여다보고 똑똑하게 라우팅해 주는 문지기.
  • NLB (Network Load Balancer): L4 (전송 계층) 로드밸런서. 패킷 내용 안 보고 IP와 포트 번호(TCP/UDP)만 보고 빠른 속도로 트래픽을 밀어 넣어주는 고속도로 톨게이트.

2. ALB (Application Load Balancer)

주요 특징

  • L7 애플리케이션 계층에서 동작한다.
  • HTTP, HTTPS, gRPC, WebSocket 프로토콜에 특화되어 있다.
  • URL 경로 및 호스트 기반 라우팅:
    • example.com/api/* 요청은 백엔드 Pod 그룹으로 보낸다.
    • example.com/* 요청은 프론트엔드 Pod 그룹으로 보낸다.
  • 보안 및 인증서 연동:
    • AWS WAF (웹 방화벽)를 직접 붙여서 SQL Injection, DDoS, 악성 크롤러를 쉽게 차단할 수 있다.
    • ACM(AWS Certificate Manager) SSL/TLS 인증서를 붙여 HTTPS 통신을 종단하기 매우 편하다.

장단점

  • 장점: 똑똑하다. 라우팅 룰이 강력하고, 마이크로서비스(MSA) 환경에서 하나의 ALB로 여러 서비스를 분기할 수 있어 비용을 아낄 수 있다.
  • 단점: 패킷 내부를 파싱해야 하므로 NLB에 비해 레이턴시가 수 밀리초 정도 발생한다. 또한 고정 IP를 할당할 수 없다 (도메인 주소로만 통신한다)

3. NLB (Network Load Balancer)

주요 특징

  • L4 전송 계층에서 동작한다.
  • TCP, UDP, TLS 프로토콜을 다룬다.
  • 초저지연 (Ultra-low latency): 마이크로초(μs) 단위의 극도로 빠른 응답 속도를 제공한다.
  • 고정 IP (Elastic IP) 할당 가능:
    • 로드밸런서 생성 시 서브넷별로 고정된 공인 IP를 박아둘 수 있다.
    • 외부 파트너사나 협력사 방화벽에 "우리 서버 IP 화이트리스트 등록해 주세요"라고 요청해야 할 때 필수적이다.
  • 대규모 트래픽 폭증 처리: 사전 확장 작업 없이도 갑작스러운 초당 수백만 건의 트래픽을 즉각 받아낸다.

장단점

  • 장점: 극도로 빠르고 단순하며, 대량 트래픽 처리에 강하고 고정 IP를 쓸 수 있다.
  • 단점: 패킷 내부를 보지 못하므로 URL 경로(/api 등) 기반 라우팅이 불가능하다. WAF를 직접 붙일 수 없다.

4. 비교표

비교 항목ALB (Application Load Balancer)NLB (Network Load Balancer)
OSI 계층L7 (애플리케이션 계층)L4 (전송 계층)
주요 프로토콜HTTP, HTTPS, gRPC, WebSocketTCP, UDP, TLS
라우팅 기준URL 경로, 호스트명, HTTP 헤더/쿠키IP 주소, 포트 번호
지연 시간 (Latency)수 밀리초 (ms)마이크로초 (μs, 초저지연)
고정 IP (EIP) 지원❌ 불가 (도메인 기반)⭕ 가능 (서브넷당 EIP 할당)
AWS WAF 연동⭕ 직접 연동 가능❌ 불가 (ALB 앞단 경유 필요)
주요 사용 사례일반 웹/앱 서비스, REST API, MSA 환경실시간 게임 서버, 스트리밍, IoT, 금융 거래

5. 실무 선택 기준: 언제 뭘 써야 할까?

90%의 일반 웹 서비스는 "ALB"를 쓴다

  • 스프링 부트, Node.js, Django 기반의 일반 웹사이트나 REST API를 운영한다면 무조건 ALB다.
  • 경로별 라우팅(/api, /auth)이 필요하고, WAF 연동과 SSL 인증서 처리가 필수적이기 때문이다.

이럴 때는 "NLB"를 쓴다

  1. 고정 IP가 필요할 때: 제휴사/금융사 연동 시 상대방 방화벽에 IP를 등록해야 하는 경우
  2. TCP/UDP 자체 통신: 실시간 게임 서버(UDP 소켓), IoT 장비(MQTT), 주식/코인 실시간 시세 데이터 통신
  3. 초저지연 요구: 1ms의 지연 시간도 민감한 금융 체결 시스템이나 대용량 스트리밍

6. 마치며

정리하자면:

  1. ALB는 L7 애플리케이션 계층에서 URL/헤더 기반 라우팅, SSL Offloading, WAF 연동을 담당하는 똑똑한 관문
  2. NLB는 L4 전송 계층에서 초저지연, 대규모 트래픽 처리, 고정 IP(EIP)를 보장하는 고속 관문
  3. 일반 웹/API/MSA 환경은 90% 이상 ALB를 선택하는 것이 표준
  4. 고정 IP 방화벽 연동이나 TCP 소켓 통신이 필요할 때만 NLB를 선택
  5. 대고객 서비스는 외부용(Internet-facing) ALB, ArgoCD나 Grafana 같은 사내 도구는 내부용(Internal) ALB로 분리하는 것이 보안 모범 사례

이상.

profile
DevOps 엔지니어 지망생

0개의 댓글