트래픽이 몰리는 순간, 시스템은 어떻게 안정성을 유지할까?
백엔드 아키텍처에서 핵심이 되는 개념인 프록시, 로드 밸런서, 스케일링 전략을
『이것이 취업을 위한 컴퓨터 과학이다』 5-7절 내용을 바탕으로 정리합니다.
1. 오리진 서버와 중간 서버: 포워드 프록시와 리버스 프록시
프록시는 말 그대로 중간에서 통신을 중개하는 서버입니다.
하지만 ‘누구를 대신해서’ 요청을 보낼 것인지에 따라 두 가지 종류로 나뉩니다.
✅ 포워드 프록시 (Forward Proxy)
- 클라이언트 입장에서 중간 서버
- 내부망 사용자 → 외부 서버 요청 시 사용
- 접근 제어, 캐싱, 보안 우회(우회 접속) 등에 활용
ex) 회사 내부에서 외부 웹사이트 접근 시, 포워드 프록시 서버를 거쳐야 하는 경우
Q: 프록시 서버와 VPN의 차이는 무엇인가요?
→ 둘 다 중계 서버 개념이지만, VPN은 전체 트래픽을 암호화하고 IP 자체를 숨겨 '네트워크를 확장하는' 개념입니다. 프록시는 애플리케이션 계층 수준에서 중계합니다.
✅ 리버스 프록시 (Reverse Proxy)
- 서버 입장에서 중간 서버
- 외부 사용자 → 여러 내부 서버 중 하나로 연결
- 로드 밸런싱, SSL 처리, 보안 필터링 등에 사용
ex) Nginx를 리버스 프록시로 설정하여 여러 웹 서버 앞단에서 트래픽 분산
Q: 리버스 프록시와 로드 밸런서는 어떻게 다른가요?
→ 리버스 프록시는 외부 요청을 받아 내부로 전달하는 역할, 로드 밸런서는 내부 서버 간 '트래픽 분산'이 핵심입니다. 둘이 함께 쓰이기도 합니다.
2. 고가용성: 로드 밸런싱과 스케일링
✅ 가용성(Availability)
- 서비스가 정상적으로 동작하는 시간의 비율
- 업타임(Uptime): 서비스가 켜져 있는 시간
- 다운타임(Downtime): 서비스가 꺼져 있는 시간
파이브 나인스(99.999%)
- 연간 약 5.26분의 다운타임만 허용하는 매우 높은 신뢰성 기준
- 주요 금융 시스템, 글로벌 IT 기업에서 추구
Q: 실제로 파이브 나인스를 달성하기 위해선 어떻게 해야 하나요?
→ 이중화된 전원, 분산 데이터 센터, 장애 조기 감지 시스템 등 매우 고도화된 인프라와 운영이 필요합니다.
✅ 헬스 체크와 하트비트
- 헬스 체크 (Health Check):
로드 밸런서가 서버의 상태를 주기적으로 확인 → 문제가 있으면 요청 대상에서 제외 - 하트비트 (Heartbeat):
서버 간 정기적으로 신호를 주고받으며 살아있는지 확인
→ 클러스터 환경에서 유용
Q: 헬스 체크 실패 시, 로드 밸런서는 즉시 해당 서버를 제거하나요?
→ 대부분의 로드 밸런서는 여러 번의 실패 후에 제거합니다. false positive를 방지하기 위해 grace time이나 실패 횟수 기준이 설정됩니다.
3. 로드 밸런싱
✅ 정의 및 필요성
여러 서버로 들어오는 요청을 균등하게 분산 처리하여 서버 과부하를 방지하는 기술
Q: 로드 밸런서는 트래픽 외에도 SSL 처리나 인증 기능을 맡기도 하나요?
→ 예, 특히 리버스 프록시와 결합된 경우 TLS 종료(SSL termination), 인증 헤더 삽입 등 기능도 수행합니다.
✅ 로드 밸런싱 알고리즘
알고리즘 | 설명 |
---|---|
라운드 로빈 | 순차적으로 요청 분배 |
가중 라운드 로빈 | 서버 성능에 따라 가중치 부여 |
최소 연결(Least Connection) | 현재 연결 수가 가장 적은 서버 선택 |
IP 해시 | 클라이언트 IP 기반으로 고정 서버 연결 |
Q: 라운드 로빈과 최소 연결 알고리즘은 언제 어떤 기준으로 선택하나요?
→ 요청 처리 시간이 짧고 균일하다면 라운드 로빈, 그렇지 않고 요청에 따라 부담이 다르다면 최소 연결이 더 효과적입니다.
✅ 스케일링: 스케일 업, 스케일 아웃, 오토스케일링
🔹 스케일 업 (Scale-Up)
- 더 좋은 성능의 장비로 교체 (수직 확장)
🔹 스케일 아웃 (Scale-Out)
- 서버 수를 늘림 (수평 확장)
🔸 오토스케일링 (Auto Scaling)
트래픽 상황에 따라 서버를 자동으로 늘리거나 줄이는 기능
Q: 오토스케일링이 발생하는 기준은 어떻게 설정하나요?
→ CPU 사용률 80% 초과, 메모리 임계치, 네트워크 트래픽 등을 기준으로 설정 가능하며, 클라우드 환경에서 정책 기반으로 관리됩니다.
4. Nginx로 알아보는 로드 밸런싱 실습
Nginx는 리버스 프록시 + 웹 서버 + 로드 밸런서 역할을 모두 할 수 있는 가볍고 강력한 오픈소스 도구입니다.
특히 로드 밸런싱 기능은 설정만으로도 쉽게 구현할 수 있어, 학습용이나 실무 프로토타이핑에 널리 사용됩니다.
http {
upstream backend {
server backend1.example.com;
server backend2.example.com;
}
server {
listen 80;
location / {
proxy_pass http://backend;
}
}
}
• upstream 블록: 실제 요청을 처리할 백엔드 서버들을 정의
• proxy_pass: 클라이언트 요청을 backend 그룹 중 하나로 자동 전달
Q: upstream 블록에서 서버마다 weight를 설정할 수 있나요?
→ 예, server backend1.example.com weight=3;
형식으로 가중치를 부여할 수 있습니다. 처리 능력이 더 높은 서버에 더 많은 요청을 할당하기 위해 사용합니다.
'Network' 카테고리의 다른 글
[3편] 브라우저는 어떻게 나를 기억할까? - HTTP 활용 (2) | 2025.03.26 |
---|---|
[2편] HTTP 메서드부터 상태 코드, 주요 헤더까지 (0) | 2025.03.26 |
[1편] 브라우저는 어떻게 서버를 찾을까? – DNS와 HTTP 메시지 구조까지 (0) | 2025.03.26 |
URL 입력부터 웹 페이지 렌더링까지 동작 (현대 브라우저 기준) (1) | 2025.03.05 |