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 경로 기반의 세밀한 라우팅이 가능합니다.
다음 글에서는 도메인 이메일을 만드는 방법을 알아보겠습니다.