로드 밸런서 – 트래픽을 분산해서 서버 부하를 줄이는 방법

1. 서버 한 대로 감당이 안 될 때 어떻게 할까?

서비스가 성장하면서 동시 접속자가 늘어나면 서버 한 대로 모든 요청을 처리하기 어려워집니다. 응답이 느려지고 심하면 서버가 다운됩니다. 또한 그 서버 하나가 죽으면 서비스 전체가 중단됩니다.

해결 방법은 서버를 여러 대로 늘리는 것입니다. 하지만 서버가 여러 대 있다면 사용자 요청을 어떻게 분배할까요? 이때 필요한 것이 로드 밸런서입니다.

2. 수직 확장 vs 수평 확장

트래픽을 감당하는 두 가지 방법이 있습니다.

수직 확장(Scale Up): 서버 자체의 사양을 높입니다. CPU를 더 빠르게, 메모리를 더 크게 바꾸는 방식입니다. 간단하지만 사양의 물리적 한계가 있고 비용이 기하급수적으로 높아집니다. 서버를 업그레이드하는 동안 서비스가 잠깐 중단됩니다.

수평 확장(Scale Out): 서버 대수를 늘립니다. 같은 사양의 서버를 추가해 병렬로 처리하는 방식입니다. 이론상 무한히 확장 가능하고 한 서버가 죽어도 나머지가 서비스를 이어받습니다. 수평 확장을 위해 로드 밸런서가 필요합니다.

3. 로드 밸런서란 무엇인가?

**로드 밸런서(Load Balancer)**는 클라이언트의 요청을 여러 서버에 분산시켜주는 장치 또는 소프트웨어입니다.

패스트푸드 매장 비유로 이해하면 쉽습니다. 계산대가 여러 개 있을 때 입구의 직원이 “2번 계산대로 가세요”, “3번 계산대로 가세요”처럼 손님을 안내합니다. 이 직원이 로드 밸런서 역할입니다.

로드 밸런서를 사용하면 클라이언트는 실제로 몇 대의 서버가 있는지 알 필요가 없습니다. 하나의 주소로 접속하면 로드 밸런서가 적절한 서버로 연결합니다. 서버 중 하나가 죽으면 해당 서버로의 요청을 자동으로 중단하는 장애 조치도 수행합니다.

4. 로드 밸런싱 알고리즘의 종류

어떤 서버로 요청을 보낼지 결정하는 방식입니다.

라운드 로빈(Round Robin): 서버 목록을 순서대로 돌아가며 배분합니다. 구현이 단순하고 서버 사양이 비슷할 때 효과적입니다.

최소 연결(Least Connections): 현재 활성 연결 수가 가장 적은 서버로 보냅니다. 요청 처리 시간이 다양한 경우에 효과적입니다.

가중 라운드 로빈(Weighted Round Robin): 서버마다 가중치를 부여해 성능이 좋은 서버에 더 많은 요청을 보냅니다. 서버 사양이 다를 때 사용합니다.

IP 해시(IP Hash): 클라이언트 IP를 해시해 항상 같은 서버로 연결합니다. 세션을 서버 메모리에 저장하는 경우처럼 같은 사용자가 항상 같은 서버에 연결되어야 할 때 사용합니다.

5. L4와 L7 로드 밸런서의 차이

OSI 모델의 어느 레이어에서 동작하느냐에 따라 구분됩니다.

L4 로드 밸런서 (전송 계층) IP 주소와 TCP/UDP 포트를 기반으로 요청을 분산합니다. HTTP 요청 내용을 보지 않습니다. 빠르고 단순합니다.

L7 로드 밸런서 (응용 계층) HTTP URL, 헤더, 쿠키 같은 내용을 분석해 더 세밀하게 라우팅합니다. /api 경로 요청은 API 서버로, /images 요청은 이미지 서버로 보내는 식의 콘텐츠 기반 라우팅이 가능합니다. AWS의 ALB(Application Load Balancer)가 대표적인 L7 로드 밸런서입니다.

6. AWS ALB로 로드 밸런서 구성하기

AWS에서 가장 많이 사용하는 로드 밸런서는 **ALB(Application Load Balancer)**입니다.

ALB 설정 핵심 순서입니다. EC2 콘솔 > 로드 밸런서 > 로드 밸런서 생성에서 Application Load Balancer를 선택합니다.

리스너를 설정합니다. 80번(HTTP)과 443번(HTTPS) 포트를 추가합니다.

대상 그룹(Target Group)을 만들고 요청을 전달할 EC2 인스턴스를 등록합니다. 상태 확인(Health Check) 경로(/health 등)를 설정합니다. ALB는 등록된 인스턴스에 주기적으로 상태 확인 요청을 보내 응답이 없는 인스턴스는 자동으로 제외합니다.

ALB 생성 후 부여받은 DNS 이름을 Route 53의 Alias 레코드로 도메인에 연결합니다.

7. 정리 및 다음 단계

오늘 배운 핵심을 정리합니다.

  • 로드 밸런서는 여러 서버에 트래픽을 분산해 성능과 가용성을 높입니다.
  • 수평 확장(Scale Out) 시 로드 밸런서가 필수입니다.
  • 라운드 로빈, 최소 연결, 가중치 등 다양한 알고리즘으로 서버를 선택합니다.
  • L7 로드 밸런서(AWS ALB)는 URL 경로 기반의 세밀한 라우팅이 가능합니다.

다음 글에서는 도메인 이메일을 만드는 방법을 알아보겠습니다.

댓글 남기기

광고 차단 알림

광고 클릭 제한을 초과하여 광고가 차단되었습니다.

단시간에 반복적인 광고 클릭은 시스템에 의해 감지되며, IP가 수집되어 사이트 관리자가 확인 가능합니다.