[CS, Network] 프록시(proxy), 포워드 프록시(forward proxy), 리버스 프록시(reverse proxy)

3

StudyCS

목록 보기
1/1
post-thumbnail

안녕하세요. 오늘은 네트워크의 프록시와 포워드 프록시, 리버스 프록시에 대해 알아보고자 합니다.


1. 프록시(Proxy)란?

proxy의 뜻은 "대리", "대신"입니다.
따라서, 프록시 서버란 서버-클라이언트 간 통신을 할 때, 서버와 클라이언트가 직접 통신하지 않고 중간에서 대리로 통신하는것을 말합니다.
즉, 클라이언트 - 서버 사이의 중계 서버라고 생각하면 됩니다.

프록시 서버가 서버와 클라이언트의 중간에 위치함으로써, 클라이언트는 프록시 서버를 "서버"라고 인식하고, 서버는 프록시 서버를 "클라이언트" 라고 인식하게 됩니다.
프록시 서버를 둠으로써 캐시, 보안, 트래픽 분산 등 여러 장점을 가질 수 있습니다.

2. Forward Proxy

우리가 흔히 말하는 "프록시"는 Forward Proxy를 말합니다. 그림과 같이, 클라이언트와 인터넷 사이에 위치하여 클라이언트 단에서 일어나는 흐름을 대신 처리하는 것을 볼 수 있습니다.

✔ 장점 1: 캐싱

Forward Proxy는 클라이언트가 요청하고 서버에게 응답받은 내용을 캐싱합니다. 클라이언트가 자주 사용하는 리소스를 Forward Proxy서버에 따로 캐싱해두면, 서버단까지 가지 않고도 리소스를 쉽고 빠르게 가져올 수 있습니다. 이는 전송 시간을 절약해줍니다. 또한 불필요한 외부 전송을 하지 않아도 되기 때문에 외부 요청 자체가 감소되고, 네트워크 병목 현상을 방지해줍니다.

✔ 장점 2: 익명성

Forward Proxy를 이용하면 클라이언트가 보낸 요청을 감출 수 있습니다. 클라이언트가 서버에 직접 요청을 할 때는 요청한 클라이언트의 여러 정보(OS정보, IP정보 등)들을 서버가 직접 받을 수 있습니다. 하지만 Forward Proxy를 사이에 놓게 되면, 클라이언트가 요청한 것을 Forward Proxy가 요청한 것처럼 위장(?)할 수 있습니다. 따라서 서버는 해당 요청이 누구에게서 왔는지 알지 못하게 됩니다. (Server가 받은 요청 IP = Proxy IP)

3. Reverse Proxy

아래의 그림처럼 Reverse Proxy는 인터넷과 내부 서버 사이에 위치하고 있습니다.

✔ 장점 1: 캐싱

Forward Proxy와 동일하게, Reverse Proxy에서도 캐싱을 이용할 수 있습니다.

✔ 장점 2: 보안

Reverse Proxy에서는 서버 정보를 클라이언트에게 숨길 수 있습니다. Reverse Proxy를 이용하면, 클라이언트가 요청할 때 서버에 직접 요청하는 게 아니라, Reverse Proxy서버에 요청을 하게 됩니다. 실제 서버에게 요청하는 것은 클라이언트가 아닌, Reverse Proxy입니다. 따라서 클라이언트에게 실제 서버 IP를 노출하지 않아도 됩니다.

✔ 장점 3: 로드밸런싱

Load Balancing = 부하분산

Load Balancing이란 부하분산, 즉 해야할 작업을 나누어 서버의 부하를 분산시키는 것을 말합니다. 많은 요청이 들어왔을 때, 이 요청들을 한 서버에서 처리하는 것이 아닌, 여러 서버에 나눠줄 수 있습니다.
로드밸런싱 자세히 알아보기

Load Balancing을 쓰는 이유

사용자가 늘어남에 따라 서버에 부하가 생길 경우, 1) 스케일 업(서버의 하드웨어 성능(메모리⬆, CPU⬆ 등) 업그레이드) 2) 스케일 아웃(여러 대의 서버가 일을 함께 하도록) 두 가지 방식으로 이를 해결할 수 있습니다.
스케일 업에는 한계가 있습니다. 비용이 많이 들고, 성능 확장에 한계가 있습니다.
이와 달리, 로드밸런싱을 이용한 스케일 아웃은 수평 확장이며, 지속적 확장이 가능합니다.

Load Balancing의 종류 - L2, L3, L4, L7

  • L4: Transport(IP, Port) Level에서 로드 밸런싱 수행
    - ex) http://https://velog.io/@fantastik 으로 접근 시 서버 A, 서버 B로 로드밸런싱
  • L7: Appplication Level에서 로드 밸런싱 수행
    - ex) http://https://velog.io/@fantastik 으로 접근 시 뒤에 무엇을 붙이느냐 (/search, /category 등..)에 따라 로드밸런싱

[참고한 곳]

전체적인 개념1
전체적인 개념2
전체적인 개념3
왜 리버스 프록시를 도입해야 하는가

0개의 댓글