관리 메뉴

웹개발 블로그

클라이언트와 서버 그리고 대리자(프록시) 본문

◆ SPRING BOOT/AOP

클라이언트와 서버 그리고 대리자(프록시)

쿠키린 2023. 7. 8. 19:13

클라이언트 : 의뢰인, 서버에 필요한것을 요청

 

서버 : 서비스나 상품을 제공하는 사람 혹은 물건, 클라이언트의 요청 처리

 

@직접호출

클라이언트 -----> 서버


프록시 대리자

 

@간접호출

클라이언트 ----> 프록시(대리자) ----> 서버

=> 클라이언트의 요청한 결과를 서버에 직접 요청하는 것이 아닌 어떤 대리자를 통해서 대신 간접적으로 서버에 요청할 수 있다. 예) 직접 마트에서 장볼 수 있지만, 누군가에게 대신 부탁도 가능하잖아?


@프록시 기능

1. 접근제어

- 권한에 따른 접근 차단

- 캐시 : 한번 조회하면 변하지 않는 데이터라면 어딘가에 보관해두고 이미 조회한 데이터를 사용하는 것이 성능상좋다.

- 지연로딩

2. 부가기능 추가

- 원래 서버가 제공하는 기능에 더해서 부가기능을 수행한다.

ex) 요청 값 혹은 응답 값을 중간에 변형한다.

ex) 실행 시간을 측정해서 추가 로그를 남긴다.

3. 프록시 체인

 


@사용법

서버와 프록시는 같은 인터페이스를 사용해야한다.

왜? 클라이언트->서버 이렇게 짜놓은 로직을 클->대리자->서로 수정하기 위해서는 클라이언트 코드를 변경하지 않고 동작할 수 있어야하기 때문이다.

 


@분리(둘다 프록시 사용하는것은 같다, 패턴을 만든 의도가 중요하다. 의도에 따라 패턴을 구분한다.)

1. 프록시패턴 : 캐시를 통한 접근제어라 부름

- 의도 :  다른 개체에 대한 접근을 제어하기 위해 대리자를 제공

2. 데코레이터 패턴 : 프록시로 부가 기능을 추가하는 것을 데코레이터 패턴이라 부름

-의도 : 객체에 추가 책임(기능)을 동적으로 추가하고, 기능 확정을 위한 유연한 대안 제공

'◆ SPRING BOOT > AOP' 카테고리의 다른 글

[AOP] 어드바이스 종류  (0) 2024.08.13
[AOP] 간단한 용어 정리  (0) 2024.08.08
[Spring]스프링 AOP 용어 정리  (0) 2024.05.04
[Spring boot] AOP 설정(build.gradle)  (0) 2023.07.17
[Spring] 프록시의 주요 기능  (0) 2023.06.20