일반적으로 클라이언트의 요청을 전달하고 응답을 보내는 서버를 게이트웨이라고 합니다.
프록시는 특정 유형의 게이트웨이입니다.
1. 프록시(Proxy)란?
컴퓨터 네트워크에서 클라이언트로부터 요청을 받아 다른 서버의 자원을 중계하는 서버입니다.
클라이언트가 서버로부터 필요한 자원(파일, 연결, 웹 페이지 등)을 원본 서버에 요청하면,
프록시 서버는 그 사이에서 대신 통신을 수행합니다.
프록시 서버에는 자원들이 캐시되어 임시 저장되어 있습니다.
따라서 과거에 클라이언트가 요청했던 자원을 재요청할 때,
원본 서버에 요청할 필요 없이 프록시 서버 내의 캐싱된 정보를 제공받을 수 있습니다.
이를 통해 데이터 전송시간과 외부 트래픽을 줄이고,
원본 서버의 네트워크 병목 현상을 방지할 수 있습니다.
※ 네트워크 병목 현상:
물병의 물이 좁은 목 부분을 통해 흐를 때, 상대적으로 천천히 쏟아지는 것처럼,
시스템 전체의 성능이나 용량이 특정한 지점으로 인해 저하되는 현상을 말합니다.
네트워크 상의 한 노드로 처리할 수있는 대역폭 이상의 데이터 양이 전송되거나,
데이터가 특정 노드로 집중되는 경우 발생합니다.
(병목링크: 전체 네트워크 속도가 저하되는 현상이 일어나는 원인이 되는 지점)
또한 프록시 서버는 웹 콘텐츠 및 악성코드를 필터링할 수 있어,
클라이언트 측의 보안을 향상시킬 수 있습니다.
그리고, 익명의 사용자가 서버에 접근하는 것을 막고, 외부 침입을 방지하여 방화벽 역할을 합니다.
인터넷 이용률 통계를 수집할 수도 있습니다.
클라이언트가 자신의 웹 서핑 기록을 익명화하기 위해 익명 웹 프록시를 사용하기도 합니다.
프록시 서버는 실제 사용자의 로컬 컴퓨터에 상주할 수도 있고,
독립적인 서버로 존재할 수도 있습니다.
인터넷 상에서 클라이언트와 목적지 서버 사이, 어느 곳이든 놓여질 수 있습니다.
2. 종류
1. 포워드 프록시
포워드 프록시 서버는 클라이언트와 원격 서버 사이의 네트워크 상 어디에든 위치할 수 있습니다.
클라이언트는 원격의 목적지 서버의 주소를 기반으로 자원을 요청하고,
포워드 프록시 서버는 그 주소를 받아 목적지 서버에 연결하여 자원을 가져옵니다.
(포워드 프록시 서버는 클라이언트가 알려주기 전에 목적지 서버의 주소를 알지 못합니다)
2. 리버스 프록시
리버스 프록시 서버는 사설 네트워크 상의 서버들 바로 앞단의 프론트 엔드에 위치하여,
서버들을 제어하고 보호합니다.
클라이언트는 리버스 프록시 서버의 주소를 목적지 서버로 하여 데이터를 요청합니다.
(클라이언트에게 리버스 프록시 서버는 일반적인 보통 서버로 보이게 됩니다)
리버스 프록시 서버는 클라이언트의 요청에 따라
자신의 뒷쪽에 있는 적합한 서버에 데이터 요청을 전달하고
응답받은 데이터를 클라이언트에게 전달합니다.
리버스 프록시 서버는 자신의 뒷쪽에 있는,
실제 자원을 가지는 서버들에 대한 주소를 유지하고 있습니다.
리버스 프록시는 보안이나 암호화를 위해서 사용되기도 하고,
뒷단의 서버들에 대한 요청을 부하 분산(load balancing)하기 위해 사용되기도 합니다.
3. 오픈 프록시
모든 인터넷 사용자가 액세스 할 수 있는 프록시 서버로,
오픈 프록시 서버는 사용자가 웹브라우징을 하거나 다른 인터넷 서비스를 사용하는 동안
자신의 IP주소를 숨길 수 있도록 해줍니다.
3. 웹 서비스에서 프록시 서버를 사용하는 것의 장점과 단점
클라이언트가 요청하는 정보를
프록시 서버가 가지고 있으면
원본 서버에 요청하지 않아도 되며,
클라이언트에게 빠르게 전달할 수 있습니다.
프록시 서버를 사용하면, 원본 서버에 대한 요청을 줄일 수 있어서
원본 서버에 대한 부하를 줄이고,
네트워크를 통한 데이터 전송량을 최소화할 수 있습니다.
(네트워크 대역폭을 절약할 수 있습니다)
장점
- 보안성(방화벽)
트래픽을 검사하고, 바이러스, 맬웨어, 피싱 시도 등을 막습니다.
프록시를 통해 웹 사이트에 액세스할 때 사용자의 IP주소를 숨겨서 사용자의 개인정보를 보호할 수 있습니다.
다양한 요소(사용자 권한, IP, URL)를 기반으로 액세스를 허용/거부 할 수 있습니다. - 네트워크 대역폭 절약(캐싱)
클라이언트가 요청하는 자원을 캐싱하여 원본 서버의 로드를 줄이며, 빠르게 제공할 수 있습니다. - 리소스 사용 최적화(로드밸런싱, 고가용성)
역방향 프록시를 통해 요청을 여러 백엔드 서버로 분산시킵니다.
단점
- 지연시간
프록시 서버를 통해 라우팅된 요청은 추가 네트워크 홉으로 인해 지연 시간이 늘어날 수 있습니다.
프록시 서버가 클라이언트, 원본 서버와 멀 수록 지연시간이 증가할 수 있습니다.
따라서, 프록시 서버의 위치를 전략적으로 잘 선택해야 합니다.
캐싱을 통해 원본 서버에서 데이터를 가져오는 것을 줄일 수도
압축을 통해 데이터가 전송되는 양을 줄일 수도 있습니다.
비동기 로딩을 사용하여 리소스의 대기 시간을 줄입니다.
그럼에도 불구하고 지연시간이 눈에 띄게 존재한다면,
프록시 서버를 공유하는 것이 아닌 직접 연결을 고려합니다. - 전문성
네트워크 관리 및 보안에 대한 지식이 요구됩니다.
고가용성을 지니도록 설계하지 않으면 프록시 서버가 단일 실패 지점이 될 수 있습니다.
(만약 프록시 서버에 오류가 발생하면 리소스에 대한 액세스가 중단될 수 있습니다)
프록시 서버는 CPU, 메모리 등의 컴퓨팅 리소스를 소비하기 때문에,
부적절한 프로비저닝으로 인해 성능 병목 현상이 발생할 수 있습니다.
따라서, 전문성을 지니고 설계하는 것이 요구됩니다. - 최신화
캐싱 리소스를 정기적으로 최신화하지 않으면
클라이언트에게 제공하는 정보에 오류가 있을 수 있습니다. - 개인정보 보호
프록시 서버가 사용자의 활동을 기록할 수 있기 때문에,
개인 정보 보호에 대한 문제가 발생할 수 있습니다.
따라서 데이터 보존 및 사용에 대한 명확한 정책을 가지고 있어야 합니다.
프록시 서버는 여러 장점과 단점을 지니고 있습니다.
따라서 프록시 서버를 사용할 때,
개발 요구사항과 리소스를 분석하여 적절한 설계를 하는 것이 중요합니다.
'Dictionary' 카테고리의 다른 글
JSON Web Tokens, JWT란? (3) | 2023.10.14 |
---|---|
클라우드의 서비스 제공 형태 XaaS, SaaS, PaaS, IaaS (0) | 2023.09.26 |
CI/CD 란? (0) | 2023.09.23 |
구성 관리 (0) | 2023.09.20 |
스왑 공간, 스와핑, 스왑 파일, 스왑 파티션(Swap Space, Swapping, SwapFile, SwapPartition) (0) | 2023.09.08 |