콘텐츠로 이동

부하 분산 개요

1. 기존 분산형 문서 검색 시스템의 문제점 (부하 분산이 필요한 이유)

부하 분산 장치가 없는 시스템은 크게 두 가지 측면에서 한계에 직면합니다.

A. 단일 장애 지점 (Single Point of Failure, SPOF)

  • 사용자 대면 서버의 위험성: 서버가 한 대뿐이라면, 해당 서버가 멈추는 즉시 사용자는 전체 시스템을 이용할 수 없게 됩니다.
  • 코디네이터의 병목 현상: 검색 코디네이터가 모든 워커 노드와 통신하고 데이터를 취합하는 과정에서 부하가 집중되면 시스템 전체가 느려지거나 멈출 수 있습니다.

B. 확장성 및 관리의 한계

  • 물리적 한계: 서버 한 대로는 늘어나는 사용자 수와 데이터 작업량을 감당할 수 없습니다.
  • 코드 중복 및 결합도 증가: 클라이언트 응용 프로그램이 직접 여러 서버의 주소를 알고 부하를 분산하게 하면, 핵심 로직 외에 불필요한 코드가 중복되고 내부 구현 사항이 외부에 노출되는 문제가 발생합니다.

2. 부하 분산 장치(Load Balancer)의 역할과 이득

부하 분산 장치는 클라이언트와 서버 클러스터 사이에 위치하여 네트워크 트래픽을 효율적으로 관리합니다.

  • 트래픽 분산: 서버들에 업무를 공평하게 나눠주어 특정 서버에 병목 현상이 발생하는 것을 방지합니다.
  • 추상화 및 은닉: 사용자는 여러 서버의 주소를 알 필요 없이 부하 분산 장치의 단일 주소로만 통신하면 됩니다. 이를 통해 내부 시스템의 확장이나 변경을 사용자에게 노출하지 않고 수행할 수 있습니다.
  • 상태 확인 (Health Check): 서버들의 상태를 주기적으로 감시하여, 문제가 발생한 서버는 분산 대상에서 제외하고 정상 복구된 서버만 다시 투입하여 시스템의 신뢰성가용성을 높입니다.
  • 자동 확장 (Auto Scaling): 클라우드 환경에서 트래픽 급증 시 자동으로 서버 인스턴스를 추가하고, 부하가 줄어들면 서버를 줄여 운영 비용을 절감합니다.

3. 부하 분산 장치의 종류

하드웨어와 소프트웨어 방식 중 시스템의 요구사항에 맞춰 선택하거나 혼용할 수 있습니다.

구분 하드웨어 부하 분산 장치 소프트웨어 부하 분산 장치
특징 부하 분산 전용으로 설계된 물리적 장비 일반 컴퓨터(상용 하드웨어)에서 실행되는 프로그램
장점 매우 높은 성능, 뛰어난 신뢰성, 오류 발생 적음 설정/업데이트 용이, 저렴한 비용, 유연한 운용
단점 높은 도입 비용 및 유지보수 난이도 하드웨어 대비 절대적 성능 및 전용 최적화 부족
예시 L4/L7 스위치 등 전용 장비 HAProxy, Nginx 등

활용 전략 (혼합 사용)

실제 시스템에서는 두 방식을 함께 사용하는 경우가 많습니다.

  • 시스템 입구: 높은 신뢰성과 성능을 위해 하드웨어 부하 분산 장치 배치.
  • 내부 클러스터: 각 논리적 서비스 단위 앞에는 유연한 소프트웨어 부하 분산 장치 배치.

4. 요약 및 결론

부하 분산 장치를 도입함으로써 분산 시스템은 단일 장애 지점을 제거하고, 확장성을 확보하며, 높은 가용성을 유지할 수 있습니다. 이는 복잡한 내부 구현을 숨기면서도 늘어나는 트래픽에 유연하게 대응할 수 있는 핵심적인 인프라 구성 요소입니다.