Proxy의 역할
proxy란, '대리'라는 뜻입니다. 그리고 이 용어는 IT 분야 곳곳에서 다양하게 사용됩니다. 예를 들어 Proxy pattern, Spring proxy, Network proxy 등이 있는데요, 이번 아티클에서 살펴보고자 하는 부분은 Network proxy입니다.
개발자의 길을 걷다보면 많은 부분에서 공통적으로 접하게 되는 개념이 있습니다. 바로 추상화입니다. 추상화란, 불필요한 차이점을 배제하고 공통점만을 추출하는 작업을 의미합니다. 이런 추상화가 왜 중요할까요? 복잡도를 획기적으로 낮춰주기 때문입니다.
제가 추상화에 대한 이야기를 한 이유는 Network Proxy도 하나의 추상화 메커니즘이기 때문입니다. 그럼 어떤 것을 추상화하느냐? 바로 네트워크 통신 자체를 추상화합니다.
Forward Proxy, Reverse Proxy
Proxy란 네트워크 통신을 추상화한다고 이해했습니다. 그러면 Forward Proxy, Reverse Proxy는 이해하기 쉽습니다. Forward Proxy는 클라이언트의 대리인입니다. 즉, 클라이언트 입장에서의 요청 및 응답을 추상화합니다. 반대로 Reverse Proxy는 서버의 대리인이며 서버 입장에서의 요청 및 응답을 추상화합니다. 그림으로 표현하면 다음과 같은 구조입니다.
쉽게 말해 클라이언트와 웹 사이에 위치한 프록시는 Forward Proxy, 웹과 서버 사이에 위치한 프록시는 Reverse Proxy라고 부릅니다. 그런데 왜 이런 대리인(Proxy)가 필요한걸까요? Proxy는 많은 이점을 제공하기 때문입니다.
Forward Proxy 배치의 이점
Forward Proxy를 사용하는 경우, 서버는 클라이언트에 직접적으로 접근하지 않습니다. 무조건 Forward Proxy를 통해 접근하게 됩니다. 이는 반대로 이야기하면 서버에서는 클라이언트의 주소를 모른다는게 됩니다. 즉, 보안상 이점을 가집니다.
또한 트래픽을 한 눈에 볼 수 있다는 장점(모든 트래픽이 Foward Proxy로 흐르므로)이 있고, 모든 트래픽이 한 곳으로 흐르기에 일관된 정책 등을 적용할 수도 있습니다. 예를 들어, 우리 회사에서 보내는 요청에 모두 어떤 작업을 수행하고 싶다면, Forward Proxy를 통해 이를 해결할 수 있습니다. 이외에도 캐싱 등의 이점도 존재합니다.
Reverse Proxy 배치의 이점
Reverse Proxy를 사용하는 경우, 클라이언트는 서버에 직접 접근하지 않습니다. 즉, 클라이언트는 무조건 Reverse Proxy를 통해서만 서버에 접근하게 되고 실질적인 서버의 위치를 모르게 됩니다. 이는 Forward Proxy와 마찬가지로 보안 이점이 있음을 의미합니다. 또한, 캐싱, 암호화(SSL)와 같은 이점도 가집니다. 그리고 reverse proxy 하나 당 여러 서버가 연결되는 구조이므로 로드밸런싱, 서버 확장에 굉장히 유용합니다.
참고자료
https://www.checkpoint.com/cyber-hub/network-security/what-is-a-forward-proxy/
https://www.cloudflare.com/ko-kr/learning/cdn/glossary/reverse-proxy/
'우테코 5기' 카테고리의 다른 글
[레벨 2 미션] 지하철 미션 학습 기록(2) (0) | 2023.06.08 |
---|---|
[레벨 2 미션] 지하철 미션 학습 기록(1) (0) | 2023.05.29 |
Web Server vs. WAS(Web Application Server) (0) | 2023.05.28 |
도메인 엔티티 ID 부여에 대한 주관적인 생각 (0) | 2023.05.27 |
HTTPS 개념 및 EC2로 배포한 서버에 적용하기(nginx + cerbot) (3) | 2023.05.25 |