CS/네트워크

로드 밸런싱(Load Balancing)

glorypang 2025. 7. 19. 14:18
728x90
반응형
SMALL

들어가며

현대의 대부분 웹 서비스는 인터넷을 기반으로 운영되고 있어요. 누구나 접속할 수 있고, 시간과 장소의 제약도 거의 없죠. 이처럼 접근성이 좋아진 덕분에 사용자 수가 폭발적으로 늘었고, 이에 따라 트래픽도 함께 증가했어요.

 

하지만 아무리 성능이 뛰어난 서버라도 감당할 수 있는 요청량에는 한계가 있어요. 특정 시간대나 이벤트 발생 시, 갑작스러운 트래픽 증가가 발생하면 한 대의 서버로는 감당이 안 되겠죠. 이 경우 서비스 지연이나 장애로 이어질 수 있습니다.

 

이런 상황을 해결하기 위한 핵심 기술이 바로 로드 밸런싱(load balancing) 이에요.

로드 밸런서란?

로드 밸런서는 말 그대로 서버에 걸리는 부하(Load)를 분산(Balancing) 해주는 장치 또는 기술이에요.

 

클라이언트와 서버풀(server pool: 여러 대의 서버로 구성된 그룹) 사이에 위치하며, 특정 서버에 트래픽이 몰리지 않도록 요청을 분산시켜요. 이렇게 하면 모든 서버가 효율적으로 작동할 수 있고, 전체 시스템의 안정성과 처리 속도가 개선됩니다.

 

즉, 로드 밸런서는 사용자 요청을 알아서 잘 나눠주는 트래픽 조율자 역할을 해요.

 

모든 서비스에 로드 밸런서가 필요한가요?

꼭 그런 것은 아닙니다.

서비스 초창기에는 사용자 수가 많지 않기 때문에, 서버 한 대로도 충분히 대응이 가능해요. 하지만 서비스가 성장하면서 이용자가 많아지고, 트래픽이 증가하게 되면 기존의 한 대 서버로는 감당이 어려워지게 됩니다.

서버 확장의 두 가지 방식

트래픽이 늘어나고 기존 서버가 한계에 도달했을 때, 시스템 확장을 고려해야 해요.

이때 선택지는 크게 두 가지입니다:

  • 하나를 더 좋게 만든다 (Scale-up)
  • 여러 개로 나눠서 처리한다 (Scale-out)

두 방식 모두 시스템의 처리 능력을 높이기 위한 방법이지만, 접근 방식이 전혀 달라요.

두 번째 방법을 선택할 경우, 각 서버에 트

래픽을 고르게 분산하기 위해 반드시 로드 밸런서가 필요해요.

https://twojun-space.tistory.com/158

Scale-up: 서버 자체를 강화하는 방식

“더 좋은 부품을 달아서 서버 한 대를 강화한다.”

서버 한 대의 성능을 극한까지 끌어올리는 방식입니다

  • CPU, RAM, 디스크를 업그레이드하거나
  • 클라우드에서는 인스턴스 타입을 상위 등급으로 올려요.
    • 예시: i3 CPU 서버 → i7 CPU 서버로 업그레이드

장점

  • 구조가 단순해요. 서버가 1대니까, 관리도 쉬워요.
  • 데이터 일관성 걱정도 거의 없어요. 나눌 게 없으니까요.
  • 확장 방식이 직관적이고 비교적 빠릅니다.
  • 소규모 서비스에선 빠르고 효과적일 수 있어요.

단점

  • 하드웨어 성능 향상에는 한계가 있어요. (더 이상 업그레이드 못할 수도 있음)
  • 서버 한 대에 모든 트래픽이 집중되기 때문에 장애 시 전체 서비스가 중단될 수 있어요.
  • 비용이 비쌀 수 있습니다. (하이엔드 서버는 가격이 급격히 증가함)

Scale-out: 서버를 여러 대로 나누는 방식

“같은 사양의 서버를 여러 대 두고 나눠서 처리한다.”

같은 역할을 하는 서버를 여러 대 두고, 각각이 요청을 나눠서 처리하는 방식이에요.

  • 서버를 추가해서 부하를 분산시키는 방식이에요.
  • 클라우드 환경에서는 Auto Scaling으로 트래픽에 따라 서버 수를 자동으로 조절할 수도 있어요.
    • 예시: i3 CPU 서버를 여러 대 두고, 트래픽을 나눠 처리

장점

  • 유연한 확장성이 있어요. 필요할 때마다 서버를 추가하면 됩니다.
  • 서버 하나가 다운되어도 전체 서비스가 멈추지 않아요. → 장애에 강한 구조
  • 비용 효율적인 경우가 많습니다. 고성능 서버보다 저사양 서버 여러 대가 저렴할 수 있어요.

단점

  • 여러 서버를 다루는 구조이기 때문에, 복잡한 아키텍처 이해가 필요해요.
  • 데이터 일관성 문제가 생길 수 있어요. (동시성 문제, 복제 지연 등)
  • 서버 간 부하를 고르게 분산하려면 로드 밸런서가 필수입니다.

로드 밸런싱 알고리즘

로드 밸런싱은 단순히 "나눠주는 것"이 아니라, 어떻게 나눌 것인가에 따라 성능과 안정성에 큰 차이가 발생할 수 있어요.

상황에 맞는 분산 전략을 선택하는 것이 매우 중요합니다.

라운드로빈 방식 (Round Robin)

"들어온 순서대로, 돌아가면서 나눠준다."

  • 가장 기본적인 로드 밸런싱 방식
  • 각 서버에 클라이언트 요청을 순서대로 할당합니다.
    • 예: 고객이 10명이고 창구가 3개면, 1번 → 창구 A, 2번 → B, 3번 → C, 4번 → 다시 A…

언제 사용하나요?

  • 서버의 성능이 균일하고
  • 요청 처리 시간도 큰 차이 없는 서비스

장점

  • 구현이 쉽고 빠릅니다.
  • 서버 스펙이 균일할 때 효율적으로 작동해요.

단점

  • 서버 상태를 고려하지 않기 때문에 과부하가 발생할 수 있어요.
  • → 어떤 서버가 바쁘더라도 그냥 돌아가며 보냅니다.

가중 라운드로빈 방식 (Weighted Round Robin)

"스펙 좋은 서버에 더 많은 요청을 보내준다."

  • 서버마다 가중치를 부여하고, 가중치에 따라 요청을 분배합니다.
    • 예: A 서버(가중치 3), B 서버(가중치 1) → A: 3개, B: 1개 요청 처리

언제 사용하나요?

  • 서버마다 사양이 다를 때
  • 단순 로직이지만 어느 정도의 서버 분배 조절이 필요한 서비스

장점

  • 라운드로빈보다 훨씬 현실적인 분배 가능 → 자원의 효율성 높음
  • 비대칭 서버 환경에서 적절하게 분배 가능

단점

  • 서버 상태(응답 속도, 연결 수 등)를 동적으로 반영하지 않음
  • → “성능 좋은 서버가 현재 과부화 상태”인지 파악 불가

IP 해시 방식 (IP Hash)

"같은 클라이언트는 항상 같은 서버로 연결된다."

  • 사용자의 IP 주소를 해시 처리해 특정 서버에 고정 배정 → 매번 같은 서버로 요청이 가기 때문에 세션 유지가 쉬워요.

언제 사용하나요?

  • 서버에 세션 데이터를 저장하고 있는 경우
  • 세션 클러스터링이 안 되어 있어서, 한 유저는 항상 같은 서버로 가야 하는 경우

장점

  • 사용자 경험이 일관됩니다 (예: 로그인 유지 등).
  • 간단하게 구현 가능한 세션 고정 효과 낼 수 있음

단점

  • 특정 IP 대역에 트래픽이 몰리면 편향 발생
  • 사용자 수가 많거나, IP 변경이 자주 일어나는 환경엔 부적합.

최소 연결 방식 (Least Connection)

"현재 연결이 가장 적은 서버에 요청을 보낸다."

  • 실시간으로 연결 수를 모니터링해 가장 여유 있는 서버에 요청을 전달합니다.

언제 사용하나요?

  • 요청의 처리 시간이 들쭉날쭉한 서비스
  • WebSocket, 실시간 스트리밍처럼 연결 유지 시간이 긴 서비스

장점

  • 실시간 상황을 고려하니 더 스마트한 분배 가능
  • 과부하 서버를 피할 수 있음

단점

  • 연결 상태를 추적해야 하므로, 시스템 부담 증가
  • 연결 수만 볼 뿐, 응답 속도까지는 고려하지 않음

최소 응답시간 방식 (Least Response Time)

"연결 수도 적고 응답 속도도 빠른 서버에 보내준다."

  • 연결 수 + 응답 속도를 모두 고려해서 "제일 여유 있는 서버"를 찾습니다.

언제 사용하나요?

  • 사용자 체감 속도가 중요한 서비스 (예: 실시간 서비스, 게임 서버 등)
  • 서버별 상태가 계속 달라지는 동적 트래픽 환경

장점

  • 사용자에게 빠른 응답을 제공할 수 있어요.
  • 리얼타임 상태 기반의 가장 ‘효율적인’ 분배가 가능

단점

  • 시스템 리소스를 더 많이 소모함 (모니터링 + 판단)

상황별 로드 밸런싱 추천 요약

  • 모든 서버가 비슷하고 요청도 가벼움 → 라운드로빈
  • 서버 성능이 다르다면 → 가중 라운드로빈
  • 세션 유지가 필요하다면 → IP 해시
  • 연결 수가 중요한 실시간 서비스 → 최소 연결 방식
  • 응답 속도까지 중요한 경우 → 최소 응답시간 방식

L4 vs L7 로드 밸런싱 – 계층에 따른 전략 차이

트래픽을 서버에 나눠주는 게 로드 밸런싱이지만,

"무엇을 기준으로 나눌까?"에 따라 그 방식은 달라져요.

바로 이 기준이 되는 것이 OSI 7계층 중 어디를 보느냐예요.

실무에선 보통 L4 (전송 계층) 또는 L7 (애플리케이션 계층) 기준으로 트래픽을 분산합니다.

L4 로드 밸런싱 (Transport Layer 기반)

“IP와 포트 정보를 기준으로 트래픽을 분산합니다.”

L4 (Transport Layer) 는 TCP, UDP 같은 전송 계층에서 작동해요.

 

특징

  • 클라이언트 IP, 포트 번호, TCP/UDP 등의 헤더 정보만 보고 분산
  • 라운드 로빈, 해시, 최소 연결 등 다양한 전략 사용 가능
  • 내용은 보지 않기에 빠르고 단순

언제 사용하나?

  • 모든 요청이 유사하게 처리될 때
  • 서비스 의미 분석이 불필요할 때
  • TCP 기반 서비스, 포트 기반 서버 운영 시 (ex. 8080, 8081 등)

L7 로드 밸런싱 (Application Layer 기반)

“요청 내용을 해석해 트래픽을 분산합니다.”

L7 (Application Layer) 는 HTTP, FTP 등 애플리케이션 계층에서 작동해요.

 

특징

  • URL, 쿠키, 헤더, 토큰 등 요청의 의미까지 파악 가능
  • 조건에 따라 요청을 세부적으로 분기 가능
  • SSL 종료, 인증 검사 등 고급 기능 수행 가능

→ 말 그대로 “이 사람이 어떤 요청을 했는지” 보고 판단하는 구조입니다.

 

언제 사용하나?

  • 경로 기반 라우팅할 때 (/api, /static)
  • 인증 상태나 헤더 정보에 따라 분기해야 할 때
  • 보안 검사나 로깅이 필요한 웹 트래픽 처리 시

 

구분  L4 로드 밸런싱  L7 로드 밸런싱
기준 계층 전송 계층 (TCP/UDP) 애플리케이션 계층 (HTTP/HTTPS 등)
분산 기준 IP 주소, 포트, 프로토콜 URL, 쿠키, 헤더, 본문, 인증 정보 등
분석 정보 패킷 헤더만 확인 요청 내용까지 분석
분기 조건 설정 불가능 (정적인 방식) 가능 (동적 라우팅, 조건 분기 등)
성능 빠르고 가벼움 상대적으로 느리지만 정밀함
사용 예시 게임 서버, 내부 TCP 서비스 웹 서버, API Gateway, 마이크로서비스 라우팅

 

출처

https://twojun-space.tistory.com/158

https://blog.naver.com/gabianow/223750671969

728x90
반응형
LIST