본문 바로가기
목차훔치기/면접을 위한 CS 전공지식 노트

프록시 패턴과 프록시 서버(면접을 위한 CS 전공지식 노트)

by 해삼2 2023. 8. 11.
728x90
반응형
 프록시 패턴과 프록시 서버

프록시 패턴

프록시 패턴은 소프트웨어 디자인 패턴의 하나로, 다른 객체에 대한 대리자나 대변 역할을 하는 객체를 

제공하는 패턴입니다. 

이 패턴은 다른 객체에 접근할 때 추가적인 제어를 가능하게 해 주거나, 객체의 생성 및 초기화를 

지연시키는 등의 목적으로 사용될 수 있습니다.

 

프록시 서버

프록시 서버는 네트워크 환경에서 중계 역할을 수행하는 서버입니다. 클라이언트가 웹 페이지나 다른 리소스에 접근하려고 할 때, 이러한 요청을 프록시 서버를 통해 보내게 되면 프록시 서버가 대신 해당 요청을 처리하거나 중계합니다. 이를 통해 몇 가지 장점을 얻을 수 있습니다.

 

프록시란?

프록시는 어떤 것을 대신하여 처리하거나 중계하는 역할을 하는 중개자나 대리자를 가리키는 개념입니다. 

컴퓨터 과학 및 네트워킹에서 프록시는 주로 두 개체 사이에서 중간에서 일어나는 작업을 나타냅니다. 

이러한 중간 역할은 다양한 목적으로 사용될 수 있습니다.

프록시 서버: 

네트워크에서 가장 흔하게 볼 수 있는 프록시 형태입니다. 

클라이언트가 외부 서버에 직접 요청을 보내는 대신에 프록시 서버를 경유하여 요청하고 응답을 받게 됩니다. 프록시 서버는 요청된 내용을 캐싱하거나 필터링하거나 보안 검사를 수행하는 등의 역할을 수행할 수 있다.

프록시 패턴: 

실제 객체와 사용자 사이에 중간 객체를 두어 추가 기능을 제공하거나 접근을 제어하는 역할을 합니다.

예를 들어, 프록시 패턴은 지연 로딩을 구현할 때 실제 객체 대신에 로딩이 필요한 시점까지 대기하는

프록시 객체를 사용할 수 있습니다.

웹 캐시 프록시: 

웹 브라우징 환경에서 가장 일반적으로 사용되는 프록시 형태로, 웹 페이지나 이미지 등의 리소스를 

사용자의 요청에 대해 중간에 저장하고, 이후 같은 리소스 요청에 대해서는 저장된 내용을 제공하여 

빠른 로딩 속도를 유지하거나 네트워크 트래픽을 줄입니다.

역방향 프록시: 

서버 측에서 클라이언트로부터 들어오는 요청을 처리하는 서버입니다. 

주로 보안 및 부하 분산을 위해 사용됩니다. 웹 서버의 역방향 프록시는 클라이언트 요청을 받아 실제 

웹 서버로 중계하며, 보안 및 로드 밸런싱 기능을 수행합니다.

이처럼 프록시는 다양한 상황에서 중개자 역할을 수행하여 보안, 성능, 접근 제어 등 다양한 목적으로 

사용됩니다.

 

프록시 패턴 주요 요소

실제 서비스 객체 (Real Subject): 클라이언트가 직접 접근하려는 실제 객체입니다.
프록시 객체 (Proxy): 클라이언트가 접근하기 전에 중간에서 대리자 역할을 수행하는 객체입니다. 

프록시는 실제 객체에 대한 참조를 갖고 있으며, 클라이언트의 요청을 중간에서 처리하거나 변형할 수 있다.

프록시 패턴의 활용 사례로는 네트워크 통신의 캐싱, 지연 로딩, 보안 관리 등이 있습니다.

 

 

프록시 서버 주요 기능

캐싱: 

프록시 서버는 요청한 리소스의 사본을 저장해두어 이후 같은 요청이 들어올 경우 원격 서버에 접근하지 

않고 저장된 사본을 반환함으로써 네트워크 부하를 줄일 수 있습니다.


보안: 

프록시 서버는 클라이언트와 원격 서버 사이에 위치하여, 보안성을 높일 수 있습니다. 외부에서 직접 

서버에 접근하는 것을 막고, 필요한 인증 및 권한 부여를 통해 보안을 강화할 수 있습니다.


필터링: 

프록시 서버는 특정 웹 사이트나 컨텐츠에 대한 접근을 제한하거나 제어할 수 있습니다. 이를 통해 조직 

내에서 인터넷 사용을 관리하거나 부적절한 콘텐츠에 대한 접근을 차단할 수 있습니다.

 

프록시 서버는 주로 웹 프록시로 불리며, 웹 브라우징 환경에서 많이 사용됩니다. 하지만 네트워크 전반에 

걸쳐 다양한 프록시 서버가 활용될 수 있습니다.

 

프록시 패턴 자세히 알기!

해성 (사용자): 

해성이 학교 강의 시스템에서 특정 강의를 선택합니다.

프록시 강의 객체 (Proxy): 

해성이 강의를 선택하면, 프록시 강의 객체가 "로딩 중입니다" 메시지를 화면에 표시합니다.

로딩 화면을 이용한 파일 다운로드: 

로딩 화면이 나타나면, 프록시 강의 객체는 실제 강의 영상 파일을 다운로드하기 시작합니다. 

이때 해성은 로딩 화면을 통해 이 과정이 진행되고 있다는 것을 알 수 있습니다.

실제 강의 객체 (Real Subject): 

실제 강의 객체는 강의 영상 파일을 다운로드하고 화면에 표시할 준비가 되면, 프록시 강의 객체로부터 

신호를 받습니다.

강의 영상 표시: 

강의 영상 파일이 모두 다운로드되어 화면에 표시됩니다. 사용자(해성)는 로딩이 끝나고 완전한 강의 

영상을 시청할 수 있습니다.

이와 같은 흐름으로 사용자는 강의를 선택한 후에 바로 로딩 화면이 나타나고, 이 로딩 화면을 이용하여 

강의 영상 파일을 다운로드합니다. 

로딩이 완료되면 실제 강의 영상을 보여주기 때문에 사용자는 로딩 화면 없이 완전한 강의 영상을 끊김 

없이 시청할 수 있습니다. 

이렇게 프록시 패턴을 사용하여 사용자 경험을 개선할 수 있습니다.

 

프록시 서버 자세히 알기!

상황: 

학교 내부에서 학생들은 인터넷을 사용하여 다양한 웹 사이트에 접근하고 정보를 찾아볼 수 있습니다. 

그러나 학교는 학생들이 부적절한 콘텐츠에 접근하는 것을 막기 위해 프록시 서버를 도입하기로 

결정했습니다.

프록시 서버의 역할

보안 및 필터링: 

프록시 서버는 학생들이 접근하는 웹 사이트나 콘텐츠를 필터링하여 악성 콘텐츠나 부적절한 콘텐츠에 

접근하는 것을 막습니다. 

학교 정책에 따라 특정 웹 사이트나 카테고리에 접근을 제한할 수 있습니다.

캐싱: 

학교 내부에서 여러 학생들이 동일한 웹 사이트에 접근하는 경우, 프록시 서버는 해당 웹 사이트의 

리소스를 캐싱하여 다음 접근 때에는 원격 서버에 접근하지 않고 캐시 된 리소스를 제공합니다. 

이로써 네트워크 트래픽을 줄일 수 있습니다.

인증과 접근 제어: 

프록시 서버는 학생들의 인증을 관리하고 허가된 사용자만이 웹 사이트에 접근할 수 있도록 제어합니다. 

학생들의 로그인 정보를 사용하여 접근을 허용하거나 차단할 수 있습니다.

성능 개선: 

프록시 서버는 웹 사이트 접근 시에 중간에서 필터링이나 캐싱 등을 수행하므로, 웹 사이트의 응답 속도를 

개선할 수 있습니다.

프록시 서버 사용 시나리오:
학생 A가 인터넷 브라우저를 통해 웹 사이트 B에 접근하려고 합니다.
학생 A의 요청은 프록시 서버로 전달됩니다.
프록시 서버는 웹 사이트 B의 주소와 내용을 확인하고, 해당 요청이 학교 정책에 부합하는지 검사합니다.
프록시 서버가 원격 서버로부터 웹 사이트 B의 리소스를 받아와서 캐싱하고, 이후 학생 B가 동일한 

리소스에 접근할 때 캐시된 리소스를 제공합니다.
프록시 서버는 학생 A의 요청에 대한 응답을 생성하고, 이를 학생 A의 브라우저로 전송합니다.
이런 방식으로 프록시 서버는 학교 내부 네트워크에서 학생들이 안전하게 인터넷을 사용하고, 

부적절한 콘텐츠에 노출되는 것을 막을 수 있습니다.

 

 

 

*바쁜 사람을 위한 깜찍한 정리

프록시 패턴은 실제 객체와 사용자 사이에 중간 객체를 두어 해당 사용자가 사용 하기에 추가적인 기능을 제공 하거나 접근을 제어하는 역할을 합니다. 프록시 서버는 클라이언트가 외부 서버에 직접 요청을 보내는 대신 프록시 서버를 경유하여 요청하기 때문에 해당 내용을 캐싱하거나 필터링 하는 보안을 사용 할 수 있게 만드는 걸 뜻합니다. 예를 들어 슈퍼마켓으로 보면 해당 상품이 다 떨어지면 프록시 패턴을 이용해서 그 상품이 언제 재입고 되는지 시간이나 상황들을 알려주어 소비자가 다른 작업을 할수 있게 도와주는 역할을 하는 것이 프록시 패턴이고 관리자가 아닌 일반 소비자가 슈퍼마켓 물류창고나 각종 사무실들을 문을 열라고 할때 해당 건물을 접근 할 수 없게 보안키나 도어락 같은 장치로 막는 것을 프록시 서버라고 이해하면 쉬울 거 같습니다.
728x90
반응형