Proxy

Jimin·2022년 8월 21일
0

JAVA

목록 보기
15/23

프록시 패턴이란?

디자인 패턴 중 하나로, 다른 무언가와 이어지는 인터페이스 역할을 하는 클래스를 의미한다.


프록시라는 용어의 의미

프록시의 사전적 정의는 '대리인'이라는 의미로, 원래 자신이 해야할 역할을 다른 무엇이가가 대신 하는 것이라는 뜻으로 접근할 수 있다.
예를 들어, 보안 분야에서 보안상의 이유로 서버를 외부에 노출시키지 않기 위해 서버와 클라이언트 중간에서 연결을 담당하는 서버를 프록시서버라고 부른다.


프록시 패턴

어떠한 객체에 대한 접근을 제어하는 용도로 객체의 대리인 역할을 하는 객체를 제공하는 패턴

인터페이스를 사용하고 싶을 때 클래스에 대해 객체가 들어갈 자리에 대리자 객체를 대신 투입하여,
클라이언트는 실제 실행시킬 클래스에 대한 메소드를 호출하여 반환값을 받는지 대리 객체의 메소드를 호출해서 반환값을 받는지 모르게 하는 것을 말한다.

  • 클라이언트 → 실제 서버 클래스
  • 클라이언트 → 대리인 → 실제 서버 클래스


위의 그림을 보면, Client에서 request()를 호출하면 Proxy가 request()를 호출하여 RealSubject의 request()를 호출하게 된다.
Client → Procy → RealSubject


프록시 패턴의 사용 이유

  1. 흐름을 제어할 수 있다.
  • 프록시 객체를 사용하지 않는 경우
    많은 양의 리소스를 필요로 하지 않는 상황에서 DB Query가 굉장히 늦어질 수 있다.
  • 프록시 객체를 사용하는 경우
    프록시 객체가 먼저 요청을 받고 흐름을 제어하여 DB에 Query를 날릴 수 있게 된다.
  1. 실제 메소드가 호출되기 이전에 필요한 기능(전처리...)을 구현 객체 변경없이 추가할 수 있다.
    → 코드 변경의 최소화

  2. 캐시를 사용할 수 있다.
    → 프록시가 내부 캐시를 통해 데이터가 캐시에 존재하지 않는 경우에만 주체 클래스에서 작업이 실행될 수 있도록 제어 할 수 있다.
    ⇒ 부하 감소

  3. 기존 객체를 수정하지 않고 일련의 로직을 프록시 패턴을 통해 추가할 수 있다.

  4. 프록시는 기존 객체와 클라이언트의 요청 사이에 위치해 있기 때문에 하나의 방패 역할을 하기도 한다.


프록시 패턴의 단점

  1. 프록시 내부에서 객체 생성을 위해 스레드가 생성되거나 동기화를 구현해야할 경우 성능이 저하될 수 있다.
  2. 프록시 패턴을 다수 이용할 경우, 다수의 객체가 추가적으로 생성되며 그 수만큼 한 단계 더 거치게 되므로 성능이 저하될 수 있다.

출처

https://esoongan.tistory.com/180
https://today-retrospect.tistory.com/102 ← 정리 엄청 잘 해 두심

profile
https://github.com/Dingadung

0개의 댓글