로드밸런서와 로드밸런싱 기법
현대의 모든 정보들은 인터넷을 통해 퍼져있다. 이는 트래픽의 증가로 이어졌고, 그 결과 아무리 뛰어난 서버라도 엄청난 양의 트래픽을 감당해내지는 못한다. 이에 기업들은 여러대의 서버를 두고, 효과적으로 데이터를 분산한다. 그리고 이렇게 쏟아지는 트래픽을 여러 대의 서버에 분산시켜주는 것이 로드밸런싱이다.
로드밸런서란?

앞서 말한 로드밸런싱을 이행시켜주는 것으로, 서버에 가해지는 부하를 분산시켜주는 기술의 통칭이다. 클라이언트와 서버풀 사이에 위치하며 한대의 서버에 트래픽이 집중되지 않도록 트래픽을 관리해준다. 그리고 이는 서버를 여러대 두고 서비스를 제공하는 분산 처리 시스템에서 사용되어진다. 학생때까지 공부를 하며 서버를 구축했을때는 단일 서버에도 그러한 정상적으로 작동했다. 하지만 실제 서비스는 무수한 트래픽을 감당하기 위해서는 로드밸런서를 꼭 갖추어야 한다.

서버의 성능을 향상시키는 방법으로 크게 2가지가 있다.
Scale - up과 Scale - out인데,
scale - up은 단순히 서버를 업그레이드 한다고 생각하면 된다, cpu로 보면 칩을 업그레이드 하는 것처럼 장비를 바꾸는 것이다.
scale -out은 서버자체를 업그레이드 하지 않고, 여러개를 두어 분산 처리 기술을 사용한다. 우리가 scale - up 을 사용할려면 로드밸런싱 기술이 무조건 필요하다.
로드밸런싱 알고리즘
- 라운드 로빈(RR) 알고리즘 : 서버에 들어온 요청을 순서대로 번갈아가며 배정하여 트래픽을 분산하는 알고리즘이다. 클라이언트의 요청을 순서대로 분배하기 때문에 여러 대의 서버가 동일한 스펙을 갖고 있고 세션이 오래 유지되지 않는 경우 적당하다.
- 가중 라운드 로빈(WRR) 알고리즘 : 각각의 서버에 가중치를 매기고 가중치가 높은 서버에 클라이언트 요청을 우선적으로 배치한다. 서버의 트래픽 처리 능력이 각각 다를 경우에 쓰이는 방법이다.
- IP 해시 알고리즘 : 클라이언트의 IP를 해시하여 로드를 분배한다. 따라서, 각각의 클라이언트가 동일한 서버를 항상 사용할 수 있는 것을 보장해준다.
- 최소 연결 방식 : 요청이 들어온 시점에 가장 적은 연결상태를 보이는 서버에 우선적으로 트래픽을 분배한다. 자주 세션이 길어지거나, 서버에 분배된 트래픽들이 일정하지 않을때 사용된다.
- 최소 리스폰타임 : 서버의 현재 연결 상태와 응답시간을 모두 고려하여 트래픽을 배분한다. 가장 적은 연결상태는 물론, 최소 응답시간을 지닌 서버에 우선적으로 트래픽을 분배한다.
L4? L7?
로드밸런서는 L4 로드밸런서, L7로드 밸런서로 구분된다.
L4 로드밸런서는 Ip, Port를 기준으로 알고리즘을 진행하여 트래픽을 분산한다. 클라이언트에서 로드밸런서로 요청을 보냈을 때 최적의 서버로 요청을 전송하고 결과를 클라이언트로 보낸다.
L7 로드밸런서는 네트워크 7계층에서 동작하기 때문에 IP, Port번호 이외에도, HTTP Header, URI, Cookie