Architecture Pattern

Proxy 패턴 이란 ?

Ed2024 2024. 11. 17. 00:08

1.프록시 패턴의 시작

  • 기원 : 프록시 패턴은 1994년 GoF의 디자인 패턴 책에서 소개되었습니다. 이 책은 객체지향 소프트웨어 설계에서 공통적으로 사용되는 23가지 디자인 패턴을 정리한 첫 번째 공식 문헌입니다. 프록시 패턴은 이 책에서 구조적 패턴(Structural Pattern)으로 분류되며, 객체 간의 관계와 구조를 다루는 패턴 중 하나로 설명됩니다.
  • 사용 목적 : 컴퓨팅 자원이 제한된 환경에서, 실제 객체를 생성하거나 접근하는 과정을 제어하기 위한 필요성에서 시작되었습니다. 초기 컴퓨터 시대에는 메모리와 처리 속도에 제약이 있었기 때문에 객체의 생성 비용을 줄이고 효율성을 높이는 설계 방식이 중요했습니다.

 

2. 프록시 패턴의 사용 사례

1) 초기 컴퓨터 네트워크 :

  • 원격 호출(Remote Method Invocation, RMI)이 필요했던 네트워크 환경에서 사용되었습니다.
  • 원격 서버에 있는 객체를 로컬에서 사용하는 것처럼 접근하게 해주는 **원격 프록시(Remote Proxy)**로 활용되었습니다.

2) 가상 환경 :

  • 메모리나 자원 제약이 심했던 시대에, 실제 객체를 생성하지 않고 대리 객체를 통해 필요한 시점에만 리소스를 로딩하거나 생성하는 방식으로 사용되었습니다.
  • 예: 대용량 이미지 처리 또는 파일 시스템 접근.

3) 보안과 권한 제어 :

  • 보호 프록시(Protection Proxy)는 중요한 시스템이나 데이터에 접근하는 사용자 권한을 관리하고 제어하는 방식으로 사용되었습니다.
  • 예: 데이터베이스 시스템에서 인증된 사용자만 접근할 수 있도록 제어.

3.프록시 패턴의 현대적 활용

프록시 패턴은 현대 소프트웨어 개발에서도 여전히 중요한 역할을 합니다. 특히, 다음과 같은 기술에서 폭넓게 사용됩니다:

    1) 웹 개발 및 네트워크 프로그래밍 :

         - HTTP 프록시 서버, API 게이트웨이 등에서 실제 서버와 클라이언트 사이의 중계 역할을 수행.

    2) 가상화 및 클라우드 컴퓨팅 :

        - 클라우드 서비스 제공 업체는 자원을 효율적으로 관리하기 위해 프록시 패턴을 사용.

    3) ORM(Object-Relational Mapping) :

        - Hibernate와 같은 ORM에서는 데이터베이스에서 실제 데이터를 필요할 때만 가져오기 위해 가상 프록시를 사용.

    4) AOP (Aspect-Oriented Programming) :

        - 메서드 호출 전후로 로깅, 보안, 트랜잭션 처리 등의 부가기능을 추가하기 위해 프록시가 사용됩니다.

    5) 캐싱 및 성능 최적화 :

        - 애플리케이션에서 반복적인 데이터 호출을 줄이고 성능을 향상시키기 위해 캐싱 프록시를 활용.

 

4. 프록시 패턴의 장점

  • 객체 접근 제어를 효과적으로 수행할 수 있습니다.
  • 객체 초기화 비용이 높은 경우 성능을 최적화할 수 있습니다.
  • 객체 사용 전에 검증, 로깅, 권한 확인 같은 부가 작업을 추가할 수 있습니다.

 

5.프록시 패턴의 단점

  • 구조가 복잡해질 수 있습니다.
  • 추가적인 계층이 생기므로 약간의 성능 오버헤드가 발생할 수 있습니다.

'Architecture Pattern' 카테고리의 다른 글

Retry 패턴 이란 ?  (0) 2024.11.19
Rate limiting 패턴 이란 ?  (2) 2024.11.18
Aggregator (집계자) 패턴 이란 ?  (2) 2024.11.16
BFF (Backend for Frontend) 패턴 이란 ?  (3) 2024.11.15
Sidecar 패턴 이란 ?  (1) 2024.11.14