목차
비녀장로드 밸런서란 무엇입니까?
일반적으로 대규모 데이터 센터에서는 다른 서버나 클라이언트로부터 초당 수백만 또는 수천만 건의 요청이 있을 수 있습니다. 이 트래픽을 효과적으로 처리하기 위해서는 이 트래픽을 관리하고 균형을 맞춰야 하는데, 로드 밸런서는 이런 대규모 트래픽 문제를 처리하기 위해 특별히 설계된 모듈입니다!
로드 밸런서는 주로 현재 서버 부하를 기준으로 모든 사용자 요청을 해당 서버에 분산시킵니다. 이것의 장점은 서버 과부하나 충돌을 방지할 수 있다는 것입니다. 그러나 여기서도 생각해 볼 수 있습니다. 현재 시스템의 트래픽이 초당 수천 요청 정도로 높지 않다면 결국 시스템이 복잡할수록 로드 밸런서는 필요하지 않을 수 있습니다. 더 많은 것들을 고려해야 합니다.
로드 밸런서 기능
로드밸런서가 대용량 트래픽을 처리하기 위해 설계된 요소라면 로드밸런서에는 어떤 기능이 있어야 할까요?
확장성(확장성)
~에 따르면 현대 시스템 설계 입문 - 시스템 설계 01 좋은 시스템은 확장성을 고려해야 한다고 언급했는데, 시스템이 클수록 더 많은 서버나 구성 요소가 필요하기 때문입니다. 로드밸런서는 확장 또는 축소가 가능한 구성요소라는 특징을 가지고 있어 현재 시스템에 맞춰 확장이 가능합니다.
가용성(유효성)
소위 가용성은 시스템의 일부 서버가 충돌하더라도 전체 시스템이 작동을 멈추지 않는다는 것을 의미합니다. 로드 밸런서는 어떤 서버가 과부하되었거나 다운되었는지 판단하고 트래픽을 정상적으로 작동하는 서버로 리디렉션하여 시스템 오류나 중단을 방지할 수 있기 때문에 이러한 유형의 문제를 효과적으로 처리할 수 있습니다.
성능
로드 밸런서의 경우 매우 중요한 작업은 각 서버를 균등하게 분산시키는 것입니다. 기본적으로 특정 서버에 과도한 트래픽이 발생하는 문제는 없습니다. 이러한 기능을 통해 사용자는 더 빠른 응답 시간을 얻을 수 있습니다.
로드 밸런서는 어떻게 작동하나요?
먼저 로드 밸런서 없이 서버가 어떻게 작동하는지 살펴보겠습니다.

앞서 언급했듯이 로드 밸런서가 없으면 트래픽이 특정 서버로 전달되고 클라이언트가 지연됩니다.

반대로 로드밸런서를 중앙에 배치하면 해당 서버로 트래픽을 효과적으로 밸런싱할 수 있다.
AWS 로드 밸런서 설명
여기에서는 소스와 소스를 설명하고 첨부하기 위해 AWS의 개략도를 제공합니다!

다음은 AWS 원문을 번역한 내용입니다.
회사에서는 종종 여러 서버에서 애플리케이션을 실행합니다. 이러한 유형의 서버 배열을 서버 팜이라고 합니다. 애플리케이션에 대한 사용자 요청은 먼저 로드 밸런서로 이동합니다. 그런 다음 로드 밸런서는 요청을 처리하는 데 가장 적합한 서버 클러스터의 단일 서버로 각 요청을 라우팅합니다.
로드 밸런싱은 레스토랑 매니저가 하는 일과 같습니다. 5명의 웨이터가 있는 레스토랑을 생각해 보십시오. 고객이 웨이터를 선택할 수 있다면 한두 명의 웨이터는 과부하가 걸리고 다른 웨이터는 가만히 앉아 있을 수 있습니다. 이를 방지하기 위해 레스토랑 관리자는 고객에게 서비스를 제공하는 데 가장 적합한 특정 웨이터를 배정합니다.
로드 밸런서 작동 방식
로드 밸런싱은 로드 밸런서에 의해 처리되므로 두 부분으로 나눌 수 있습니다. 첫 번째는 로드 밸런서 도구이고 두 번째는 로드 밸런싱의 문제입니다.
로드 밸런서
첫 번째는 로드 밸런서가 하드웨어일 수도 있고 소프트웨어일 수도 있다는 것입니다. 하드웨어 로드밸런서라면 전용 로드밸런싱 장치를 설치해야 하고, 소프트웨어 로드밸런서라면 서버, 가상머신, 클라우드에서 동작 가능하다. 한 번 시스템 설계 구성 요소 빌딩 블록 소개 - 시스템 설계 05 일반적으로 언급되는 콘텐츠 전송 네트워크(CDN)에는 로드 밸런싱 기능도 있습니다. 앞으로는 CDN을 제대로 설명하는 글을 쓰겠습니다.
로드 밸런싱 알고리즘
사용자가 요청을 보내면 로드 밸런서는 다양한 알고리즘을 통해 요청을 전달하여 요청을 처리할 서버를 결정합니다. 이러한 알고리즘은 정적 로드 밸런싱 알고리즘과 동적 로드 밸런싱 알고리즘이라는 두 가지 주요 범주로 나눌 수 있습니다.
정적 로드 밸런싱 알고리즘
정적 로드 밸런싱 알고리즘은 평균 알고리즘을 기반으로 로드 밸런싱을 수행하며 현재 시스템 상태를 고려하지 않습니다. 직설적으로 말하면 정적 로드 밸런싱은 서버의 상태를 알지 못하며, 서버가 과부하 상태인지 유휴 상태인지에 따라 트래픽을 가져올지 여부를 결정할 수 없습니다. 대신 처음부터 이를 기반으로 계획을 통해 부하가 분산됩니다. 이것의 장점은 로드 밸런싱을 설정하고 이해하기가 매우 쉽다는 것이지만, 물론 단점은 효율성이 낮다는 것입니다.
일반적인 정적 로드 밸런싱 방법 중 하나는 라운드 로빈(RR)입니다. 이 알고리즘은 이름에서 알 수 있듯이 시간에 따라 해당 작업을 차례로 실행합니다. Round Robin 알고리즘을 더 깊이 설명하기 위해 여기에도 제공됩니다.위키피디아예.
시간 조각 길이가 100밀리초인 시스템에서 다음 표에 나열된 프로세스를 고려하십시오.




동적 로드 밸런싱 알고리즘
동적 로드 밸런싱 알고리즘은 가용성, 작업 부하 조건, 서버 작동 조건 등 각 서버의 현재 상태를 고려합니다.
그리고 과부하되거나 성능이 저하된 서버에서 완전히 로드되지 않은 서버로 트래픽을 전송합니다. 이는 트래픽을 보다 효율적으로 균등하게 분산할 수 있다는 장점이 있습니다. 그러나 단점은 동적 로드 밸런싱을 달성하기 어렵다는 것입니다. 서버 운영, 서버 메모리 용량, 클라이언트 요청 크기 등 다양한 요소가 서버 가용성에 영향을 미칩니다.
여기에서는 최소 연결, 가중 최소 연결, 리소스 기반 로드 밸런싱 및 지리적 위치 로드 밸런싱(지리적 위치 기반 로드 밸런싱)을 포함하여 리더를 위한 몇 가지 일반적인 동적 밸런싱 알고리즘도 제공합니다.
글로벌 및 로컬 로드 밸런싱
앞서 로드 밸런서가 무엇인지, 어떻게 작동하는지 알아보겠습니다. 다음으로 로드 밸런서의 종류에 대해 알아보겠습니다. 기본적으로 글로벌 로드 밸런서(Global Server Load Balancing)와 로컬 로드 밸런서(Local Load Balancing)로 나눌 수 있습니다. . 단순히 문자 그대로의 의미를 취하면 글로벌 로드 밸런싱은 여러 지리적 위치에 걸친 트래픽 밸런싱을 담당하고, 로컬 로드 밸런싱은 대규모 데이터 센터의 트래픽 밸런싱을 담당한다는 것을 어렵지 않게 알 수 있습니다.
글로벌 서버 로드 밸런싱
글로벌 서버 로드 밸런싱의 주요 작업은 글로벌 트래픽의 균형을 맞추고 여러 대규모 데이터 센터로 분산하는 것입니다. 예를 들어 미국 사용자 트래픽은 GSLB를 통해 북미의 데이터 센터로 분산됩니다. 글로벌 서버 로드 밸런싱은 사용자의 현재 지리적 위치와 다양한 데이터 센터의 상태를 기반으로 트래픽을 전달할 지리적 데이터 센터를 결정할 수 있습니다.
또 다른 예는 다음과 같습니다. 사용자가 도쿄에 있고 뉴욕에 있는 서버에서 웹 서비스를 사용하는 경우 요청과 응답 모두 장거리를 이동해야 하므로 로드 시간이 크게 지연됩니다.
GSLB를 사용하는 글로벌 서버 풀링은 각 사용자가 지리적으로 가까운 서버에 연결할 수 있도록 보장하여 홉 및 전송 시간을 최소화합니다. 이 예에서 뉴욕에 본사를 둔 회사가 GSLB를 사용하는 경우 도쿄에 있는 사용자는 자신의 위치에 더 가까운 서버에 연결할 수 있어 사용자 경험이 더 빨라집니다.
GSLB에서 DNS로
이전 기사 DNS란 무엇입니까? 도메인 이름 시스템 소개 - 시스템 설계 06 DNS에 대해 심도있게 설명하고 있지만 실제로 그 동작은 로드 밸런싱(Load Balancing)의 개념과 연관되어 있습니다. DNS는 각 DNS 쿼리에 응답하여 IP 주소 목록을 재정렬하며, 다른 사용자도 IP 위치 목록을 받게 됩니다. 또한 사용자는 요청을 처리하기 위해 여러 서버에 요청을 보내므로 DNS는 글로벌 서버 로드 밸런싱을 통해 요청 트래픽을 여러 데이터 센터로 분산합니다.
로컬 로드 밸런싱
로컬 로드 밸런싱은 데이터 센터에 한정된 로드 밸런싱으로, 범위는 하나의 데이터 센터로 제한됩니다. 하지만 기본적으로는 서로 다른 알고리즘을 통해 해당 서버에 트래픽을 할당하는 로드밸런서와 동일합니다.
로드 밸런서 구현
초기 소개에서는 로드 밸런서를 하드웨어, 소프트웨어, 클라우드 로드 밸런서로 간단히 나눌 수 있다고 언급했습니다. 다음은 세 가지 구현에 대한 소개입니다.
하드웨어 부하 분산 장치
로드 밸런서는 30년 동안 존재해 왔으며 로드 밸런서는 원래 하드웨어로 구현되었습니다. 물론 초기에는 하드웨어를 이용해 로드밸런서를 구축하는 데 비용이 많이 들었지만, 당시의 트래픽에 대한 사용자의 요구를 처리할 수 있다는 것이 장점이었다. 그러나 현대에는 하드웨어 부하 분산 장치가 반드시 기업의 첫 번째 선택은 아닙니다. 가장 큰 단점은 하드웨어 부하 분산 장치가 하드웨어에 크게 의존하고 높은 유지 관리 및 운영 비용이 필요하며 하드웨어 호환성 문제도 처리해야 한다는 것입니다.
소프트웨어 로드 밸런서
하드웨어와 비교하여 소프트웨어 부하 분산 장치에는 높은 유연성, 프로그래밍 가능성 및 저렴한 비용과 같은 몇 가지 추가 기능이 있습니다. 소프트웨어 로드 밸런서는 확장성이 뛰어나고 시스템 규모가 커짐에 따라 신속하게 설정할 수 있기 때문에 기업에서 점점 더 인기를 얻고 있습니다.
클라우드 로드 밸런서
물론 소프트웨어 외에도 3대 클라우드 서비스 제공업체의 등장으로 로드 밸런서에서도 클라우드 서비스를 사용할 수 있게 되었습니다. 그 중 로드밸런서와 서비스(LBaaS)도 이때 등장했다. 물론 IaaS, PaaS, SaaS 등 다른 고유명사에도 관심이 있다면 이 글을 읽어보시면 됩니다. Zeabur의 IaaS, PaaS, SaaS가 무엇인지 설명해주세요. 클라우드 서비스 모델을 소개합니다!.
클라우드 로드 밸런서의 가장 큰 이점은 사용자가 현재 사용량에 따라 클라우드 공급자에게 비용을 지불할 수 있다는 것입니다. 그리고 하드웨어와 소프트웨어의 기술적 한계점에 비해 클라우드 로드 밸런서의 한계점은 상대적으로 낮습니다. 따라서 클라우드 로드 밸런서는 현재 많은 기업의 주요 선택 중 하나입니다.
결론
로드밸런서는 시스템 설계에 있어서 중요한 개념 중 하나이며, 대규모 시스템에서는 없어서는 안 될 도구이기도 합니다. 시스템 성능을 향상시키는 것 외에도 짧은 시간 내에 높은 트래픽으로 인해 시스템이 충돌하지 않도록 보장합니다.
다른 시스템 설계에 관심이 있으시면 다른 시스템 설계 기사도 읽어 보시기 바랍니다. 의사소통을 위해 메시지를 남겨주셔도 좋습니다.
관련 기사
DNS란 무엇입니까? 도메인 이름 시스템 소개 - 시스템 설계 06
시스템 설계 구성 요소 빌딩 블록 소개 - 시스템 설계 05