부하 분산이란? | 부하 분산 장치의 작동 방식

부하 분산은 트래픽을 여러 서버에 분산시켜 서비스나 애플리케이션의 성능과 안정성을 향상하는 프로세스입니다.

학습 목표

이 글을 읽은 후에 다음을 할 수 있습니다:

  • 부하 분산의 정의
  • 부하 분산 알고리즘의 두 가지 주요 범주 설명
  • 서버 모니터링, 장애 조치 등 중요한 부하 분산 개념 이해하기

관련 콘텐츠


계속 알아보시겠어요?

인터넷에서 가장 인기 있는 인사이트를 한 달에 한 번 정리하는 Cloudflare의 월간 요약본 theNET를 구독하세요!

Cloudflare가 개인 데이터를 수집하고 처리하는 방법은 Cloudflare의 개인정보 취급방침을 참조하세요.

글 링크 복사

Cloudflare Pro 요금제 및 속도 도구 추가 기능으로 웹 사이트 성능 향상

부하 분산이란?

부하 분산 이미지

부하 분산은 두 대 이상의 컴퓨터 간에 계산 작업 부하를 분산하는 작업입니다.인터넷에서 부하 분산은 종종 네트워크 트래픽을 여러 서버로 분산하는 데 사용됩니다.이렇게 하면 각 서버의 부담이 줄어들고 서버의 효율성이 높아져 성능이 빨라지고 대기 시간이 감소합니다.대부분의 인터넷 애플리케이션이 제대로 작동하려면 부하 분산이 필수적입니다.

부하 분산 없음 - 서버에 과부하가 걸리고 서비스가 느려짐 부하 분산 있음 - 작업 부하가 고르게 분산됨

식품점의 계산대 줄이 8개인데, 그 중 하나만 열려 있다고 상상해 보세요. 모든 고객이 같은 줄에 서야 하므로 한 고객이 식품 결제를 마치는 데 시간이 오래 걸립니다. 이제 스토어에서 8개의 계산대 줄을 모두 열었다고 상상해 보세요. 이 경우 고객 대기 시간이 약 8배 단축됩니다(각 고객이 구매하는 음식의 양과 같은 요인에 따라 다름).

부하 분산은 본질적으로 그와 동일한 작업을 수행합니다. 사용자 요청을 여러 서버로 분산하여 사용자 대기 시간을 대폭 단축합니다. 이는 더 나은 고객 경험으로 이어집니다. 위 예시의 식품점 고객은 항상 긴 대기 시간을 경험했다면 더 효율적인 식품점을 찾게 될 것입니다.

부하 분산은 어떻게 작동할까요?

부하 분산은 부하 분산 장치라는 도구 또는 애플리케이션에서 처리합니다.부하 분산 장치는 하드웨어 기반 또는 소프트웨어 기반이 될 수 있습니다.하드웨어 부하 분산 장치는 전용 부하 분산 장치를 설치해야 하며, 소프트웨어 기반 부하 분산 장치는 서버, 가상 머신, 클라우드에서 실행할 수 있습니다.콘텐츠 전송 네트워크(CDN)에는 부하 분산 기능이 포함되어 있는 경우가 많습니다.

사용자로부터 요청이 도착하면 부하 분산 장치는 해당 요청을 지정된 서버에 할당하고, 이 프로세스는 각 요청에 대해 반복됩니다. 부하 분산 장치는 다양한 알고리즘을 기반으로 각 요청을 처리할 서버를 결정합니다. 이러한 알고리즘은 정적 알고리즘과 동적 알고리즘의 두 가지 주요 범주로 나뉩니다.

정적 부하 분산 알고리즘

정적 부하 분산 알고리즘은 시스템의 현재 상태를 고려하지 않고 작업 부하를 분산합니다. 정적 부하 분산 장치는 어떤 서버의 성능이 느리고 어떤 서버가 충분히 사용되지 않는지 인식하지 못합니다. 대신 미리 정해진 계획에 따라 작업 부하를 할당합니다. 정적 부하 분산은 설정이 빠르지만, 비효율적인 결과를 초래할 수 있습니다.

앞서의 비유를 다시 참조하여 계산대가 8개 있는 식품점에 고객을 계산대로 안내하는 직원이 있다고 가정해 보겠습니다. 이 직원이 줄이 얼마나 빨리 움직이는지 뒤도 돌아보지 않고 첫 번째 고객을 1번 줄에, 두 번째 고객을 2번 줄에 배정하는 식으로 순서대로 이동시킨다고 상상해 보세요. 8명의 계산원이 모두 효율적으로 업무를 수행하면 이 시스템은 정상적으로 작동하지만, 한 명 이상이 뒤처지면 일부 줄이 다른 줄보다 훨씬 길어져 고객 경험이 악화될 수 있습니다. 정적 부하 분산도 이와 동일한 위험을 수반합니다. 때로는 개별 서버에 여전히 과부하가 걸릴 수 있습니다.

라운드 로빈 DNS 및 클라이언트 측 무작위 부하 분산은 정적 부하 분산의 두 가지 일반적인 형태입니다.

동적 부하 분산 알고리즘

동적 부하 분산 알고리즘은 각 서버의 현재 가용성, 작업 부하, 상태를 고려합니다. 이 알고리즘은 과부하가 걸리거나 성능이 저하된 서버에서 활용도가 낮은 서버로 트래픽을 이동시켜 트래픽을 균일하고 효율적으로 분산시킬 수 있습니다. 그러나 동적 부하 분산은 구성하기가 더 어렵습니다. 서버 가용성에는 각 서버의 상태와 전체 용량, 분산되는 작업의 크기 등 여러 가지 요인이 작용합니다.

고객을 분류하는 식품점 직원이 계산대 줄에 보다 동적인 접근 방식을 사용한다고 가정해 보겠습니다. 이 직원이 줄을 주의 깊게 관찰하여 가장 빠르게 움직이는 줄을 파악하고 각 고객이 구매하는 식료품의 개수를 관찰한 후 그에 따라 고객을 배정하는 방식입니다. 이렇게 하면 모든 고객에게 더 효율적인 경험을 제공할 수 있지만, 줄을 분류하는 직원에게는 더 큰 부담이 될 수 있습니다.

동적 부하 분산 알고리즘에는 최소 연결, 가중 최소 연결, 리소스 기반 및 지리적 위치 기반 부하 분산 등 여러 가지 유형이 있습니다.

부하 분산은 어디에 사용될까요?

앞서 설명한 것처럼 부하 분산은 웹 애플리케이션에서 자주 사용됩니다. 소프트웨어 기반 및 클라우드 기반 부하 분산 장치는 애플리케이션을 호스팅하는 서버 간에 인터넷 트래픽을 균등하게 분산하는 데 도움이 됩니다. 일부 클라우드 부하 분산 제품은 전 세계에 분산된 서버 간에 인터넷 트래픽 부하를 분산할 수 있는데, 이를 전역 서버 부하 분산(GSLB)이라고 합니다.

부하 분산은 데이터 센터나 대규모 사무실 단지와 같은 대규모 로컬 네트워크에서도 일반적으로 사용됩니다.기존에는 애플리케이션 전송 컨트롤러(ADC) 또는 전용 부하 분산 장치와 같은 하드웨어 장비를 사용해야 했습니다.소프트웨어 기반 부하 분산 장치도 이러한 목적으로 사용됩니다.

서버 모니터링이란?

동적 부하 분산 장치는 서버의 현재 상태, 성능 등 서버 상태를 파악하고 있어야 합니다. 동적 부하 분산 장치는 정기적인 서버 상태 확인을 수행하여 서버를 모니터링합니다. 서버 또는 서버 그룹이 느리게 작동하는 경우 부하 분산 장치는 해당 서버에 더 적은 트래픽을 분산합니다. 서버 또는 서버 그룹에 완전히 장애가 발생하면 부하 분산 장치는 트래픽을 다른 서버 그룹으로 다시 라우팅하는데, 이 프로세스를 "장애 조치"라고 합니다.

장애 조치란?

장애 조치는 특정 서버가 작동하지 않을 때 발생하며 부하 분산 장치가 정상 프로세스를 보조 서버 또는 서버 그룹으로 분산합니다. 서버 장애 조치는 안정성을 위해 매우 중요합니다. 백업이 마련되어 있지 않으면 서버 충돌로 인해 웹 사이트나 애플리케이션이 다운될 수 있습니다. 서비스 공백을 방지하기 위해 장애 조치가 신속하게 이루어지는 것이 중요합니다.

부하 분산의 다양한 측면에 대해 자세히 알아보세요.