본문 바로가기
CLOUD/AWS

AWS Network Loadbalancer의 ALPN이란?

by Rainbound-IT 2025. 9. 9.
반응형

NLB의 ALPN(Application-Layer Protocol Negotiation) 기능은 TLS 연결에서 클라이언트와 서버가 어떤 애플리케이션 프로토콜(HTTP/1.1, HTTP/2, gRPC 등)을 사용할지 협상하는 메커니즘입니다.

즉, 클라이언트가 서버로 TLS 핸드셰이크를 할 때 "난 HTTP/2 또는 HTTP/1.1을 지원한다"라고 알리고, 서버(NLB 뒤의 Target 그룹)가 지원하는 프로토콜을 골라주는 방식이에요.


1. ALPN 기본 개념

  • TLS 확장(extension) 중 하나.
  • 애플리케이션 계층 프로토콜을 TLS 핸드셰이크 중에 미리 결정.
  • Upgrade 헤더 방식보다 빠르고 안전하게 프로토콜 협상 가능.

예:

  • 브라우저(클라이언트)가 HTTP/2 + HTTP/1.1 지원을 선언.
  • 서버가 HTTP/2를 지원한다면, ALPN으로 HTTP/2를 선택.
  • 서버가 HTTP/2를 지원하지 않으면 HTTP/1.1로 자동 fallback.

2. AWS NLB와 ALPN

AWS **Network Load Balancer(NLB)**는 TLS Listener를 설정할 때 ALPN 정책을 지정할 수 있습니다.

  • 정책 옵션:
    • HTTP2Preferred → HTTP/2 우선, 지원 안 되면 HTTP/1.1
    • HTTP2Only → 반드시 HTTP/2만 허용
    • None → ALPN 비활성화 (HTTP/1.1만 사용)
  • 동작 방식:
    1. 클라이언트(TLS ClientHello) → ALPN 확장에 지원 프로토콜 전달.
    2. NLB Listener에서 설정된 ALPN 정책 확인.
    3. Target 그룹과의 연결은 TCP 레벨이므로, 실제 애플리케이션 계층 프로토콜은 NLB에서 협상된 결과를 그대로 전달.

3. 왜 중요한가?

  • 성능 최적화: gRPC나 HTTP/2는 다중 스트림과 헤더 압축 덕분에 HTTP/1.1보다 효율적.
  • 호환성: ALPN을 쓰면 클라이언트와 서버 간에 호환 가능한 최적의 프로토콜을 자동 선택.
  • TLS 기반 서비스 필수 요소: gRPC over TLS, HTTP/2 over TLS 등을 사용할 때 반드시 필요.

4. 실제 예시

예를 들어,

  • gRPC 서비스를 NLB 뒤에 두고, Listener를 TLS + ALPN HTTP2Only로 설정하면, 클라이언트는 gRPC 통신을 위해 반드시 HTTP/2로 연결해야 함.
  • 반대로 HTTP2Preferred로 두면 브라우저나 클라이언트가 HTTP/2를 지원하지 않더라도 HTTP/1.1로 fallback 가능.

👉 정리하면,
NLB의 ALPN은 TLS에서 HTTP/1.1, HTTP/2, gRPC 같은 프로토콜을 협상해서 선택하는 기능이고, 성능 최적화와 호환성 확보를 위해 필수적인 역할을 합니다.

반응형

댓글