Notice
Recent Posts
Link
Tags
- spring mvc
- @transactional
- PYTHON
- java
- join
- 스프링부트
- spring
- AWS
- sql
- static
- spring security 6
- select
- string
- DI
- mysql
- jpa
- spring boot
- ORM
- SSL
- hibernate
- springboot
- nginx
- 프로그래머스
- Django
- 데이터베이스
- 자바
- Docker
- 스프링
- 1차원 배열
- 문자열
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Archives
개발하는 자몽
[TIL / Design Pattern] 프록시 패턴, 데코레이터 패턴 본문
섹션 4. 프록시 패턴과 데코레이터 패턴
클라이언트와 서버
Client : 요청자
Server : 처리자
클라이언트는 서버에 필요한 것을 요청하고, 서버는 클라이언트의 요청을 처리하는 것
네트워크
클라이언트 : 웹 브라우저
서버 : 웹 서버
객체
클라이언트 : 요청하는 객체
서버 : 요청을 처리하는 객체
클라이언트와 서버 개념에서 일반적으로 클라이언트가 서버를 직접 호출하고, 처리 결과를 직접 받는다.
프록시(Proxy)
클라이언트가 요청한 결과를 서버에 직접 요청하는 것이 아니라 대리자를 통해서 대신 서버에 요청할 수 있다. 이 대리자를 프록시(Proxy)라고 한다. 직접 호출을 하는 것과 다르게 프록시를 통해 호출을 하면 중간에서 여러가지 일을 할 수 있다.
- 접근 제어, 캐싱
- 부가 기능 추가
- 프록시 체인
대체 가능
서버와 프록시는 같은 인터페이스를 사용해야 한다(DI). 그리고 클라이언트가 사용하는 서버 객체를 프록시 객체로 변경해도 클라이언트 코드를 변경하지 않고 동작할 수 있어야 한다(OCP).
▶ 프록시는 대체 가능해야 한다
프록시의 주요 기능
- 접근 제어
- 권한에 따른 접근 차단
- 캐싱
- 지연 로딩
- 부가 기능 추가
- 원래 서버가 제공하는 기능에 더해서 부가 기능을 수행
- Ex. 요청 값이나, 응답 값을 중간에 변형
- Ex. 실행 시간을 측정해서 추가 로그를 남김
GOF 디자인 패턴
아래의 두 패턴 모두 프록시를 사용한다. 이 둘을 의도(intent)에 따라 구분한다.
- 프록시 패턴 : 접근 제어가 목적
- 이름에 프록시가 들어갔을 뿐, 프록시와 해당 패턴은 다른 것이다.
- 데코레이터 패턴 : 새로운 기능 추가가 목적
'개발 지식' 카테고리의 다른 글
[TIL / Design Pattern] 템플릿 메서드 패턴, 전략 패턴(템플릿 콜백 패턴) (0) | 2023.03.24 |
---|---|
[TIL] 클라이언트 검증, 서버 검증 (0) | 2023.03.09 |
[TIL] 백엔드 아키텍처, Nginx (0) | 2023.01.19 |
[OS] 동기와 비동기, 블로킹과 논블로킹 (0) | 2023.01.18 |
[SDM] 마이크로서비스 아키텍처(MSA)란? (0) | 2022.02.12 |
Comments