[로드밸런싱] Load Balancing이란? 서버 부하 분산의 방법

2025. 5. 3. 22:37·CS

 

 

 

로드 밸런싱은 애플리케이션을 지원하는 여러 서버(리소스 풀) 전체에 걸쳐 네트워크 트래픽을 효율적으로 분산하는 기술이다. 이를 통해 특정 서버에 부하가 집중되는 것을 막고, 시스템 전체의 가용성(availability), 신뢰성(reliability), 그리고 응답 속도(response time)를 향상시키는 핵심적인 역할을 한다.

 

서버를 확장 시키는 방법은 두가지가 있다.

 

1. Scale Up (수직 확장)

한 대의 서버 성능을 높이는 방식입니다.

  • ✅ 장점
    • 인프라 구조는 단순하게 유지됨 (서버 수는 그대로)
    • 소프트웨어 변경 없이도 CPU, RAM 업그레이드로 성능 향상 가능
  • ⚠️ 단점
    • 물리적인 한계: 서버 한 대가 가질 수 있는 리소스에는 명확한 한계가 존재한다.
    • 단일 장애 지점 (SPOF): 해당 서버에 장애가 발생하면 전체 서비스가 중단될 위험이 있다.
    • 비용: 고성능 하드웨어는 가격이 기하급수적으로 증가하는 경향이 있다.

 

2. Scale Out (수평 확장)

서버를 여러 대로 나누고 로드밸런싱을 통해 트래픽을 분산합니다.

  • ✅ 장점
    • 무한에 가까운 확장성 (필요한 만큼 서버를 계속 추가 가능)
    • 장애 격리에 유리함 (1대 죽어도 나머지가 서비스 유지)
    • 컨테이너 기반 MSA 아키텍처와 매우 잘 어울림
  • ⚠️ 단점
    • 로드 밸런서 필수: 트래픽 분산을 위해 로드 밸런서 도입 및 관리가 필수적이. (로드 밸런서 자체의 이중화(HA) 구성도 고려해야 한다.)
    • 상태 관리 복잡성: 여러 서버에서 사용자 세션(Session)을 일관되게 유지하거나 데이터를 동기화하는 등 상태 관리가 복잡해질 수 있다.
    • 네트워크 복잡도 증가: 서버 간 통신 및 로드 밸런서 설정 등으로 인해 네트워크 구성이 더 복잡해질 수 있다

 

로드 밸런싱 기법

 

1. 라운드 로빈 (Round Robin)

가장 기본적이고 널리 사용되는 방식. 순서대로 서버에 요청을 분배.

 

  • 특징:
    • 구현이 매우 간단합니다. (Nginx의 기본 분배 방식)
    • 모든 서버의 성능과 처리 능력이 유사하다고 가정할 때 효과적입니다.
    • 서버가 클라이언트의 이전 요청 상태를 기억할 필요가 없는 (Stateless) 서비스에 적합합니다.
  • 단점:
    • 서버 간의 실제 성능 차이나 현재 처리 중인 부하 상태를 고려하지 않습니다. 특정 서버가 느려지더라도 동일한 수의 요청을 받게 됩니다.

 

 

upstream backend {
    server server1;
    server server2;
    server server3;
}

 

 

2. 가중 라운드 로빈 (Weighted Round Robin)

서버마다 가중치를 줘서 요청을 비율에 따라 분산.

  • 특징:
    • 서버 성능에 따라 트래픽 비율 조절 가능
    • 고사양 서버에 더 많은 요청 부여 가능
  • 예시:
upstream backend {
    server server1 weight=5; # server1이 5/8 비율로 요청 처리
    server server2 weight=2; # server2가 2/8 비율로 요청 처리
    server server3 weight=1; # server3이 1/8 비율로 요청 처리
}

 

 

3. 최소 연결 (Least Connections)

현재 연결 수가 가장 적은 서버에 요청을 보냄.

  • 특징:
    • 긴 처리 시간이 걸리는 요청이 많을 때 유리
    • 실시간 부하 분산에 효과적
  • 단점:
    • 연결 수만 기준이라 리소스 사용량은 반영하지 않음
  • 예시
upstream backend {
    least_conn;
    server server1;
    server server2;
    server server3;
}

 

 

4.  IP 해시 (IP Hash)

클라이언트의 IP 주소를 기반으로 서버를 고정.

 

  • 특징:
    • 세션 지속성 (Session Persistence / Sticky Session): 특정 클라이언트의 요청은 항상 동일한 서버로 전달되므로, 사용자의 세션 정보를 해당 서버에서 유지해야 하는 경우 유용합니다. (예: 로그인 상태, 장바구니 정보 등)
  • 단점:
    • 특정 IP 대역에서 많은 요청이 들어올 경우, 해당 요청이 매핑된 서버에만 부하가 집중될 수 있습니다 (IP 편중 현상).
    • 프록시 서버나 NAT 환경에서는 여러 클라이언트가 동일한 IP로 인식되어 부하 분산 효과가 떨어질 수 있습니다.

 

  • 예시
upstream backend {
    ip_hash;
    server server1;
    server server2;
    server server3;
}

 

 

 

 

 

저작자표시 비영리 변경금지 (새창열림)

'CS' 카테고리의 다른 글

개발자를 위한 필수 메모리 지식: 스택(Stack)과 힙(Heap) 이해하기  (0) 2025.05.05
[JWT] 토큰 인증에 대하여  (1) 2025.02.28
시간복잡도(Time Complexity) & 공간복잡도(Space Complexity)  (0) 2024.12.05
OOP vs FP 에 대하여..  (0) 2024.11.12
쿠키(Cookie)와 세션(Session)의 기본 개념  (0) 2024.10.13
'CS' 카테고리의 다른 글
  • 개발자를 위한 필수 메모리 지식: 스택(Stack)과 힙(Heap) 이해하기
  • [JWT] 토큰 인증에 대하여
  • 시간복잡도(Time Complexity) & 공간복잡도(Space Complexity)
  • OOP vs FP 에 대하여..
창MIN
창MIN
  • 창MIN
    미니의 코드
    만들고 도전하는것을 좋아합니다💻
  • Guest
    Gmail
    GitHub
  • 전체
    오늘
    어제
    • 분류 전체보기 (25)
      • Google Cloud (6)
      • NodeJS (3)
      • NestJS (1)
      • Python (1)
      • DB (1)
      • Docker & Kubernetes (1)
      • Server & Infra (3)
      • CS (7)
      • Algorithm (2)
        • 개념 (2)
        • 문제 (0)
      • 개발 (0)
  • 인기 글

  • 태그

    cloud logging
    cloud buckets
    google api gateway
    쿠키와 세션의 개념
    Google Cloud
    nodejs
    typeScript
    Secret Manager
    cors 작동
    Cloud Function
    서버 부하
    버킷 cors
    Cloud Storage
    Cors
    파일 무결성
    signed url
    cors 개념
    redoc
    알고리즘
    서버 부하 분산
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
창MIN
[로드밸런싱] Load Balancing이란? 서버 부하 분산의 방법
상단으로

티스토리툴바