1. LoadBalancer의 개념과 필요성
1.1 Load Balancing이란?
로드 밸런싱이란, 컴퓨팅 리소스 단위로 작업을 분산 처리하여 전체 시스템의 효율성과 안정성을 높이는 기술을 의미한다.
여기서 "리소스 단위"란 다음과 같은 것을 포함한다:
- CPU
- 메모리
- 디스크 I/O
- 네트워크 대역폭
- 프로세스 또는 쓰레드
- 물리적 머신 (서버)
즉, 한 번에 수행해야 할 작업을 여러 리소스로 나누어 처리함으로써 특정 지점에 과부하가 발생하지 않도록 하는 것이 핵심이다.
1.2 Load Balancer란?
서버 엔지니어링에서의 Load Balancer는 외부로부터 들어오는 트래픽을 내부의 여러 서버로 분산시켜주는 중앙 처리 장치를 말한다.
클라이언트는 오직 Load Balancer를 통해 서버에 접근하며, 실제 처리는 Load Balancer 뒤에 연결된 여러 서버가 담당한다.
Load Balancer는 다음과 같은 역할을 수행한다:
- 클라이언트 요청을 적절한 서버로 전달 (프록시 역할)
- 서버 응답을 클라이언트에 다시 전달 (리버스 프록시 역할 가능)
- 부하 분산 정책에 따른 트래픽 라우팅
- 서버 장애 시 다른 서버로 요청 전달 (장애 허용성 제공)
1.3 왜 Load Balancer가 필요한가?
단일 서버로 운영할 때의 문제점
예를 들어 API 서버를 하나 구축했다고 가정하자.
처음엔 하루 몇 명 수준의 사용자만 접근하기 때문에 1코어 CPU와 1GB 메모리로도 충분했다.
그러나 점차 사용자 수가 늘어나고 초당 수천 건의 요청이 들어오게 되면 문제는 복잡해진다.
대응 방법 1: Scale-Up (수직 확장)
- 서버의 CPU, 메모리 등의 성능을 높인다.
- 하지만 이 과정은 일반적으로 다음과 같은 단점이 있다:
- 서버를 꺼야 하므로 다운타임이 발생한다.
- 새 서버를 구축한 뒤 DNS 설정을 변경해야 할 수 있다.
- 하드웨어 스펙을 높여도 한계가 있으며, 리소스가 남아돌면 낭비된다.
- 실제 초당 수십만 건의 요청을 하나의 서버가 처리하기엔 물리적 한계가 있다.
대응 방법 2: Scale-Out (수평 확장) + Load Balancer
- 서버를 여러 대로 나누고, Load Balancer를 앞단에 둔다.
- 클라이언트는 오직 Load Balancer의 IP만 바라본다.
- Load Balancer는 요청을 여러 서버 중 하나로 라우팅한다.
- 이 방식은 다음과 같은 장점을 가진다:
유연한 확장성
- 트래픽 증가 → 서버 추가만 하면 됨 → Scale-Out
- 트래픽 감소 → 서버 제거 가능 → Scale-In
- 각각의 서버는 독립적으로 동작하며, 관리가 용이함
무중단 서비스 제공
- 서버 추가/제거 시에도 클라이언트는 Load Balancer의 IP만 바라보기 때문에 DNS를 변경할 필요 없음
- 기존 서버를 꺼야 할 이유가 없어 다운타임 없음
비용 효율성
- 클라우드 서비스 (AWS, Azure, GCP 등)를 이용하면 필요할 때만 서버 인스턴스를 발급하고, 사용 후 제거 가능
- 불필요한 리소스를 최소화하고 비용 절감 가능
예시 시나리오 정리
- 처음에는 소수 사용자만 있어서 저사양 서버로 충분하다.
- 사용자가 급증하여 서버 응답이 늦어지거나 연결이 끊긴다.
- 서버 업그레이드(Scale-Up)를 시도하지만, 다운타임과 한계에 부딪힌다.
- Load Balancer 도입 + Scale-Out 방식으로 다수 서버를 구성한다.
- 트래픽 증가 시 서버를 추가하고, 감소 시 제거함으로써 효율적인 자원 관리가 가능하다.
- 클라이언트는 항상 동일한 Load Balancer IP를 통해 서비스를 이용하므로 서비스 연속성이 보장된다.
1.4 Load Balancer의 구조와 기능
- 실제 Load Balancer는 단일 머신이 아니라 여러 대의 물리적 서버로 구성된 시스템이다.
- 고가용성과 장애 허용성을 위해 클러스터 형태로 구성되며, 하나의 LB가 장애 나더라도 서비스가 중단되지 않도록 설계된다.
- Load Balancer는 단순히 트래픽을 균등하게 분산하는 역할뿐만 아니라 다음과 같은 추가 기능도 수행할 수 있다:
- 트래픽 유형별 분기 (예: 이미지 요청은 A 서버로, API 요청은 B 서버로)
- 우선순위 기반 분산 처리
- Health Check를 통한 비정상 서버 자동 제외
- SSL 종료 처리 등
1.5 정리
로드 밸런싱은 단순히 서버를 여러 대 두는 것을 넘어서, 효율적으로 분산 처리하고 시스템 전체의 안정성을 높이는 핵심 기술이다.
클라이언트는 이 복잡한 구조를 알 필요 없이, 단 하나의 Load Balancer만 바라보면 되므로 유지 보수성과 확장성이 크게 향상된다.