Network

프록시와 스케일링: 안정적인 트래픽 처리

readyoun 2025. 3. 26. 05:35

https://www.techbuyer.com/au/blog/what-is-a-proxy-server

 

트래픽이 몰리는 순간, 시스템은 어떻게 안정성을 유지할까?

백엔드 아키텍처에서 핵심이 되는 개념인 프록시, 로드 밸런서, 스케일링 전략

『이것이 취업을 위한 컴퓨터 과학이다』 5-7절 내용을 바탕으로 정리합니다.


1. 오리진 서버와 중간 서버: 포워드 프록시와 리버스 프록시

『이것이 취업을 위한 컴퓨터 과학이다』 p.480

프록시는 말 그대로 중간에서 통신을 중개하는 서버입니다.
하지만 ‘누구를 대신해서’ 요청을 보낼 것인지에 따라 두 가지 종류로 나뉩니다.

✅ 포워드 프록시 (Forward Proxy)

『이것이 취업을 위한 컴퓨터 과학이다』 p.481

  • 클라이언트 입장에서 중간 서버
  • 내부망 사용자 → 외부 서버 요청 시 사용
  • 접근 제어, 캐싱, 보안 우회(우회 접속) 등에 활용

ex) 회사 내부에서 외부 웹사이트 접근 시, 포워드 프록시 서버를 거쳐야 하는 경우

 

Q: 프록시 서버와 VPN의 차이는 무엇인가요?
→ 둘 다 중계 서버 개념이지만, VPN은 전체 트래픽을 암호화하고 IP 자체를 숨겨 '네트워크를 확장하는' 개념입니다. 프록시는 애플리케이션 계층 수준에서 중계합니다.

✅ 리버스 프록시 (Reverse Proxy)

『이것이 취업을 위한 컴퓨터 과학이다』 p.482

  • 서버 입장에서 중간 서버
  • 외부 사용자 → 여러 내부 서버 중 하나로 연결
  • 로드 밸런싱, 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; 형식으로 가중치를 부여할 수 있습니다. 처리 능력이 더 높은 서버에 더 많은 요청을 할당하기 위해 사용합니다.