0. 로드밸런서(Load Balancer)?

: 서버, 네트워크, 애플리케이션에 들어오는 트래픽을 여러 대의 서버나 리소스에 고르게 분산시켜주는 장치 또는 소프트웨어
→사용자의 요청(트래픽)을 여러 대의 서버에 골고루 나눠주는 교통정리 신호등 같은 역할
but 단순한 트래픽 분산기가 아닌 확장서 / 안정성 / 성능 최적화 / 보안까지 책임지는 핵심 네트워크 인프라 구성요소
등장 배경
→ 웹 서비스가 대규모로 성장하면서 등장한 필수 인프라
- 1990년대 : 단일 서버 → 멀티 서버의 필요성
초창기 웹은 한 서버에서 모든 요청 처리
인터넷 사용자 증가 → 단일 서버 한계
- 1990년대 후반: 하드웨어 로드밸런서 등장
F5, Cisco 등 네트워크 장비 업체가 로드밸런싱 하드웨어 제공
주로 L4 수준 분산 분산 처리 (TCP / UDP 기반)
- 2000년대: L7 로드밸런싱 필요성 증가
동적 웹 애플리케이션, 다양한 API 등장
단순한 연결 분산을 넘어 URL, 쿠키, 세션 기반 라우팅 필요
→ 소프트웨어 기반 로드 밸런서(HAProxy, Nginx) 확산
- 2010년 이후: 클라우드 & 마이크로서비스 시대
클라우드 환경(AWS ELB, GCP LB)에서 관리형 로드밸런서 제공
쿠버네티스, 서비스 메쉬(Istio, Linkerd) 등장으로 로드밸런싱이 인프라 핵심 요소로 자리잡음
구현 환경 & 사용
| 환경 | 특징 |
|---|
| 웹(온프레미스) | 서버 앞에 설치, Nginx/HAProxy/F5 사용 |
| 클라우드 | 클라우드 매니지드 LB(ALB/NLB 등), Auto Scaling 연계 |
| 글로벌 | 리전 간 트래픽 분산, DNS 기반 또는 Anycast 활용 |
- 웹 서비스:
대규모 웹 애플리케이션(예: 네이버, 구글, 넷플릭스)에서 사용자 요청을 여러 서버로 분산
- 데이터베이스:
읽기 전용 쿼리를 여러 replica DB로 분산
- 마이크로서비스 아키텍처:
서비스 간 호출을 분산하고, 장애를 최소화
- 클라우드 인프라:
AWS ELB, GCP Load Balancing, Azure Load Balancer 같은 매니지드 서비스로 기본 제공
주요 역할 : 왜 중요한가?
| 구분(구축 환경) | 웹(Web, 온프레미스) | 클라우드(Cloud) | 글로벌(Global) |
|---|
| 구축 위치 | 자체 서버나 IDC 내부 | VPC 안의 서브넷에 배치됨 | |
퍼블릭 LB는 인터넷에 연결된 서브넷
프라이빗 LB는 내부 서브넷에 연결 | 전 세계 여러 리전/데이터센터 |
| 기술 계층 | 주로 L4/L7 | L4/L7 + 매니지드 서비스 | DNS 기반, Anycast, GSLB |
| 스케일링 방식 | 수평 확장(Scale-out), 세션 스티키(Sticky Session) | Auto Scaling Group, Health Check | 지역 간 트래픽 우회, 리전 단위 스케일링 |
| 운영 관리 | 직접 설정 및 유지보수 필요 | 클라우드 벤더가 관리 | DNS 정책/라우팅 규칙 관리 |
| 장점 | 세밀한 제어, 자체 보안 정책 적용 | 자동화, 고가용성, 빠른 확장 | 전 세계 사용자에게 낮은 레이턴시, 글로벌 장애 대응 |
| 한계 | 확장성 한계(하드웨어 의존성)
, 비용(장비) 부담 | 벤더 종속성, 비용 증가 가능 | 구축/운영 복잡, 비용 매우 높음 |
| 대표 사례 | 기업 내부 웹 서비스, 전자상거래 사이트 | SaaS, 마이크로서비스 아키텍처, 모바일 앱 백엔드 | 글로벌 스트리밍, 게임 서비스, 멀티 리전 웹앱 |
| 대표 기술/제품 | Nginx, HAProxy, F5, LVS | AWS ELB/ALB/NLB, GCP LB, Azure LB, Kubernetes Ingress | Cloudflare, Akamai GSLB, AWS Route 53, NS1 |
- 트래픽 분산 → 성능 향상 (Scalability)
- 하나의 서버가 처리할 수 있는 요청 수에는 한계가 있음
- 모든 요청이 한 서버로 몰리지 않고, 여러 서버에 요청을 분산시켜 성능을 높임
- 장애 극복 (Fault Tolerance) → 가용성 (High Availability)
- 헬스 체크 (Health Check):
각 서버의 상태를 주기적으로 확인, 장애가 발생한 서버는 트래픽 대상에서 제외함
- 특정 서버가 다운되더라도 다른 서버로 트래픽을 보내어 서비스를 멈추지 않게 함
- 성능 최적화 (Performance Optimization)
- 응답 속도가 빠른 서버에 더 많은 요청을 보내거나, 현재 연결이 적은 서버를 우선 선택
- 보안 강화
- 서버의 실제 IP를 감추거나 SSL 인증서 처리를 로드밸런서가 대신 수행
- 유연성
- 특정 요청 패턴(이미지, 동영상, API…등)을 분리하여 적절한 서버로 보내 효율적인 아키택처 설계가 가능함
1-1. L4 로드 밸런서 & L7 로드 밸런서
- 대규모 서비스에서는 L4 + L7 혼합을 많이 사용
- L4로 1차 분산 (대규모 트래픽 처리)
- L7로 2차 라우팅 (세밀한 서비스 제어)
| 계층 | 구현 방식 | 특징 |
|---|
| L4 (전송 계층) | TCP/UDP 패킷 단위 라우팅 | - IP/포트 기반 요청 분산- 상태 정보 최소- 고성능, 빠름 |
| L7 (애플리케이션 계층) | HTTP/HTTPS, gRPC 요청 내용 분석 | - URL, 쿠키, 헤더 기반 분산 가능- 세션 유지, SSL 종료 가능- 부하 조절 정책 다양 |
(1) L4 로드밸런서 (Transport Layer, 전송 계층)
[동작 원리]
- IP 주소와 포트 번호 기반으로 분산
- TCP/UDP 연결 기반으로 분산
[장점]
- OSI 계층이 낮은 수준에서 동작하므로 처리 오버헤드가 작고 빠름
- 대규모 요청에 적합 (수십만 ~ 수백만)
[적합한 서비스 예시]
- 게임 서버 (UDP 기반, 많은 세션)
- 동영상 스트리밍 (http / https 단순 분산)
- 실시간 채팅 / 메시징 서비스 (TCP 연결 기반)
- 단순 웹 서버 확장 (정적 파일 서비스)
(2) L7 로드밸런서 (Application Layer, 응용 계층)
[동작 원리]
- HTTP, HTTPS등 애플리케이션 계층의 데이터를 기반으로 분산
- 요청 URL, 헤더, 쿠키 등의 조건에 따라 트래픽 라우팅 가능
[장점]
- 지능적 라우팅: 세밀한 분기 처리 가능
- SSL 종료 (HTTPS 복호화)처리 가능
- API Gateway 처럼 특정 요청을 특정 서비스로 연결 가능
[단점]
- 마이크로서비스 아키텍처 (URL별로 다른 서비스 호출)
- REST API 서버 (
/user, /order, /payment 등을 다른 서버에 분산)
- 멀티 테넌트 서비스 (쿠키/도메인 기반으로 서버 분리)
1-2. SSL 종료 (TLS Termination)?
L7 로드밸런서는 애플리케이션 계층의 데이터를 이해하고 다룰 수 있기 때문에, HTTPS 요청의 암호화를 풀어서 처리하는 기능(TLS Termination)을 자주 담당
SSL(Secure Sockets Layer):
인터넷에서 데이터를 암호화해서 안전하게 주고받기 위한 보안 프로토콜
- 현재는 SSL의 후속인 TLS(Transport Layer Security)가 주로 쓰임
(SSL이라는 용어가 관습적으로 계속 사용됨)
- 핵심 기능:
- 암호화(Encryption): 데이터가 전송 중 노출되지 않도록 보호
- 인증(Authentication): 서버(또는 클라이언트)의 신원을 인증 (예: 인증서)
- 무결성(Integrity): 데이터가 중간에 변조되지 않았음을 보장
👉 HTTPS = HTTP + SSL/TLS
SSL & 로드밸런싱
로드밸런서는 클라이언트와 서버 사이에서 트래픽을 중계
SSL이 적용된 트래픽(HTTPS)은 요청이 암호화되어 있어 단순 분산이 어려워
URL, 헤더, 쿠키 같은 L7 정보를 확인할 수 없음
→ 로드밸런싱에서 SSL 처리를 어떻게 하느냐?가 중요
⇒ 둘의 관계 : 암호화된 트래픽을 분산할 때, SSL을 LB에서 처리할지 서버에서 처리할지 결정
| 방식 | 설명 | 특징 |
|---|
| SSL Termination (종료) | LB에서 SSL을 해제(복호화)하고, 내부 서버에는 평문 HTTP로 전달 | LB에서 CPU 부담 있음, 내부 통신은 암호화되지 않음 |
| SSL Passthrough (투과) | LB가 암호화된 트래픽을 그대로 서버로 전달, 서버에서 SSL 해제 | LB 부담 적음, 서버가 SSL 인증서 관리해야 함 |
| SSL Offloading | LB에서 SSL 해제 후, 추가 기능(캐싱, 압축, 라우팅 등)을 적용한 뒤 서버로 전달 | Termination의 확장판, 고급 기능 활용 가능 |
TLS Termination
: 로드 밸런서나 프록시 서버가 클라이언트와 서버 사이의 TLS 암호화 연결을 중간에서 해제(복호화)하는 것
- 클라이언트 → 로드밸런서 구간: HTTPS (암호화)
- 로드밸런서 → 백엔드 서버 구간: HTTP(평문)
[장점]
- 서버 부하 감소
https 암복호화 연산은 cpu 리소스를 많이 사용하는데,
로드밸런서가 대신 처리하면 애플리케이션 서버는 비즈니스 로직에만 집중할 수 있음
- 중앙 집중적 인증서 관리
각 서버마다 SSL 인증서를 설치, 갱신할 필요 없음
로드밸런서에서만 인증서를 관리하면 됨 → 운영 효율성 증대
- 트래픽 제어 가능
복호화된 상태에서 HTTP 헤더, URL, 쿠키를 분석할 수 있어 정교한 L7 라우팅 가능
WAF(Web Application Firewall)와 같은 보안 정책 적용도 용이
- 모니터링 / 로깅 용이
암호화가 풀린 요청을 확인할 수 있으므로, 접근 로그 / 분석이 더 쉽고 상세해짐
[단점]
- 로드밸런서 부하 증가
암호화 / 복호화 연산이 모두 로드밸런서에서 발생
대규모 트래픽 환경에서는 성능 한계가 문제될 수 있음
- 단일 장애 지점 (Single Point of Failure)
인증서와 암호화 처리를 모두 로드밸런서가 담당하기 때문에, 장애 시 전체 서비스에 영향
- 복잡성 증가
보안을 강화하려면 로드밸런서 → 서버 구간도 HTTPS (Re-encryption) 설정을 추가해야 함
- 보안 약화 가능성
로드밸런서 이후 구간(내부망)에서는 평문(HTTP)으로 전달되는 경우가 많음
내부 네트워크가 안전하지 않다면 데이터 노출 위험있음
⇒ 상황에 따라 SSL 종료만 쓰거나 SSL+ 재암호화 혼합해서 사용
[cf.] 로드밸런싱 알고리즘
| 알고리즘 | 설명 | 활용 예 |
|---|
| Round Robin | 순서대로 서버 선택 | 서버 부하 균일할 때 |
| Least Connections | 연결 수 가장 적은 서버 선택 | 세션 길이가 다양할 때 |
| IP Hash / Sticky Session | 클라이언트 IP 또는 세션 기반 | |
| 특정 IP의 요청은 항상 같은 서버로 보냄 | 세션 상태 유지 필요할 때 | |
| Weighted Round Robin / Least Connections | 성능이 좋은 서버에 더 많은 트래픽 할당 | 서버 성능이 균일하지 않을 때 |
1-3. Sticky Session
: 같은 사용자의 요청을 항상 같은 서버로 보내도록 고정하는 방법
| 항목 | 설명 |
|---|
| 문제 | 로드밸런서가 요청을 분산시킬 때, 사용자 세션이 서버 간에 공유되지 않으면 로그인 상태 등이 유지되지 않음 |
| 해결책 | 스티키 세션을 적용하면 같은 사용자의 요청을 동일 서버로 보내므로 세션 유지 가능 |
| 로드밸런서 역할 | 클라이언트 식별자(쿠키, IP 등)를 바탕으로 요청을 같은 서버로 라우팅 |
| 단점 | 특정 서버에 부하 집중 가능, 장애 시 세션 손실 위험 |
- 일반적인 로드밸런서
요청이 들어오면 라운드로빈, IP 해시 등으로 서버를 선택
→ 같은 사용자의 연속 요청도 다른 서버로 갈 수 있음
- 문제점
서버가 세션 상태를 메모리에 저장할 때, 다른 서버로 가면 세션 정보가 없어짐
→ 로그인, 장바구니 등 문제 발생
- Sticky session 적용
LB가 특정 사용자를 특정 서버에 계속 연결함으로써 세션 상태 문제 해결
[구현 방식]
| 방식 | 설명 |
|---|
| 쿠키 기반(Cookie-based) | LB가 사용자 브라우저에 쿠키를 심고, 쿠키 값으로 요청을 특정 서버로 라우팅 |
| IP 해시 기반(IP Hash) | 사용자의 IP를 해시 계산 → 항상 같은 서버로 연결 |
| 세션 토큰 기반 | 애플리케이션이 발급한 세션 토큰으로 LB에서 라우팅 |
2. [클라우드]
1. ALB vs NLB (L7 vs L4)
| 구분 | L4 (전송 계층) | L7 (애플리케이션 계층) |
|---|
| 특징 | TCP/UDP 기반, 빠르고 고성능 | HTTP/HTTPS 기반, URL/Host/Cookie 라우팅 가능 |
| 장점 | 저지연, 수백만 TPS 처리 가능 | 세밀한 트래픽 제어, SSL/TLS 종료, Sticky Session 가능 |
| AWS 예시 | NLB | ALB |
| 활용 사례 | 게임 서버, 금융 트랜잭션, IoT | 웹 애플리케이션, REST API, 마이크로서비스 |
2. 글로벌 트래픽 관리
Global LB vs DNS 기반 트래픽 분산
| 구분 | Global LB | DNS 기반 분산 (Route 53, Cloud DNS 등) |
|---|
| 방식 | Anycast IP 또는 글로벌 인프라 기반 라우팅 | DNS 응답을 다르게 반환 (Geo, Latency, Weighted) |
| 특징 | 전 세계 사용자에게 하나의 IP 제공, 지연 최소화 | 클라이언트 DNS 캐시 영향 → 빠른 Failover 어려움 |
| 장점 | 빠른 장애 감지 및 트래픽 재라우팅, 실시간 글로벌 최적화 | 단순하고 저비용, DNS 기반 정책 다양 |
| 한계 | 서비스 비용이 높음 | 캐싱 문제로 즉각적 트래픽 전환이 어렵다 |
3. SSL/TLS Termination & ACM
- SSL/TLS Termination: 로드 밸런서에서 암호화 트래픽 해제 → 서버는 평문 HTTP 처리
- ACM (AWS Certificate Manager): SSL/TLS 인증서를 자동 발급·갱신 관리
- 장점:
- 서버 부하 감소 (암호화 연산 LB에서 처리)
- 인증서 관리 단순화 (중앙 집중 관리)
- L7 기능 활용 가능 (헤더 기반 라우팅, WAF 연계)
4. Auto Scaling과 LB 연동 방식
- 로드 밸런서는 Auto Scaling Group(ASG) 과 자동 연계됨
- 프로세스:
- 트래픽 증가 → Auto Scaling이 새 인스턴스 생성
- LB Health Check를 통과하면 Target Group에 자동 등록
- 트래픽 감소 → 인스턴스 자동 제거 & LB 대상에서 해제
- 효과: 무중단 서비스 확장/축소 가능
5. 멀티 리전/하이브리드 아키텍처에서 LB 설계
- 멀티 리전: 각 리전에 LB 배치 → 글로벌 LB 또는 DNS 기반으로 트래픽 분산
- 장점: 장애 시 DR(Disaster Recovery) 가능, 사용자 지연 최소화
- 고려: 데이터 동기화, 비용 증가
- 하이브리드: 온프레미스 + 클라우드 LB 혼합
- 전용 회선(VPN/Direct Connect)으로 연결
- 클라우드 LB + 온프레미스 LB 이중 구성
6. CDN(Content Delivery Network)과 글로벌 트래픽 관리
- CDN: 전 세계 PoP(Point of Presence)에 콘텐츠 캐싱 → 사용자에게 가장 가까운 서버에서 콘텐츠 제공
- LB vs CDN 차이:
- LB: 애플리케이션 서버 트래픽 분산
- CDN: 정적/캐싱 가능한 콘텐츠 최적화 제공
- 함께 사용하는 구조:
- 클라이언트 → CDN (캐싱/Edge 보안) → LB (동적 요청 처리) → 서버
- 효과:
- 응답 속도 개선
- 서버 부하 감소
- 글로벌 트래픽 최적화