프로그래밍/디자인패턴

프록시와 패턴

znvlcm 2022. 8. 12. 15:05

프록시란 ? 

우리는 직거래를 하기도 하지만 중간에 중간판매자가 끼어서 거래를 할 수 있다. 

생산자와 소비자 사이에 인터넷 쇼핑몰이라던지 시장, 대형마트 등 판매를 하는 중간 판매자가 대신 판매를 한다. 

이렇듯 중간에 제 3자인 대리자가 끼어있을 수 있는데, 

웹개발에서도 마찬가지이다. 

보통우리는 클라이언트에서 요청을 보내면 요청을 받은 서버가 요청을 처리하여 응답을 되돌려준다. 

그런데!!!!! 만약에 이 중간에 대리자가 끼인패턴이 있는데 이 중간에 대리자 역할을 하는게 프록시 이다. 

 

웹 개발에서 프록시의 이용 

서버와 클라이언트의 직접통신을 하는 것보다 프록시를 통한 간접통신을 한다면 

접근제어부가기능 추가를 할 수 있다 

 

우선 접근제어란, 권한이나 캐시, 지연로딩등을 할 때 실제 서버처리를 실행시키는 것을 제어하는 것이다. 

우리가 캐시를 사용하는 것은 빠른 성능을 위해 많이 사용하는데 

대용량의 서비스를 매 요청때마다 서버를 통해 처리하고 받아오는 것은 서버에 무리를 준다. 

만약 스포츠 스타의 랭킹을 보여주는 웹페이지가 있다면 

이 랭킹이 초단위로 갱신되진 않는다 일정주기로 랭킹을 갱신을 한다. 

그렇다면 랭킹 사이트에 사용자가 접속할 때마다 서버에 접속해서 각 부문별 점수를 가져와서

채점하고 반영비율을 계산해서 산출하는 과정을 매번거치는 것은 아주 비효율적이다. 

시스템이 랭킹이 갱신되는 시간을 확인해서 갱신되는 시점에만 랭킹을 산출하고 산출내용을 캐시로 저장해 둔다면 

매번 계산할 필요없이 갱신주기전까지는 이 산출되어진 캐시를 불러만 오면된다. 

 

프록시를 사용하면 클라이언트가 랭킹을 가져오라는 같은 요청임에도 

조건에 따라 캐시서버의 캐시를 쓸건지 실제 서버의 처리를 할 것인지를 결정하는 접근제어가 가능하다. 

같은 인터페이스에 의존되어 있기 때문이다. 

 

또한 프록시를 사용하면 데이터를 원하는 형태로 변환하는 등의 부가기능을 실행할 수도 있다. 

 

GoF의 디자인패턴에서의 디자인 패턴 

위 두 가지 기능은 프록시를 사용한다는 공통점이 있지만, 

디자인 패턴은 의도에 따라 패턴을 나눈다. 

프록시 패턴 : 접근제어를 위한 프록시를 사용

데코레이터 패턴 : 부가기능 수행을 위한 프록시사용

 

 

728x90

'프로그래밍 > 디자인패턴' 카테고리의 다른 글

[디자인패턴] 템플릿 메서드 패턴  (0) 2023.04.27
[디자인패턴] 행위패턴  (0) 2021.10.31
[디자인패턴] 구조패턴  (0) 2021.10.31
[디자인 패턴] 생성패턴  (0) 2021.10.31
[디자인패턴] 개념  (0) 2021.10.31