로드밸런서의 역할은 시스템의 여러 서버에 트래픽 부하를 나누는 것이다. 고가용성과 수평 확장성을 위한 가장 좋은 방법은 여러 컴퓨터에 동일한 인스턴스의 애플리케이션을 가동하는 것이다. 그러나 로드 밸런서가 없다면 인스턴스의 갯수 만큼 각 컴퓨터의 주소를 알아야만 한다.
로드 밸런서의 주요 목적은 여러 서버에 부하를 나누어 단일 서버에 과부하가 일어나지 않게 하는 것이다.
추가적으로 대부분의 로드 밸런서는 단일 서버에 과부하가 일어나지 않게 하고 서버와 클라이언트 사이의 추상화하는 기능도 제공한다.
추상화를 통해 전체 시스템은 하나의 서버처럼 보이며 어마어마한 연산력과 메모리를 갖게 된 것처럼 보인다. 로드 밸런서를 통해 얻을 수 있는 시스템 품질 속성은 고확장성과 고가용성이다. 로드밸런서는 모니터링 기능으로 문제가 있는 서버에 트래픽 전송을 멈추도록 만들 수 있다.
가장 기본적인 로드 밸런싱은 DNS을 이용하는 것으로 도메인 네임 시스템 약자인 DNS는 인터넷 인프라의 일종으로 사람이 있을 수 있는 URL인 IP주소로 변환한다.
웹에서 네트워크 라우터가 개별 컴퓨터에 요청을 라우팅 할 때도 쓰이는데 일종의 인터넷 전화번호부인 셈이다. 사용자나 클라이언트 애플리케이션이 DNS 서버로 DNS 쿼리를 보내면 DNS서버는 도메인 이름에 해당하는 IP주소로 응답한다.
클라이언트 애플리케이션은 그 IP주소로 서버에 직접 요청을 보내게 되는데, 단일 DNS 레코드가 꼭 단일 IP주소와 매핑되는건 아니며 각 서버에 대응하는 IP주소의 목록을 반환하도록 설정할 수도 있다.
대부분의 DNS서버는 각 클라이언트나 요청마다 도메인에 따른 IP주소 목록의 순서를 다르게 보내고 있고, 통상적으로 대부분의 클라이언트 애플리케이션은 특정 도메인의 IP 주소 목록에서 첫 번째 주소를 사용한다.
이를 통해 DNS는 라운드 로빈 방식으로 IP주소 목록을 순환시켜 서버로 가는 부하를 조절합니다. 이를 통해 DNS는 라운드 로빈 방식으로 IP주소 목록을 순환시켜 서버로 가는 부하를 조절한다.
DNS 로드 밸선싱은 도메인 이름만 구매하면 되므로 매우 간단하고, 비용 며네서 저렴하나 이 방식에는 몇 가지 결점이 존재하는데 주요 결점은 서버의 헬스를 모니터링 하지 않는다는 것이다.
DNS 로드 밸런싱 전략이 단순하게 라운드 로빈 방식이므로 애플리케이션 인스턴스 일부가 더 강한 서버에서 실행 될 수 있다는 것을 간과한다는 점이 있다.
또 클라이언트 애플리케이션이 모든 서버의 IP주소를 받는 것으로 구현 세부 사항이 노출되고 보안이 취약해진다.
이 것들을 해결하는 로드 밸런싱 솔루션은 하드웨어 와 소프트웨어 두 가지가 있는데, 하드웨어 로드밸런서의 경우는 로드 밸런싱에 특화 설계된 전용 장치에만 실행할 수 있고, 소프트웨어의 경우 로드밸런서 역할을 하는 프로그램이다.
다른 솔루션은 GSLB로 불리는 글로벌 서버 로드 밸런서로 소프트웨어 나 하드웨어 로드밸런서에 DNS 서비스가 결합된 솔루션이다.
애플리케이션들끼리 동기식 소통을 한다면 인스턴스가 정상이며, 트랜잭션 완료를 위해 연결을 유지해야 한다는 것이다. 짧은 메세지를 교환하면 전송하고 응답하는 시간이 짧아 위 조건을 달성하기 쉬운 반면 많은 시간이 걸리는 서비스의 경우에는 복잡해질 수 있다. 또한 동기 의사소통은 급증한 트래픽 또는 부하를 해결할 시스템 패팅이 없다는 것이다.
메시지브로커는 소프트웨어 아키텍처 빌등 블록으로서 대기열 구조를 사용해 발신자와 수신자 사이의 메시지를 저장한다. 로드밸런서와는 다르게 외부 트래픽이 아닌 시스템 내부에 쓰인다.
그리고 일시적 메시지 버퍼링과 저장 기능 외에도 메시지 브로커는 메시지 라우팅, 변환 유효성 검사, 심지어 로드 밸런싱 같은 기능을 제공할 수도 있다.