로드 밸런서는 무엇이고, 왜 사용할까?
꼭 CS 분야가 아니더라도,
어느 분야의 특정 주체에게
여러 작업을 맡기는 것에는 한계가 있다.
그리고, 아무리 그 분야에 특출나다고 해도
분명히 '한계점' 은 존재하기 마련이다.
여기,
Balancing 을 고려하지 않은
Web Infrastructure의 간단한 파이프라인 구조가 있다.
User는, 인터넷 네트워크를 통해
Web Server (http://yourdomain.com/) 에 직접 접속하고 있다.
만약, 접속하는 User 의 수가 급격하게 늘어나
Web Server의 수용량한계에 다다르게 된다면,
Web Server 는 죽음을 택하게 될 것이고 (a.k.a 서버 터졌다)
이 서비스는 서버를 다시 살리기 전 까지
정상 운영을 할 수 없게 될 것이다.
이러한 상황을 방지하기 위한 여러 장치가 있는데, (Scale-up / Scale-out)
로드 밸런서는 그러한 기술 중 하나로 (on scale-out) , 작업량의 분산에 그 목적이 있다.
로드 밸런서 - Load Balancer 는
Load (압력, 작업량, '부하') 를
Balancing (균형을 맞추다 - 분산하다) 해주는 장치 혹은 그러한 기술을 통칭한다.
클라이언트 ( User ) 와,
서비스의 서버 풀 ( Server Pool ) 사이에 위치하고
한 대의 서버로 부하가 집중되지 않도록 트래픽을 관리하여
서버 각각이 최적의 퍼포먼스를 보일 수 있도록 돕게 되는것이다.
이러한 로드 밸런서의 종류는
OSI 7 Layers 의 각 계층에 따른 분류를 통해 분류되기도 한다.
대표적으로 L4 / L7 Load Balancer 가 사용되곤 한다.
(L2 - Mac addr 기반, L3 - IP addr 기반)
또한, 이러한 로드 밸런서 자체의 down 을 방지하기 위해
로드밸런서 자체의 이중화를 통한
장애 방지를 도입하기도 한다.
물론, 모든 상황에서
로드 밸런서가 무조건적인 정답이다! 라고 할 순 없다.
하지만,
로드 밸런서가 무엇이고
이걸 왜 사용하는 지를 알아야
언제, 어느 시기에 적절하게 이를 적용할 것인지
정하고 프로젝트에 적용할 수 있을 것이다! 😎