[네트워크]프록시(Proxy)
프록시(Proxy)란 무엇일까?
- 사전적으로 대리, 대리권을 의미한다.
- 원 서버를 대리하여 통신하며 캐시, 로드밸런서, 보안 등 중계 역할을 하는 서버를 말한다.
- 해당 그림처럼 프록시 서버가 중간에 위치하기에, 클라이언트는 프록시 서버를 "서버"라 인식하고, 서버는 프록시 서버를 "클라이언트"로 인식한다.
왜 프록시를 사용할까?
앞서 캐시, 로드밸런서, 보안 등 중계 역할을 한다고 했다. HTTP의 Connectionless, Stateless 성질로 한계점이 있기에 그것을 해결하기 위해 프록시가 사용되는 것은 아닐까?
캐시, 로드밸런서, 보안 등 각각 알아보고 왜 프록시를 사용하는지 고민해보자.
프록시 서버의 10가지 사용 예시
위 공식문서에 프록시 서버의 예시에 대해 잘 나와있다. 이것을 읽기 쉽게 정리해보고자 한다.
Privacy
웹 브라우저나 네트워크는 보안을 강화하기 위해 프록시 서버를 사용한다.
예를 들어 웹사이트에 요청할 때, 프록시 서버를 거친다면 클라이언트의 IP를 웹사이트가 알지못하게 할 수 있다.
Encryption(암호화)
암호화를 제공한다.
Compression(압축)
프록시 서버는 서버로부터 받은 응답 요청을 압축하여, 네트워크 대역폭을 줄이고, 성능을 향상시킨다.
Security
프록시 서버는 대부분의 경우, 정보보안에 위협이 되는 것들로부터 웹 서버를 보호하기 위해 프론트 엔드 차원에서 보안을 수행한다.
예를 들어, 방화벽(firewall)으로 보호된 환경에서 프록시 서버와 웹 서버의 통신이 이루어진다.
Load Balancer
서비스 가용성(availability)을 높이기 위해 하나의 서비스를 보통 두 대 이상의 서버로 구성하는데, 각 서버 IP주소가 다르므로 사용자는 서비스를 호출할 때 어떤 IP로 서비스를 요청할지 결정해야 한다.
이때 프록시 서버를 로드밸런서로 활용하여, 서비스를 위한 가상 IP를 하나 제공하고, 사용자는 각 서버의 개별 IP 주소가 아닌 동일한 가상 IP주소를 통해 각 서버로 접근한다.
또한 로드밸런서는 각 서버의 서비스 상태를 체크해 서비스가 가능한 서버로만 사용자의 요청을 분산하여 서버 장애로 인한 문제에 잘 대처할 수 있다.
사용자별로 다수의 서버에 요청을 분산시켜 부하를 줄이는 역할도 한다.
Cache
캐시는 데이터나 값을 미리 복사해 놓는 임시 장소를 가리킨다.
웹 브라우저는 서버로부터 html, css, js 등뿐만 아니라 이미지, 동영상 등 높은 용량의 파일도 받아온다.
만약 같은 영상을 계속 요청을 한다면, 네트워크 사용량이 증가하고 브라우저 로딩 속도가 느려져 결국 사용자 경험이 늦어질 것이다.
이를 해결하기 위해 브라우저 캐시에 해당 영상을 임시 저장해놓고, 웹 브라우저가 같은 영상을 요청할 시 캐시를 우선 조회하고 해당 데이터를 가져온다.
결국 네트워크 사용량이 감소함과 동시에 빠른 사용자 경험을 만들어 낼 수 있다!
캐시 관련해서는 글을 하나 더 써야겠다!
Content Delivery Network(CDN)
CDN은 다른 지역에 있는 사용자들이 빠른 속도로 인터넷에 접근할 수 있도록 하는 분산되어 있는 거점 서버 체계이다.
이는 html, text, scripts, media, software, downloads, documents, videos, images와 같은 정적 미디어 콘텐츠를 빠른 속도로 전달하는 역할을 한다.
CDN은 캐시 서버가 발전된 형태로, 다양한 국가 거점에 데이터 거점을 설치하여, 사용자는 자신에게 가장 가까운 CDN을 통해 빠르게 콘텐츠에 접근할 수 있다.
Filtering
프록시를 사용하면 사용자들이 특정 웹 사이트나 서비스에 접근하지 못하도록 막을 수 있다.
이때 관련 정책(기준)을 직접 설정하여 적용할 수 있다.
예를 들어, 학교 컴퓨터에 유해사이트 접속이 불가능한 것과 마찬가지이다.
Logging
프록시로 네트워크 트래픽을 추적할 수 있다.
Performance
DNS 쿼리와 같은 네트워크 서비스의 속도를 올리기 위해 사용될 수도 있다.