반응형
로드밸런싱(Load Balancing) - 개념
개발 후 배포에 있어 중요한 고려사항으로 로드 밸런싱을 꼽을 수 있다.
단순히 서버 하나만 이용하는 경우는 극히 드물다.
초기에는 단일 서버로 운영이 가능하겠지만
서비스가 인기가 많아지고 사용량이 많아질수록 서버에는 부하가 걸릴것이다.
이러한 트래픽에 대처할 수 있는 방법은 몇 가지가 있다.
- 코드 최적화 : 캐시를 적용하거나 로직을 바꾸는 작업
- Scale up : 서버 성능 높이는 작업(더 좋은 CPU, 더 좋은 RAM 등..)
- Scale out : 여러 대의 서버를 두는 것(여러 대의 서버로 균등하게 트래픽을 분산해주는 방식으로 로드밸런싱이 필수적이다.)
로드밸런싱
컴퓨터 네트워크 상으로 들어오는 트래픽이 하나의 서버에 집중되지 않도록 서버의 기능을 분산 구성하고, 이를 통해 컴퓨터 자원을 나누는 일을 말한다. 주로 CPU 같은 연산 장치와 스토리지 같은 저장 장치가 분산 대상이 되며, 이들을 연결하는 내부 네트워크와 바깥 트래픽을 연결하는 외부 네트워크가 나뉜다. 보통 내부 서버들 끼리는 병렬처리를 통해 트래픽을 주고 받는 것이 보통이며, 이 때문에 바깥 트래픽을 받아서 내부 장치로 트래픽을 분산시켜주는 장치는 로드 밸런서(Load Balancer)라고 따로 말한다.
로드밸런싱 알고리즘
몇가지 로드밸런싱 알고리즘들을 정리해보았다.
- 라운드로빈 방식(Round Robin Method)
- 서버로 온 요청을 순서대로 돌아가며 배정하는 방식
- 서버와 연결(세션)이 단기간인 경우 적합하다
- (EX. 서버별로 똑같이 일시켜야지)
- 가중 라운드로빈 방식(Weighted Round Robin Method)
- 서버마다 가중치를 매기고 가중치가 높은 서버에 우선적으로 요청을 분배하는 방식
- 서버마다 성능이 다를경우에 주로 이용한다.
- (EX. A서버가 더 비싼 서버니까 더 많은 일 시켜야지~)
- IP 해시 방식(IP Hash Method)
- 클라이언트의 IP 주소를 특정 서버로 연결해 요청을 처리하는 방식이다.
- 사용자의 IP를 해싱해 특정 사용자가 항상 같은 서버로 연결되게하는 방식이다.
- (EX.특정 기능 결재한 사용자를 위해 더 빠른 서비스를 주기위해 더 좋은서버로 연결시켜야지~)
- 최소 연결 방식(Least Connection Method)
- 요청이 왔을 때 가장 적은 사용자가 매핑된 서버로 연결시키는 방식이다.
- 자주 세션이 길어지거나, 서버에 분배된 트래픽들이 균등하지 않을 때 이용하는 방식이다.
- (EX. 지금 사용자들이 A서버에 몰려있으니까 이번에 온 사용자들은 B서버로 보내야지)
- 최소 응답 시간 방식(Least Response Time Method)
- 가장 적은 연결 상태, 가장 짧은 응답시간 2가지를 고려해 우선적으로 요청을 보내는 방식이다.
반응형