보통 대부분의 인터넷 서비스는 클라이언트-서버 모델
을 사용한다.
예를 들어 하나의 서버가 다수의 클라이언트를 관리하는 1:N 관계를 가진다고 하자.
서버가 맡은 클라이언트 수가 굉장히 많다면 서버의 성능은 한계가 존재하기 떄문에 결국 클라이언트의 모든 요청을 신속하게 처리해주기는 불가능하다.
이렇게 트래픽이 증가할 경우 크게 두 가지 해결 방법이 존재한다.
서버 자체 성능을 업그레이드하는 것은 하드웨어라는 특성 때문에 한계가 존재한다.
즉, Scale out 방식은 다수의 서버를 사용하여 트래픽이 모든 서버에 골고루 퍼질 수 있도록 해줘야 한다. 이처럼 `여러 대의 서버로 트래픽(Load)을 균등하게 분산(Balancing)해주는 기술을 로드 밸런싱(Load Balancing)이라고 한다.
로드 밸런싱의 장점 중 하나는 한 서버가 장애가 발생하더라도 이중화를 통해 다른 서버에서 서비스를 지속할 수 있다는 것이다.
A서버가 Fail 되었을 때 B서버가 Master 서버의 역할을 수행한다.
이 구성을 Fail Over
이라고 한다.
로드 밸런서를 사용할 때 어려운 문제 중 하나는 세선 데이터를 관리하는 것
이다.
로드 밸런싱을 통해 하나의 서버의 세션에 저장된다면 다른 서버에서는 세션 정보를 알 수 없기 때문에 세션이 유지되지 않는 단점이 존재한다.
이를 해결하기 위해 세션을 고정하여 특정 사용자의 요청이 전달될 노드를 고정시킬 수 있다.
클러스터링이란 여러 대의 컴퓨터를 똑같은 구성의 서버 군을 병렬로 연결한 시스템으로 마치 하나의 컴퓨터처럼 사용하는 것
즉,
로드 밸런싱
은 여러 대의 서버에 트래픽을 균등하게 분산시켜주는 기술이고클러스터링
은 여러 대의 서버를 하나의 서버로 만들어 사용하는 것이다.