본문 바로가기
CS 공부

프록시 패턴과 프록시 서버

by 숭늉다섯 2024. 2. 13.

프록시 패턴

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

객체의 속성, 변환 등을 보안, 데이터 검증, 캐싱, 로깅에 사용한다

객체로도 사용하지만 프록시 서버로도 활용 한다.

 

 

프록시 서버는 서버와 클라이언트 사이에 클라이언트가 자신을 통해 다른 네트워크 서비스에 간접적으로 접속 할 수 있게 해주는 컴퓨터 시스템이나 응용프로그램을 말한다 

 

프록시 패턴 종류 

1. 기본형

2. 가상

  • 지연 초기화 방식
  • 가끔 필요하지만 항상 메모리에 적재되어 있는 무거운 서비스 객체가 있는 경우
  • 이 구현은 실제 객체의 생성에 많은 자원이 소모 되지만 사용 빈도는 낮을 때 쓰는 방식이다.
  • 서비스가 시작될 때 객체를 생성하는 대신에 객체 초기화가 실제로 필요한 시점에 초기화될수 있도록 지연할 수 있다.

3. 보호

  • 프록시가 대상 객체에 대한 자원으로의 엑세스 제어(접근 권한)
  • 특정 클라이언트만 서비스 객체를 사용할 수 있도록 하는 경우
  • 프록시 객체를 통해 클라이언트의 자격 증명이 기준과 일치하는 경우에만 서비스 객체에 요청을 전달할 수 있게 한다.

 

4. 로깅

  • 대상 객체에 대한 로깅을 추가하려는 경우
  • 프록시는 서비스 메서드를 실행하기 전달하기 전에 로깅을 하는 기능을 추가하여 재정의한다.

5. 원격

  • 프록시 클래스는 로컬에 있고, 대상 객체는 원격 서버에 존재하는 경우
  • 프록시 객체는 네트워크를 통해 클라이언트의 요청을 전달하여 네트워크와 관련된 불필요한 작업들을 처리하고 결과값만 반환
  • 클라이언트 입장에선 프록시를 통해 객체를 이용하는 것이니 원격이든 로컬이든 신경 쓸 필요가 없으며, 프록시는 진짜 객체와 통신을 대리하게 된다.

6. 캐싱

  • 데이터가 큰 경우 캐싱하여 재사용을 유도
  • 클라이언트 요청의 결과를 캐시하고 이 캐시의 수명 주기를 관리

 

프록시 서버

서버와 클라이언트 사이에서 클라이언트가 자신을 통해 다른 네트워크 서비스에 간접적으로 접속 할 수 있게 해주는 컴퓨터 시스템이나 으용 프로그램이다

 

nginx

-> 비동기 이벤트 기반의 구조와 다수의 연결을 효과적으로 처리 가능한 웹 서버이고, Node.js 서버 앞단의 프록시 서버로 활용한다.

-> 실제 포트를 숨길 수 있고, 정적 자원을 *gzip압축 하거나 메인 서버 앞단에서의 로깅을 할 수 있다.

* L277과 Huffman 코딩의 조합인 DEFLATE 알고리즘을 기반으로 한 압축기술이다. gZip 압축을 하면 데이터 전송량을 줄일 수 있지만, 압축을 해제 했을때 서버에서의 CPU오버헤드도 생각해서gZIp 압축사용 유무를 결정해야 한다.

 

 

CloudFlare

-> 전 세계적으로 분산된 서버가 있고, 어떠한 시스템의 콘텐츠 전달을 빠르게 할 수 있는 **CDN 서비스 이다

-> DDOS 공격 방어, HTTPS 구축을 할 수 있다.

** Content Delivery Network의 약자로, 콘텐츠 전송 네트워크를 나타냅니다. 이는 웹사이트나 애플리케이션의 성능을 향상시키기 위한 기술적인 서비스

 

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

-> CORS(Cross-Origin ResourceSharing)는 서버가 웹브라우저에서 리소스를 로드할 때 다른 오리진을 통해 로드 하지 못 하게 하는HTTP 헤더기반 메커니즘이다.

-> 프론트엔드 개발 시 백엔드 서버와 통신할 때 주로 CORS에러 마주칠때, 이를 해결하기 위해 프론트엔드에서 프록시 서버를 만든다.

프록시 서버 사용 전
프록시 서버 사용 후

예시 

1. 프론트  127.0.0.1 :3000 / 백엔드 127.0.0.1 : 12010 --> CORS에러가 발생

2. 프록시 서버에서 프론트를 127.0.0.1 : 12010로 변환 

'CS 공부' 카테고리의 다른 글

옵저버 패턴  (1) 2024.02.13
전략패턴 (Strategy Pattern)  (0) 2024.02.08
팩토리 패턴(factory pattern)  (1) 2024.02.08
[DB] 조인의 종류 및 원리  (0) 2024.01.25