소프트웨어 아키텍처 - 19(Proxy Architecture Style)

박승현·2023년 10월 15일
0

아키텍처

목록 보기
19/30
post-thumbnail

Proxy Architecture Style

  • 개요
    • 프록시는 메서드 호출을 객체에 직접적으로 일어나게 하는 대신 프록시 객체를 통해 간접적으로 발생시키는 역할을 함
    • 프록시 객체들은 일반적으로 서비스를 제공하는 객체와 공통 인터페이스나 슈퍼클래스를 공유

  • 프록시의 패턴(다른 객체의 서비스를 투명하게 관리하기 위해 프록시를 사용)
    • 메서드 실행 시간이 오래 걸리는 경우에도 즉시 반환하는 효과를 주는 프록시
      • 프록시가 메서드가 오래 걸리는 작업을 수행해도 클라이언트는 즉시 반환되는 것처럼 보이도록 만들 수 있음
      • 작업의 완료를 대기하지 않고 다른 작업을 수행할떄 유용
    • 다른 기계에 있는 객체가 로컬 객체처럼 보이게 하는 프록시(원격 프록시)
      • 원격 서버에 있는 객체가 로컬에서 있는 것처럼 사용될 수 있게 해줌
      • 원격 서비스 호출 및 분산 시스템에서 객체 통신을 관리할때 유용
    • 서비스 제공 객체에 대한 접근을 제어하는 프록시(액세스 프록시)
      • 클라이언트가 서비스 제공 객체에 직접 접근하는 것을 통제하며 보안 및 권한 관리를 제어
    • 서비스 객체가 실제로 생성되기 전에 그 객체가 존재하는 것처럼 보이게 하는 프록시(가상 프록시)
      • 실제 서비스 객체가 생성되기 전에 클라이언트에게 이미 존재하는 것처럼 보이게 하여 리소스를 효과적으로 관리하고 지연 초기화를 수행
  • 프록시 패턴의 다양한 사용 사례를 통해 서비스 관리와 클라이언트-서버 상호작용을 개선하고 복잡한 시스템에서 투명한 서비스 제공을 지원
  • 투명한 서비스란 클라이언트에게 서비스가 제공되는 것처럼 보이면서 클라이언트에게 실제로 서비스가 어떻게 제공되는지에 대한 세부 정보를 숨기는 것을 의미
    • 서비스가 어디에서 실행되고 어떻게 제공되는지에 대해 사용자가 인식하지 않을 수 있음

프록시 구조

  • 프록시 클래스 다이어그램
  • Solution
    • 서비스는 직접적으로 접근할 수 없는 객체를 구현
    • 객체에 대한 직접적 접근 대신 접근을 위한 플레이스홀더를 제공
    • 프록시는 서비스를 대표하며 올바른 접근을 보장(프록시는 서비스와 동일한 인터페이스)
    • 클라이언트는 서비스에 접근하기 위해 프록시 사용

프록시의 장,단점

  • 장점
    • 원본 객체에 대한 엑세스 제어
      • 클라이언트가 원본 객체에 직접 접근하는 것을 제어(보안 및 권한 제어 수행)
    • 메모리 절약
      • 원본 객체가 필요할 떄만 생성되거나 초기화
    • 성능 향상
      • 캐시 프록시와 같은 특정 유형의 프록시를 사용하면 결과를 캐시하고 중복된 계산을 피함
    • 기능과 관리의 분리
      • 프록시를 사용하면 핵심 비즈니스 로직과 기능과 같은 핵심 작업을 분리, 코드 유지보수와 확장이 쉬워짐
  • 단점
    • 과도한 복잡성의 위험
      • 프록시가 너무 복잡한 기능을 갖고 있는 경우
    • 간접성 수준
      • 프록시를 사용하면 메서드 호출이 한 단계 추가로 간접적으로 이루어지므로 간접성이 발생
profile
KMU SW

0개의 댓글