📖로드 밸런싱(Load Balancing)
여러 개의 중앙처리장치, 저장장치와 같은 컴퓨터 자원들에게 Load를 나누는 것
로드(Load): 서버가 받는 부하(traffic)

Load Balancer를 클라이언트와 서버풀 사이에 위치 시켜, 로드가 일어나지 않도록 여러 서버에 분산시킴
Load Balancing이 필요한 이유
클라이언트의 수가 적다면 서버 한 대로 요청에 응답하는 것이 가능하지만, 클라이언트의 수가 늘어나게 되면 기존 서버만으로는 정상적인 서비스가 불가능하게 됨
🔖그렇다면 이렇게 증가한 트래픽에 대처할 수 있는 방법은?
Scale-Up: 서버 자체의 성능을 확장하는 것Scale-Out: 기존 서버와 동일하거나 낮은 성능의 서버를 두 대 이상 증설하여 운영하는 것 즉, 여러 대의 서버가 나눠서 일하도록 만드는 것
Scale-Out방식으로 증가한 트래픽에 대처한다면, 여러 대의 서버로 트래픽을 균등하게 분산해주는Load Balancing이 반드시 필요
📖로드 밸런서(Load Balancer)
서버에 가해지는 로드를 분산(밸런싱)해주는 장치 또는 기술
- 클라이언트와 서버풀 사이에 위치
- 여러 대의 서버를 두고 서비스를 제공하는 분산 처리 시스템에서 필요한 기술
📎L4 Load Balancer

- IP주소나 Port Number, Mac 주소, 전송 프로토콜에 따라 트래픽을 분산하는 것이 가능
- 데이터 안을 들여다보지 않고 패킷 레벨에서만 로드를 분산 → 속도가 빠르고 효율이 높음 → 섬세한 라우팅은 불가능
- 데이터의 내용을 복호화할 필요가 없기 때문에 안전
- L7 Load Balancer보다 가격이 저렴
📎L7 Load Balancer
응용 계층(HTTP, FTP, SMTP)에서 로드를 분산

- HTTP 헤더, 쿠키 등과 같은 사용자의 요청을 기준으로 특정 서버에 트래픽을 분산하는 것이 가능
- 상위 계층에서 로드를 분산하기 때문에 더 섬세한 라우팅이 가능
- 캐싱 기능을 제공
- Dos/DDos와 같은 비정상적인 트래픽을 필터링 → 서비스 안정성이 높음
- 패킷의 내용을 복호화해야 하기 때문에 가격이 비쌈
📖Load Balancing Algorithm
📎Round Robin Method
서버에 들어온 요청을 순서대로 돌아가며 배정하는 방식
- 여러 대의 서버가 동일한 스펙을 갖고 있고, 서버와의 연결이 오래 지속되지 않는 경우에 적합
- 서버의 스펙이 상이한 경우에는
가중 라운드 로빈 방식(Weighted Round Robin Method)을 사용해 서버마다 가중치를 매겨 트래픽을 배분
📎IP Hash Method
클라이언트의 IP주소를 특정 서버로 매핑하여 요청을 처리하는 방식
- 사용자의 IP를 해싱하여 트래픽을 분산하기 때문에 사용자가 항상 동일한 서버로 연결되는 것을 보장
- 접속자 수가 많을 수록 분산 및 효율이 뛰어남
📎Least Connection Method
요청이 들어온 시점에 가장 적은 연결 상태를 보이는 서버에 우선적으로 트래픽을 배분하는 방식
- 연결(세션)이 길어지거나, 서버에 분배된 트래픽들이 일정하지 않은 경우에 적합
📎Least Response Time Method
서버의 현재 연결 상태와 응답 시간을 모두 고려하여 트래픽을 배분하는 방식
응답 시간(Response Time): 서버에 요청을 보내고 최초 응답을 받을 때까지 소요되는 시간
- 가장 적은 연결 상태와 가장 짧은 응답 시간을 보이는 서버에게 우선적으로 트래픽 배분