프록시란 ?
우리는 직거래를 하기도 하지만 중간에 중간판매자가 끼어서 거래를 할 수 있다.
생산자와 소비자 사이에 인터넷 쇼핑몰이라던지 시장, 대형마트 등 판매를 하는 중간 판매자가 대신 판매를 한다.
이렇듯 중간에 제 3자인 대리자가 끼어있을 수 있는데,
웹개발에서도 마찬가지이다.
보통우리는 클라이언트에서 요청을 보내면 요청을 받은 서버가 요청을 처리하여 응답을 되돌려준다.
그런데!!!!! 만약에 이 중간에 대리자가 끼인패턴이 있는데 이 중간에 대리자 역할을 하는게 프록시 이다.
웹 개발에서 프록시의 이용
서버와 클라이언트의 직접통신을 하는 것보다 프록시를 통한 간접통신을 한다면
접근제어와 부가기능 추가를 할 수 있다
우선 접근제어란, 권한이나 캐시, 지연로딩등을 할 때 실제 서버처리를 실행시키는 것을 제어하는 것이다.
우리가 캐시를 사용하는 것은 빠른 성능을 위해 많이 사용하는데
대용량의 서비스를 매 요청때마다 서버를 통해 처리하고 받아오는 것은 서버에 무리를 준다.
만약 스포츠 스타의 랭킹을 보여주는 웹페이지가 있다면
이 랭킹이 초단위로 갱신되진 않는다 일정주기로 랭킹을 갱신을 한다.
그렇다면 랭킹 사이트에 사용자가 접속할 때마다 서버에 접속해서 각 부문별 점수를 가져와서
채점하고 반영비율을 계산해서 산출하는 과정을 매번거치는 것은 아주 비효율적이다.
시스템이 랭킹이 갱신되는 시간을 확인해서 갱신되는 시점에만 랭킹을 산출하고 산출내용을 캐시로 저장해 둔다면
매번 계산할 필요없이 갱신주기전까지는 이 산출되어진 캐시를 불러만 오면된다.
프록시를 사용하면 클라이언트가 랭킹을 가져오라는 같은 요청임에도
조건에 따라 캐시서버의 캐시를 쓸건지 실제 서버의 처리를 할 것인지를 결정하는 접근제어가 가능하다.
같은 인터페이스에 의존되어 있기 때문이다.
또한 프록시를 사용하면 데이터를 원하는 형태로 변환하는 등의 부가기능을 실행할 수도 있다.
GoF의 디자인패턴에서의 디자인 패턴
위 두 가지 기능은 프록시를 사용한다는 공통점이 있지만,
디자인 패턴은 의도에 따라 패턴을 나눈다.
프록시 패턴 : 접근제어를 위한 프록시를 사용
데코레이터 패턴 : 부가기능 수행을 위한 프록시사용
'프로그래밍 > 디자인패턴' 카테고리의 다른 글
| [디자인패턴] 템플릿 메서드 패턴 (0) | 2023.04.27 |
|---|---|
| [디자인패턴] 행위패턴 (0) | 2021.10.31 |
| [디자인패턴] 구조패턴 (0) | 2021.10.31 |
| [디자인 패턴] 생성패턴 (0) | 2021.10.31 |
| [디자인패턴] 개념 (0) | 2021.10.31 |