웹 서버에 트래픽이 급증하는 상황에 서버에 부하가 생길 수 있다. 이때 부하를 해결하기 위해 스케일 업(vertical scaling) 또는 스케일 아웃(horizontal scaling)을 수행할 수 있다.
먼저 스케일 업 하기 위해서는 CPU, RAM, HDD 성능 등 서버 자체의 스펙을 높이는 방법을 생각할 수 있다. 하지만 스펙을 늘리는 것만으로는 한계가 있다. 대규모 트래픽을 고려해야 하는 상황에서 스케일 아웃을 고려할 수 있다. 이때, 스케일 아웃하는 주체가 로드 밸런서이다.
로드 밸런서(Load Balancer)란 일반적으로 서버가 받는 부하(load)를 분산해주는 장치 또는 기술을 뜻한다. 보통 서버 상단 네트워크에 위치하며, 서버 한 대에 트래픽이 집중되지 않게 트래픽을 관리하여 각 서버가 최적의 효율을 발휘할 수 있게 도와준다. 즉, 전체 시스템의 성능과 고가용성을 높이는 데 중점을 둔다.

서비스의 포트가 열려있는지 상태를 확인한다.
| 종류 | Round Robin | Random Select | Least Connection | Ratio | Hash |
|---|---|---|---|---|---|
| 세션 연결 방식 | 순차적 | 랜덤 | 현재 매핑되어 있는 커넥션이 가장 적은(접속 클라이언트 수가 가장 적은) 서버 | 서버의 성능 차이를 고려한 가중치에 기반 | 특정 기준에 따라고정된 서버 |
| 특징 | 연결된 세션이 비교적 오래 사용되지 않는 경우에 채택 | 일반적으로 사용되는 기준은 출발지(클라이언트)의 IP | |||
| 장점 | 단일 서버의 균일한 트래픽 처리 | 단일 서버의 거의 균일한 트래픽 처리 | |||
| 단점 | 각 서버의 성능은 고려사항이 아님. 가중치 라운드 로빈이 이를 보완하는 방식임. | 구현의 복잡도 / 커넥션 수 실시간 관리 및 서버로의 주기적 알림 필요 |
서버에서 클라이언트로 직접 트래픽(패킷)을 전달하는 것이다.
| 기준 | 소프트웨어 | 하드웨어 |
|---|---|---|
| 예시 | HAProxy, reverse proxy, Kubernetes(ingress) | L4, L7 스위치 |
| 특징 | 일반 서버나 VM, 컨테이너 위에서 동작하므로 환경 제약이 거의 없음 | 어떤 메타데이터를 기반으로 분산을 할 것이냐에 중점 |
| 장점 | 설정 파일만 수정하면 트래픽 분배 정책, 방화벽, 라우팅 등을 재구성 가능 | 높은 안정성 및 보안성 |
| 단점 | 운영 난이도 증가 | 비싼 구축 비용 |
하나의 로드 밸런서가 있는 상황에서 해당 로드 밸런서가 죽으면 모든 서버가 다운된다. 따라서 로드 밸런서 자체도 스케일 아웃할 필요가 있다. 즉, 여러 로드 밸런서를 두는 것이다.