Proxy Server
프록시 서버는 서버와 클라이언트 사이에 중계자로, 클라이언트를 대신해서 서버에 접근하여 대리로 통신을 수행합니다.
주로 보안을 위해 사용됩니다.
수행 기능
캐시 기능
- 프록시 서버 중 일부는 프록시 서버에 요청된 내용들을 캐시를 이용하여 저장해 둡니다. 이렇게 캐시를 해 두고 난 후에, 캐시 안에 있는 정보를 요구하는 요청에 대해서는 원격 서버에 접속하여 데이터를 가져올 필요가 없게 됨으로써 전송 시간을 절약할 수 있게 됨과 동시에 불필요하게 외부와의 연결을 하지 않아도 된다는 장점을 갖게 됩니다.
로드밸런싱 기능
또한 외부와의 트래픽을 줄이게 됨으로써 네트워크 병목 현상을 방지하는 효과도 얻을 수 있게 됩니다.
필터링 기능
프록시는 요청과 응답을 필터링합니다.
예를 들어 회사 내부망에서 외부로 요청(maven, gradle 라이브러리 다운로드 등)을 신뢰할만한 요청인지 확인해서 회사 내부정책에서 인정한 인가한 서버만 접속가능하도록 하는 등의 기능을 수행합니다.
용도에 따른 Proxy server 종류
Caching Proxy Server
- 이전 클라이언트의 요청 내용과 응답 컨텐츠를 저장해 두었다가 동일한 요청이 들어오면 저장된 컨텐츠를 전송합니다. 이 방법을 이용하면 높은 트래픽에 대한 대응이 가능합니다. 비용 절감 효과도 있을 수 있기 때문에 Caching Proxy를 자주 사용합니다.
Web Proxy
- 웹 트래픽에 초점이 맞춰진 Proxy 서버입니다. 가장 일반적인 형태를 Web Cache입니다. 어떤 프록시 서버는 이기종 간의 컨텐츠를 변환하는 일을 하기도 합니다.
Forward Proxy
- 일반적으로 사용하는 프록시 방식입니다. 프록시 서버는 클라이언트와 애플리케이션 서버 사이에 위치하여 클라이언트가 타겟인 서버에 애플리케이션 서비스를 요청할 때, 프록시 서버로 요청을 보내게 됩니다. 프록시서버는 그 사이에서 중계자 역할을 하게 됩니다.
Reverse Proxy
- 서버를 위한 Proxy 서버입니다. 기본적인 구성은 Forward Proxy와 동일하지만, 클라이언트는 Proxy Server 뒤에 있는 타겟서버의 URL이 아닌 Proxy Server의 URL로 요청합니다. 이를 통해 애플리케이션 서버는 외부로부터 감춰지는 효과를 보게 됩니다.
Gateway
- 다른 네트워크로 들어가는 입구 역할
- 서로 다른 네트워크 상의 통신 프로토콜을 적절히 변환해줍니다.
- 게이트웨이를 지날 때마다 트래픽(traffic)도 증가하기 때문에 속도가 느려질 수 있습니다.
예를 들자면 해외로 나가기 위해서 꼭 통과해야하는 공항 게이트웨이와 같은 개념입니다.
Proxy vs Gateway 비교
프록시 서버와 게이트웨이 모두 클라이언트(혹은 서버)와 서버끼리 통신 사이에 중개자로 동작하는 서비스입니다. 하지만 용도가 조금 다릅니다.
-
게이트웨이는 프록시와 달리, 유해 사이트의 차단, 익명성 보장 등의 제어 기능이 없습니다.
-
그리고 주로 HTTP 트래픽을 다른 프로토콜로 변환하기 위해 사용합니다.
그래서 서로 다른 프로토콜을 사용하는 네트워크 간의 통신을 가능하게 합니다.
위의 그림에서도 프록시는 프로토콜이 HTTP 로 같은 반면, 게이트웨이는 HTTP POP 프로토콜을 변환하는 것을 알 수 있습니다.