티스토리 뷰
프록시 패턴(Proxy Pattern)이란?
대상 객체에 접근하기 전에 그 접근에 대한 흐름을 가로채 대상 객체 앞단의 인터페이스 역할을 하는 패턴이다.
이를 통해 객체의 속성과 변환 등을 보완하며 보안, 데이터 검증, 캐싱, 로깅에 사용한다.
프록시 객체나 프록시 서버로도 활용된다.
프록시 서버
서버와 클라이언트 사이에서 클라이언트가 자신을 통해 다른 네트워크 서비스에 간접적으로 접속할 수 있게 해주는 것이다.
프록시 서버의 장점
- 캐싱
클라이언트의 요청을 원격 서버가 아닌 프록시 서버에서 캐시 데이터를 응답한다.
이는 불필요하게 외부와 연결하지 않기 때문에 트래픽을 줄일 수 있다.
프록시 서버의 예시
- Nginx
비동기 이벤트 기반의 구조와 다수의 연결을 효과적으로 처리 가능한 웹 서버이며, 주로 Node.js 서버 앞 단의 프록시 서버로 활용된다.
이를 통해 사용자의 직접적인 서버 접근을 차단하고 간접적으로 한 단계를 더 거쳐 보안성을 더욱 강화할 수 있다. - CloudFlare
전 세계적으로 분산된 서버가 있고 이를 통해 콘텐츠 전달을 빠르게 할 수 있는 CDN 서비스이다.
또한 DDOS 공격 방어, HTTPS 구축의 장점이 있는데 이는 웹 서버 앞 단의 프록시 서버로 쓰기 때문에 가능하다.
CORS와 Front-End의 프록시 서버
서버가 웹 브라우저에서 리소스를 로드할 때 다른 오리진을 통해 로드하지 못하게 하는 HTTP 헤더 기반 매커니즘이다.
Front-End(이하 FE)서버에서 Back-End(이하 BE)서버와 통신할 때 CORS 에러가 발생할 수 있는데 이를 해결하기 위해 FE에서 프록시 서버를 만들기도 한다.
예를 들어 FE에서 127.0.0.1:3000으로 테스팅을 하는데 BE 서버는 127.0.0.1:12010이라면 포트 번호가 달라 CORS 에러가 발생한다.
이 때 프록시 서버를 FE 서버와 BE 서버 사이에 두어 FE 서버에서 요청되는 오리진을 127.0.0.1:12010으로 바꿔서 해결할 수 있다.
Reference
'CS > 디자인 패턴' 카테고리의 다른 글
MVC, MVP, MVVM 패턴 (0) | 2022.09.14 |
---|---|
반복자 패턴과 노출 모듈 패턴 (Iterator Pattern & Revealing Module Pattern) (0) | 2022.09.14 |
옵저버 패턴 (Observer Pattern) (0) | 2022.09.14 |
전략 패턴 (Strategy Pattern) (0) | 2022.09.14 |
팩토리 패턴 (Factory Pattern) (0) | 2022.09.14 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 불연속할당
- 정렬병합조인
- 클러스터형인덱스
- 네트워크
- 인덱스최적화
- 코틀린
- 직접연관매핑
- 프로세스 컴파일
- 디자인 패턴
- 프로세스
- 연관매핑
- 프로세스와 스레드
- 프로그래밍 패러다임
- 세컨더리인덱스
- 중첩루프조인
- 스프링 WebFlux
- java
- 캐시매핑
- 직접매핑
- 스프링 R2DBC
- Design Pattern
- 보이스코드정규형
- 선언형 프로그래밍
- 자바
- 프로그래밍
- 스레드
- 대수확장성
- 메모리 계층
- 네트워크 기초
- 함수형 프로그래밍
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함