프록시는 클라이언트가 사용하는 실제 서비스 객체를 대신하는 객체를 제공하는 구조 디자인 패턴입니다. 프록시는 클라이언트 요청을 수신하고, 일부 작업(접근 제어, 캐싱 등)을 수행한 다음 요청을 서비스 객체에 전달합니다.
프록시 객체는 서비스 객체와 같은 인터페이스를 가지기 때문에 클라이언트에 전달되면 실제 객체와 상호교환이 가능합니다.
개념적인 예시
Nginx 같은 웹서버는 당신의 애플리케이션 서버의 프록시 역할을 할 수 있습니다:
- 앱 서버에 대한 제어된 접근을 제공합니다.
- 속도 제한(rate limiting)을 수행할 수 있습니다.
- 요청 캐싱을 할 수 있습니다.
server.go: 주제
nginx.go: 프록시
application.go: 실제 주제
main.go: 클라이언트 코드
output.txt: 실행 결과