Forward Proxy, Reverse Proxy, Load Balancer

Proxy는 범용적인 용어로 Spring Proxy, Proxy 패턴, Network Proxy가 존재하는데 이 포스팅에서는 Network Proxy 를 기준으로 설명합니다.

1. Proxy Server


그림1
Proxy Server란 클라이언트와 서버간의 중계 서버로, 통신을 대리 수행하는 서버 입니다.
캐시, 보안, 트래픽 분산 등 여러 장점을 가질 수 있습니다.
Proxy의 종류는 Forawrd Proxy와 Reverse Proxy가 있습니다.

2. Forward Proxy


그림2
일반적으로 Proxy라고 말하는 것은 Forward Proxy를 말합니다.
Forward Proxy는 클라이언트와 인터넷 사이에 위치하여 흐름을 대신 처리합니다.

특징1 - 캐싱

그림3

  1. 가장 왼쪽 위에 있는 클라이언트가 Forward Proxy에게 날씨를 요청합니다.
  2. Forward Proxy는 서버에게 요청을 보내고 응답을 받아 클아이언트에게 전달하고 해당 응답을 저장합니다.
  3. 중간에 있는 클라이언트가 Forward Proxy에게 날씨를 요청합니다.
  4. Forward Proxy는 서버로 요청을 보내지 않고 저장된 응답으로 바로 클라이언트에게 전달해줍니다.

따라서 다음과 같은 이점이 있습니다.

  • 전송 시간 절약
  • 불필요한 외부 전송 X
  • 외부 요청 감소 -> 네트워크 병목 현상 방지

특징2 - 익명성

그림4
모든 클라이언트의 요청을 Forward Proxy가 받아서 요청을 서버로 넘기기 때문에 서버는 받은 요청을 어떤 클라이언트가 보냈는지 알지 못합니다. 서버가 받는 요청 IP는 Forward Proxy IP입니다.


3. Reverse Proxy


그림5
Reverse Proxy는 Forward Proxy와 다르게 인터넷과 서버 사이에 존재합니다.
흐름은 Forward Proxy와 똑같습니다.

특징1 - 캐싱

Forward Proxy와 동일한 내용입니다.

특징2 - 보안

그림6
클라이언트는 Reverse Proxy를 실제 서버라고 생각하여 요청을 보내기 때문에 클라이언트에게 실제 서버의 IP가 노출되지 않습니다.

특징3 - Load Balancing

그림7
Load Balancer란 여러 대의 서버가 분산처리할 수 있도록 요청을 나눠주는 서비스 입니다.
위 그림이 공이 요청이라고 했을때 요청을 각 서버들에게 분산시켜 전달합니다.

Loader Balancer 종류 - L4

Transport Layer(IP & Port) 레벨에서 로드 밸런싱을 합니다.
예를 들어, backtony.github.io 사이트로 접근했을 때 서버 A와 서버 B로 요청을 고르게 나눠줍니다.

Loader Balancer 종류 - L7

Application Layer(User Request) 레벨에서 로드 밸런싱을 합니다.(HTTPS/HTTP/FTP)
예를 들어, backtony.github.io로 접근 시 /spring , / mysql 과 같이 뒤에 어떤 url을 추가적으로 입력하는지, 쿼리파라미터에 대해서 어떤 서버로 로드밸런싱할지 결정하는 것이 L7입니다.

4. 정리


  • Proxy
    • 클라이언트와 서버간의 중계 서버로, 통신을 대리 수행하는 서버
  • Forward Proxy
    • 클라이언트와 인터넷 사이에 위치하는 프록시
    • 일반적으로 프록시라고 불리는 것
    • 캐싱, 익명성
  • Reverse Proxy
    • 인터넷과 서버 사이에 위치하는 프록시
    • 캐싱, 보안, 로드밸런싱
  • Load Balancer
    • 여러 대의 서버가 요청을 분산 처리할 수 있도록 나눠주는 서비스





[10분 테코톡] 🐿 제이미의 Forward Proxy, Reverse Proxy, Load Balancer]


© 2021. By Backtony