Computer Science/Design Pattern
Proxy pattern, Decorator pattern
Kim Jinung
2023. 6. 5. 19:48
Proxy
프록시 객체는 클라이언트-서버 아키텍처 중간에 껴서 대리자 역할을 한다. 굳이 왜 프록시를 추가하는 걸까?
서버는 언제나 바쁘다. 그런데 요청을 검증하고 캐싱까지 하려면 서버의 리소스가 많이 빡빡해진다. 그렇기에 서버와 클라이언트 사이에 대리자를 두고 일을 분담시킨다. 예를 들어서 클라이언트 요청에 대한 검증만을 전담하는 프록시를 만들면 그것이 API 게이트웨이다. 더 나아가서 만약 서비스 규모가 커져서 서버 인스턴스를 클러스터로 구축하면 프록시가 앞에서 로드 밸런싱을 해줄 수도 있다. 프록시를 추가함으로써 접근 제어와 부가 기능 등을 추가할 수 있는 것이다.
Proxy pattern & Decorator pattern
둘다 프록시를 사용해서 구현한다. GOF 디자인 패턴 책에서는 의도에 따라 구분한다.
- 프록시 패턴: 캐시, 권한 검증 등과 같은 접근 제어
- 데코레이터 패턴: 새로운 추가 기능을 덧붙인다.
프록시 패턴은 원본 객체에 부수적인 기능을 제공하기 위한 목적이고, 데코레이터 패턴은 원본 객체에 추가 기능을 덧 붙여서 확장을 하기 위한 목적이다.