1.1.5 Proxty Pattern & Proxy Server
1.1.5 프록시 패턴과 프록시 서버
프록시 패턴(Proxy Pattern)은 다른 객체로의 접근을 제어하기 위해 대리인을 제공하는 구조적인 디자인 패턴입니다. 이는 실제 객체에 대한 접근을 제어하고, 필요에 따라 접근을 제한하거나 추가 기능을 제공하는 역할을 합니다.
프록시 패턴의 특징
대리 객체 제공: 프록시 객체는 실제 객체에 대한 대리인 역할을 하여 접근을 제어합니다.
추가 기능 제공: 프록시는 접근 제어 외에도 캐싱, 로깅, 권한 검사 등의 추가 기능을 제공할 수 있습니다.
유연성 향상: 실제 객체의 인터페이스를 변경하지 않고도 기능을 확장하거나 수정할 수 있습니다.
프록시 패턴 구현 예제 (Java)
다음은 Java에서 프록시 패턴을 구현한 예제입니다:
위 예제에서는 RealSubject
인터페이스를 구현한 RealSubjectImpl
클래스와 이를 대리하는 Proxy
클래스를 정의합니다. Proxy
클래스는 RealSubject
객체에 대한 접근을 제어하며, 요청을 처리하기 전에 로깅 기능을 추가로 수행합니다.
프록시 서버
프록시 서버(Proxy Server)는 네트워크와 인터넷 보안에서 클라이언트와 서버 사이에 중개 역할을 하는 서버입니다. 클라이언트가 프록시 서버를 통해 다른 서버에 간접적으로 접근할 수 있도록 합니다.
프록시 서버의 특징
보안 강화: 프록시 서버는 클라이언트와 서버 간의 직접적인 연결을 차단하여 보안을 강화할 수 있습니다.
캐싱 기능: 프록시 서버는 자주 요청되는 데이터를 캐싱하여 성능을 향상시킬 수 있습니다.
IP 주소 숨김: 프록시 서버를 통해 접근하면 클라이언트의 IP 주소를 숨길 수 있어 프라이버시를 보호할 수 있습니다.
프록시 서버의 활용 예제
nginx
nginx는 이벤트 기반의 고성능 HTTP 및 리버스 프록시 서버입니다. 주로 웹 서버 앞단에 위치하여 로드 밸런싱, 캐싱, 보안 강화 등의 기능을 제공합니다.
Cloudflare
Cloudflare는 전 세계적으로 분산된 CDN(콘텐츠 전송 네트워크) 및 보안 서비스를 제공하는 프록시 서버입니다. 이를 통해 웹사이트의 성능을 최적화하고 DDoS 공격 등을 방어할 수 있습니다.
프록시 패턴의 장점과 단점
장점:
보안 강화: 실제 객체에 대한 접근을 제어하여 보안을 강화할 수 있습니다.
성능 향상: 캐싱을 통해 성능을 향상시킬 수 있습니다.
유연성 제공: 추가 기능을 손쉽게 확장할 수 있습니다.
단점:
복잡성 증가: 프록시 객체를 추가로 구현해야 하므로 코드의 복잡성이 증가할 수 있습니다.
성능 저하: 추가적인 계층이 생기므로 성능 저하가 발생할 수 있습니다.
프록시 패턴은 실제 객체에 대한 접근을 제어하고, 보안, 캐싱, 로깅 등의 추가 기능을 제공하는 데 유용한 디자인 패턴입니다. 프록시 서버는 네트워크 보안과 성능 최적화에 중요한 역할을 하며, 다양한 상황에서 활용될 수 있습니다.
Last updated