로드 밸런싱

로드 밸런싱(Load Balancing)은 네트워크나 서버 시스템에서 발생하는 트래픽을 여러 대의 서버나 자원 사이에 균등하게 분산시켜 주는 기술이다. 이를 통해 각 서버나 자원에 가중치가 일정하게 분산되어 작업 부하를 균형 있게 분담할 수 있다.

 

로드 밸런싱의 장점

로드 밸런싱은 애플리케이션 서버와 방문자 또는 클라이언트 간의 인터넷 트래픽을 지시하고 제어한다.
결과적으로 애플리케이션의 가용성, 확장성, 보안성능이 향상된다.

1. 애플리케이션 가용성

서버 장애 또는 유지 관리로 인해 애플리케이션 가동 중지 시간이 늘어 방문자가 애플리케이션을 사용할 수 없게 될 수도 있다. 로드 밸런서는 서버 문제를 자동으로 감지하고 클라이언트 트래픽을 사용 가능한 서버로 리디렉션 하여 시스템의 내결함성을 높인다.
로드 밸런싱을 사용하면 이런 문제를 방지할 수 있고, 애플리케이션의 가동 중지 없이 애플리케이션 서버 유지 관리 또는 업그레이드를 실행할 수 있다.

2. 애플리케이션 확장성

로드 밸런서를 사용하여 여러 서버 간에 네트워크 트래픽을 지능적으로 전달할 수 있다.
로드 밸런싱은 한 서버의 트래픽 병목 현상을 방지하고, 필요한 경우 다른 서버를 추가하거나 제거할 수 있도록 애플리케이션 트래픽을 예측한다. 다음과 같은 특성을 활용하면 수천 개의 클라이언트 요청을 처리할 수 있다.

3. 애플리케이션 보안

로드 밸런서에는 인터넷 애플리케이션에 또 다른 보안 계층을 추가할 수 있는 보안 기능이 내장되어 있다. 이는 공격자가 서버 장애를 일으키는 수백만 개의 동시 요청으로 애플리케이션 서버를 가득 채우는 분산 서비스 거부 공격을 처리하는 데 유용한 도구이다. 또한 트래픽을 모니터링하고, 악성 콘텐츠를 차단하며, 공격 트래픽을 여러 백엔드 서버로 자동으로 리디렉션 하여 영향을 최소화한다. 추가 보안을 위해 네트워크 방화벽 그룹을 통해 트래픽을 라우팅 한다.

4. 애플리케이션 성능

로드 밸런서는 응답 시간을 늘리고 네트워크 지연 시간을 줄여 애플리케이션 성능이 향상된다.
서버 간의 로드를 균등하게 배포하여 애플리케이션 성능을 향상하고, 클라이언트 요청을 지리적으로 더 가까운 서버로 리디렉션 하여 지연 시간을 단축시킬 수도 있다. 물리적 및 가상 컴퓨팅 리소스의 신뢰성과 성능을 보장한다.

 

이러한 장점들은 현대 애플리케이션이 갖춰야 할 속성을 정의한 리액티브 선언과도 굉장히 잘 맞다고 느낀다.

리액티브 선언은 현대의 소프트웨어 시스템의 아키텍처 및 설계 원칙에 관한 문서로, 2014년 Jonas Bonér, Dave Farley, Roland Kuhn 등 여러  소프트웨어 개발자 및 아키텍트들이 공동으로 작성한 선언문으로 4가지 특성을 강조한다.

  • 응답성(Responsive) : 사용자에게 신뢰성 있는 응답을 빠르고 적절하게 제공하는 것
  • 탄력성(Resilient) : 장애가 발생하거나 부분적으로 고장 나더라도 시스템 전체가 고장 나지 않고 빠르게 복구하는 능력
  • 유연성(Elastic) : 시스템의 사용량에 변화가 있더라도 균일한 응답성을 제공하는 것 (시스템의 사용량에 비례해서 자원을 늘리거나 줄이는 능력)
  • 메시지 기반(Message Driven) : 비동기 메시지 전달을 통해 위치 투명성, 느슨한 결합, 논블로킹 통신을 지향하는 것

로드 밸런싱은 이러한 특성을 지키기 위한 중요한 기술 중 하나로 볼 수 있다.

 

로드 밸런싱 알고리즘

  • 라운드 로빈 로드 밸런싱(Round Robin Load Balancing)
    이 유형은 들어오는 요청을 순서대로 각 서버에 번갈아가며 분배한다. 각 서버는 동등한 부하를 갖게 되지만, 서버 간의 성능 차이나 부하 상태를 고려하지 않는다.
  • 최소 연결 수 로드 밸런싱(Least Connections Load Balancing)
    연결 수가 가장 적은 서버에 새로운 요청을 보내는 방식입니다. 현재 연결 수가 적은 서버에 부하를 분산시켜 성능을 최적화할 수 있다.
  • IP 해시 로드 밸런싱(IP Hash Load Balancing)
    클라이언트의 IP 주소를 해시하여 특정 서버에 할당하는 방식이다. 동일한 IP 주소는 항상 같은 서버로 연결되므로 세션 유지를 위한 경우에 유용하다.
  • 가중치 순환 로드 밸런싱(Weighted Round Robin Load Balancing)
    서버마다 가중치를 할당하여 부하를 분산시키는 방식이다. 가중치가 높은 서버일수록 더 많은 요청을 처리하게 된다.
  • 가중치 최소 연결 수 로드 밸런싱(Weighted Least Connections Load Balancing)
    연결 수에 가중치를 적용하여 연결 수가 적은 서버에 부하를 분산시키는 방식이다.
  • 세션 유지(스티키 세션) 로드 밸런싱(Session Persistence (Sticky Session) Load Balancing)
    특정 클라이언트의 요청을 항상 같은 서버로 보내는 방식으로, 클라이언트의 세션 정보나 쿠키를 기반으로 연결을 유지한다.
  • 콘텐츠 기반 로드 밸런싱(Content-Aware Load Balancing)
    요청의 내용이나 URL을 분석하여 특정 서버로 보내는 방식이다. 특정 URL 패턴에 따라 다른 서버로 요청을 전달할 수 있다.
  • 글로벌 서버 로드 밸런싱(Global Server Load Balancing (GSLB))
    여러 데이터 센터나 지역에 분산된 서버 사이의 부하를 조절하고, 사용 가능한 데이터 센터로 요청을 보내는 방식이다.

로드밸런싱 기술 유형

1. 하드웨어 로드 밸런서

하드웨어 로드 밸런서는 전용 하드웨어 장비로, 네트워크 트래픽을 관리하고 분산시키는 역할을 한다.
주로 대규모의 데이터 센터나 기업 환경에서 사용된다.

 

장점

  • 고성능: 전용 하드웨어를 사용하므로 대량의 트래픽을 효율적으로 처리할 수 있다.
  • 안정성: 하드웨어 장비는 특화된 운영체제를 사용하며, 높은 가용성과 안정성을 제공합니다.
  • 확장성: 대규모 환경에서 서버를 추가할 때도 높은 성능을 유지할 수 있습니다.

단점

  • 비용: 하드웨어 로드 밸런서는 전용 장비를 필요로 하며, 비용이 상대적으로 높을 수 있다.
  • 유지보수: 하드웨어 장비의 유지보수 및 업그레이드가 복잡할 수 있다.

2. 소프트웨어 로드 밸런서

소프트웨어 로드 밸런서는 서버 내에서 소프트웨어로 구현된 로드 밸런싱 기능을 사용하는 방식이다.
가상 머신, 컨테이너, 클라우드 환경 등에서 사용된다.

 

장점

  • 비용 효율성: 추가적인 하드웨어 장비 없이 소프트웨어로 구현되므로 비용이 낮을 수 있다.
  • 유연성: 가상 환경에서 쉽게 배포되며, 클라우드 기반 환경에서도 운영될 수 있다.
  • 관리 용이성: 소프트웨어 업데이트와 유지보수가 상대적으로 간단할 수 있다.

단점

  • 성능 한계: 고성능 요구사항을 처리하기 어려울 수 있으며 하드웨어 로드 밸런서보다 성능이 낮을 수 있다.
  • 가용성 : 소프트웨어 로드 밸런서 자체의 가용성에 의존하므로, 단일 서버 장애 시 문제가 발생할 수 있다.

요약하자면 하드웨어 로드 밸런서는 대규모 환경에서 안정적인 성능을 추구할 때 적절하며, 소프트웨어 로드 밸런서는 상대적으로 훨씬 유연하며, 클라우드 컴퓨팅 환경과 호환이 잘되는 장점이 있다.

 

참조(Reference)

https://aws.amazon.com/ko/what-is/load-balancing/

 

로드 밸런싱이란 무엇인가요? - 로드 밸런싱 알고리즘 설명 - AWS

로드 밸런싱은 애플리케이션을 지원하는 리소스 풀 전체에 네트워크 트래픽을 균등하게 배포하는 방법입니다. 최신 애플리케이션은 수백만 명의 사용자를 동시에 처리하고 정확한 텍스트, 비

aws.amazon.com

 

'Computer Science > Network' 카테고리의 다른 글

HTTP의 특징  (0) 2023.09.19
URI 와 웹 브라우저 요청 흐름  (0) 2023.09.19
HTTP 웹 기본 지식  (2) 2023.09.18
SSL/TLS HandShake  (0) 2023.08.29
HTTP와 HTTPS  (0) 2023.08.28

+ Recent posts