로드밸런서(ALB/NLB)를 이해하기 위한 통신 흐름의 기초
ALB와 NLB를 이해하려면 먼저 "요청이 어떻게 전달되는지"부터 알아야 한다. 웹에서 우리가 어떤 요청을 보낼 때, 그 요청은 단순히 “URL을 입력한다”로 끝나지 않는다. 실제로는, HTTP(또는 HTTPS)라는 웹 통신 규칙이 TCP라는 통신 경로 위에서 동작한다.
예를 들어, 사용자가 브라우저에 https://example.com/login을 입력하면, 이 요청은 다음과 같은 흐름으로 전달된다:
HTTP 요청 내용 → TCP 연결 → IP 주소와 포트
즉, HTTP는 “어떤 요청을 보내는가”를 담고 있고, TCP는 “그 요청을 어떻게 안정적으로 전달할 것인가”를 담당하는 역할을 한다.
ALB와 NLB는 어떤 기준으로 요청을 전달하는가?
이제 본격적으로 ALB와 NLB의 차이를 살펴보자. 두 로드 밸런서는 모두 클라이언트 요청을 백엔드 서버로 전달하는 역할을 하지만, 무엇을 기준으로 라우팅을 결정하느냐에 따라 동작 방식이 달라진다.
Application Load Balancer (ALB)는 HTTP 요청의 내용을 분석해서 요청 경로(URL), 헤더, 쿠키 등을 기준으로 “이 요청은 어떤 서버로 가야 하는가”를 판단한다. 예를 들어 /api 요청은 API 서버로, /admin 요청은 관리 서버로 보내는 식이다.
반면, Network Load Balancer (NLB)는 이런 내용을 전혀 보지 않고, 단순히 TCP 연결의 IP 주소와 포트만 보고 요청을 전달한다.
HTTP가 아니라 gRPC, 게임 서버, 실시간 채팅처럼 빠르고 간단한 통신이 필요한 경우에 자주 사용된다.
예를 들어, 실제로 게임 서버 내부의 로직은 매우 복잡하지만 클라이언트가 서버에 보내는 요청의 형식 자체는 아주 간단한 경우가 많다. “공격”, “이동” 같은 행동을 서버에 알릴 때, HTTP처럼 복잡한 메서드나 헤더를 쓸 필요 없이, 몇 바이트의 간단한 TCP 메시지로만 처리할 수 있다. 게임은 초당 수십 번의 요청이 오가기 때문에, HTTP처럼 매번 구조화된 요청을 보내기보다는 TCP를 통해 빠르고 가볍게 데이터를 주고받는 방식이 훨씬 효율적이다.
정리하자면, 요청의 성격에 따라 적절한 로드 밸런서를 선택해야 한다.
- 웹사이트나 REST API처럼 요청 내용에 따라 분기 처리가 필요한 경우에는 ALB가 적합하다.
- 실시간 처리, 게임 서버, 채팅 시스템처럼 HTTP가 필요 없고 빠른 통신이 중요한 경우에는 NLB가 효율적이다.
- 만약 고정 IP 주소가 필요하거나 TLS 암호화를 백엔드까지 그대로 전달하고 싶을 경우에도 NLB가 선호된다.