본문 바로가기
Concepts/System Design

Load balancer

by ocwokocw 2025. 3. 29.

- 출처: https://github.com/donnemartin/system-design-primer?tab=readme-ov-file#load-balancer

 

 

GitHub - donnemartin/system-design-primer: Learn how to design large-scale systems. Prep for the system design interview. Inclu

Learn how to design large-scale systems. Prep for the system design interview. Includes Anki flashcards. - donnemartin/system-design-primer

github.com

 

- Load balancer

Load balancer 는 들어오는 클라이언트 요청을 어플리케이션 서버나 데이터베이스 같은 컴퓨팅 리소스로 분배한다. 각 경우에, Load balancer 는 컴퓨팅 자원으로부터 응답을 적절한 클라이언트에게 반환한다. Load balancer 는

  • 요청이 정상이 아닌 상태의 서버로 가지 않도록 방지
  • 자원 과부하 방지
  • SPOF (단일 장애점, 하나의 모듈로 인해 시스템 전체가 고장난다면 해당 모듈을 단일 장애점이라고 함)을 제거하는데 도움을 줌

Load balancer 는 하드웨어 (고비용)나 HAProxy 같은 소프트웨어 방식으로 구현될 수 있다. 또한 추가적인 이점이 있는데

  • SSL termination - 인입 요청을 복호화하고 서버 응답을 암호화하여 고비용 연산을 백엔드 서버가 하지 않아도 된다. (X.509 인증서를 설치하지 않아도됨)
  • Session persistence - 웹앱이 세션을 추적하지 않는 경우 쿠키를 발행하고 특정 클라이언트의 요청을 같은 인스턴스로 라우팅한다.

장애로부터 보호하기 위해 일반적으로 active-passive 모드 또는 active-active 모드로 여러 로드 밸런서를 설정한다.

로드 밸런서는 다양한 메트릭을 기반으로 트래픽을 라우팅할 수 있는데 이러한 메트릭에는 아래가 포함된다.

  • Random
  • 가장 적은 부하의 서버
  • Session / Cookies
  • 라운드 로빈 또는 가중치 적용된 라운드 로빈
  • Layer 4
  • Layer 7

- Layer 4 로드 밸런싱

Layer 4 로드 밸런서는 요청 분산을 결정하기 위해 전송 계층을 참조한다. 일반적으로 출발지와 목적지 IP 주소를 포함해서 헤더의 포트를 참조하며, 패킷의 내용은 참조하지 않는다. Layer 4 로드 밸런서는 네트워크 패킷을 업스트림 서버로 혹은 서버로 부터 포워딩할 때 Network Address Translation(NAT) 를 수행한다.

 

- Layer 7 로드 밸런싱

Lyaer 7 로드 밸런싱은 요청을 어떻게 분산할지 결정하기 위해 어플리케이션 계층을 참조한다. 헤더의 내용 및 메시지, 쿠키등이 이에 해당한다. Layer 7 러드 밸런서는 네트워크 트래픽을 종료하고 메시지를 읽고 로드 밸런싱 결정을 한 후 선택한 서버로 연결한다. 예를 들어 Layer 7 러드 밸런서는 비디오 트래픽을 호스팅하는 서버로 보내는 반면 더 민감한 트래픽은 보안이 강화된 서버로 보낼 수 있다.

 

Layer 4는 유연성을 희생하는 대신 Layer 7 보다 적은 시간과 컴퓨팅 자원을 소모한다. 하지만 현대의 H/W 에서는 성능의 영향이 미미할 수 있다. 

 

- 수평 확장

로드 밸런서는 성능과 가용성을 증진시키는 수평 확장을 도와준다. 상용 머신을 이용한 수평 확장은 비용적인 측면에서 이점이 있으므로 단일 서버를 비싼 H/W 로 갱신하는 수직 확장보다 더 높은 가용성을 제공할 수 있다.

 

수평 확장의 단점

  • 수평 확장을 하려면 서버가 stateless 여야 한다. 서버가 stateless 여야 한다는 의미는 세션이나 프로필과 같이 유저 특화된 데이터를 포함하지 않아야 한다는것을 의미한다. 세션과 같은 경우 별도의 DB 나 영속 cache 서버에서 관리해야 한다.
  • 캐시나 DB를 위한 다운스트림 서버는 업스트림 서버가 확장될수록 동시 연결도 더 많아지므로 이를 처리할 수 있어야 한다.

 

- 로드 밸런서의 단점

  • 만약 로드 밸런서에 충분한 자원이 할당되어 있지 않거나 설정이 적절하지 않다면 오히려 로드 밸런서가 병목지점이 될 수 있다.
  • SPOF 를 제거하기 위해 로드 밸런서를 사용하면 복잡성이 증가한다.
  • 단일 로드 밸런서로 구성하는 경우 이것 자체가 SPOF 가 되며, 이를 극복하기 위해 여러 개의 로드 밸런서를 설정하면 복잡성도 그만큼 증가한다.

 

'Concepts > System Design' 카테고리의 다른 글

Communication  (0) 2025.04.13
Asynchronism  (0) 2025.04.13
Application layer  (0) 2025.04.13
Reverse proxy (web server)  (0) 2025.04.02
Layer 4 vs Layer 7 Load balancing  (0) 2025.03.29

댓글