프록시 패턴

HS K·2023년 2월 15일
0
post-custom-banner

프록시 패턴

대상 객체(subject)에 접근하기 전 그 접근에 대한 흐름을 가로채 대상 객체 앞단의 인터페이스 역할을 하는 디자인 패턴

서버 앞단에 두어 캐싱, 로깅 등에 활용하는 프록시서버가 대표적이다.

어떤 사용자가 프록시 개체를 통해 대상 객체로 들어간다.

예시

cloudflare

전 세계적으로 분산된 서버가 있고, 이를 통해 어떠한 시스템의 콘텐츠 전달을 빠르게 할 수 있는 CDN(Content Delivery Network) 서비스이다.
그림처럼 사용자, 크롤러, 공격자가 자신의 웹사이트에 접속하게 되는데, 이때 CloudFlare를 통해 공격자로부터 보호할 수 있다.

  • CDN : 지리적 제약 없이 전 세계 사용자에게 빠르고 안전하게 콘텐츠를 전송할 수 있는 콘텐츠 전송 기술

CORS와 프론트엔드의 프록시 서버

CORS는 서버가 웹 브라우저에서 리소스를 로드할 때 다른 오리진을 통해 로드하지 못하게 하는 HTTP 헤더 기반 메커니즘이다.
프론트엔드 개발 시 프론트엔드 서버를 만들어서 백엔드 서버와 통신할 떄 주로 CORS 에러를 마주치는데, 이를 해결하기 위해 프론트엔드에서 프록시 서버를 만들기도 한다.

오리진

프로토콜과 호스트 이름, 포트의 조합을 말한다.

https://kundol.com:12010/test 라는 주소에서 오리진은
https://kundol.com:12010 을 뜻한다.


예를 들어 프론트엔드에서는 127.0.0.1:3000으로 테스팅을 하는데 백엔드 서버는 127.0.0.1:12010이라면 포트 번호가 다르기 때문에 CORS에러가 나타난다. 이때, 프록시 서버를 둬서 프론트엔드 서버에서 요청되는 오리진ㅇ르 127.0.0.1:12010으로 바꾸는 것이다.

위의 그림처럼 프론트엔드 서버 앞단에 프록시 서버를 놓아 /api 요청은 users API, /api2요청은 users API2에 요청할 수 있다. 자연스레 CORS 에러 해결은 물론이며 다양한 API 서버와의 통신도 매끄럽게 할 수 있다.

profile
주의사항 : 최대한 정확하게 작성하려고 하지만, 틀릴내용이 있을 수도 있으니 유의!
post-custom-banner

0개의 댓글