로드 밸런서
로드 밸런서 (Load Balancer)
로드 밸런서(Load Balancer)는 서버에 가해지는 트래픽(부하)을 여러 대의 서버에 분산시켜주는 장치 또는 소프트웨어입니다. 이를 통해 서비스의 성능, 가용성, 확장성을 향상시키는 것이 주된 목적입니다.
⚖️ 로드 밸런서의 필요성
- 트래픽 분산 : 단일 서버에 집중되는 트래픽을 여러 서버로 분산하여 서버 과부하를 방지하고, 안정적인 서비스 제공을 가능하게 합니다.
- 고가용성 (High Availability) : 특정 서버에 장애가 발생하더라도, 로드 밸런서가 해당 서버를 트래픽 분배 대상에서 제외하고 정상 서버로만 트래픽을 보내 서비스 중단을 방지합니다.
- 확장성 (Scalability) : 트래픽 증가 시, 서버를 추가하여 손쉽게 시스템 용량을 확장할 수 있도록 합니다 (수평 확장, Scale-out).
- 성능 향상 : 여러 서버가 동시에 요청을 처리하므로, 전체적인 응답 시간을 단축시킵니다.
⚙️ 로드 밸런서의 동작 방식
- 위치 : 클라이언트와 서버 사이에 위치하여, 클라이언트의 요청을 받아 적절한 서버로 전달합니다.
- 트래픽 분산 알고리즘 (Load Balancing Algorithms)
> * 라운드 로빈 (Round Robin) : 서버들에게 요청을 순서대로 균등하게 분배합니다. > * 가중치 라운드 로빈 (Weighted Round Robin) : 각 서버의 처리 능력에 따라 가중치를 부여하여, 가중치가 높은 서버에 더 많은 요청을 분배합니다. > * 최소 연결 (Least Connection) : 현재 연결(세션) 수가 가장 적은 서버에 요청을 분배합니다. (실제 부하를 반영) > * IP 해시 (IP Hash) : 클라이언트의 IP 주소를 해싱하여 특정 서버에 매핑합니다. 동일한 클라이언트의 요청은 항상 동일한 서버로 전송되어 세션 유지에 유리합니다.
- 헬스 체크 (Health Check) : 로드 밸런서가 주기적으로 서버들의 상태를 확인하여, 장애가 발생한 서버를 트래픽 분배 대상에서 자동으로 제외합니다.
🆚 L4 로드 밸런서 vs L7 로드 밸런서
- L4 로드 밸런서 (전송 계층)
> * '동작 계층' : OSI 7계층 중 전송 계층(Layer 4, TCP/UDP)에서 동작합니다. > * '분산 기준' : IP 주소, 포트 번호, 세션 정보 등을 기반으로 트래픽을 분산합니다. > * '특징' : 패킷 내용을 들여다보지 않고, IP와 포트 정보만으로 분산하므로 빠르고 효율적입니다.
- L7 로드 밸런서 (응용 계층)
> * '동작 계층' : OSI 7계층 중 응용 계층(Layer 7, HTTP/HTTPS, FTP 등)에서 동작합니다. > * '분산 기준' : URL 경로, HTTP 헤더, 쿠키 정보 등 애플리케이션 계층의 정보를 기반으로 트래픽을 분산합니다. > * '특징' : 더 정교한 라우팅 및 필터링이 가능합니다. (e.g., 특정 URL은 특정 서버로, 이미지 파일은 이미지 서버로) > * '단점' : 패킷 내용을 분석해야 하므로 L4보다 처리 속도가 느리고, 더 많은 자원 소모가 있습니다.
💡 개발자 핵심 Point
- 로드 밸런서는 현대 웹 서비스 아키텍처에서 고가용성, 확장성, 성능을 확보하기 위한 필수적인 요소입니다.
- 세션 유지 (Session Persistence / Sticky Session) : 세션 기반의 서비스에서는 동일한 클라이언트의 요청이 항상 동일한 서버로 가도록 설정해야 할 수 있습니다. (IP 해시, 쿠키 기반 등)
- SSL Offloading : L7 로드 밸런서에서 SSL/TLS 암호화/복호화를 처리하여 백엔드 서버의 부하를 줄이는 기능입니다.
- 클라우드 환경에서는 AWS ELB(Elastic Load Balancing), Google Cloud Load Balancing 등 매니지드 서비스 형태로 제공되어 쉽게 로드 밸런서를 구축할 수 있습니다.