[CS] Proxy 개념 정리

JY·2025년 3월 25일
0

CS

목록 보기
3/10
post-thumbnail

🤔 프록시(Proxy)?

"Proxy"는 한국어로 직역하면 "대리"라는 뜻을 가지며 말그대로 클라이언트와 서버 간의 중계(대리자) 역할을 하는 시스템이다. 클라이언트가 서버에 직접 요청을 보내는 대신, 프록시를 통해 요청을 전달하고, 서버의 응답도 프록시를 통해 클라이언트에게 전달된다. 이해하기 쉽게 중간 저장소의 역할을 한다고 생각해도 좋다.


🔥 Client와 Server

일반적으로 Client(클라이언트)는 사용자(또는 프로그램)가 서버에 특정 작업을 요청하기 위해 사용하는 응용 프로그램이나 장치를 의미하고, Server(서버)는 클라이언트의 요청을 수락하고, 해당 요청을 처리하여 응답을 반환하는 프로그램 또는 하드웨어 시스템을 의미한다. 이러한 개념은 프로그램의 역할 측면에서 주로 이해되지만, 프록시(proxy)나 분산 시스템을 다룰 때는 Client와 Server에 대한 보다 깊은 개념적 이해가 필요하다.

✅ Client와 Server의 개념 확장

  • 클라이언트 : 서버에 특정 요청을 보내는 모든 수행체(프로그램, 모듈, 서비스 등).
  • 서버 : 클라이언트의 요청을 받아 응답을 제공하는 모든 수행체.

💡 중요한 점

Client와 Server는 고정된 개념이 아니라 상황에 따라 역할이 달라질 수 있다.
즉, 단순히 애플리케이션의 역할이 아니라 시스템 내부에서도 개별 Object들이 클라이언트와 서버 역할을 수행할 수 있다.


🤔 프록시는 왜 사용할까?

프록시는 단순히 "중간에서 전달만 한다"로 끝나는 게 아니라, 다양한 기능을 수행하면서 성능 최적화, 보안 강화, 서버 보호까지 담당할 수 있다.

1️⃣ 중계 (Request/Response Relay)

  • 클라이언트의 요청을 서버로 전달하고, 서버의 응답을 클라이언트에게 다시 전달하는 역할
  • 클라이언트와 서버가 직접 연결되지 않고 프록시를 통해 통신이 이루어진다.

2️⃣ 접근 제어 (Access Control)

  • 클라이언트의 IP 주소나 정보를 서버에 숨겨서 익명성을 제공하거나, 특정 사이트에 대한 접근을 차단할 수 있다.
  • 외부로 나가는 요청을 통제하거나, 내부 서버에 대한 접근을 제한할 수도 있다.

3️⃣ 캐싱 (Caching)

  • 자주 요청되는 데이터를 저장해두고, 같은 요청이 들어오면 서버에 재요청하지 않고 저장된 데이터를 빠르게 반환한다.
  • 네트워크 트래픽과 서버 부하를 줄이고 응답 속도를 향상시킬 수 있다.

4️⃣ 로드 밸런싱 (Load Balancing)

  • 여러 서버에 요청을 분산시켜 특정 서버에 과부하가 걸리지 않도록 조정한다.
  • 서버 장애가 발생해도 다른 서버로 요청을 우회시켜 서비스가 계속 유지되도록 지원한다.

🔎 프록시의 종류

실제로 자주 쓰이는 프록시의 종류는 다음과 같다.

1️⃣ 정방향 프록시 (Forward Proxy)

클라이언트가 서버에 직접 접근하지 않고 프록시가 대신 요청을 보내는 방식
주로 사용자가 IP를 숨기거나, 차단된 사이트에 우회 접근할 때 사용된다.

📍 흐름 : 클라이언트 → 정방향 프록시 → 서버

2️⃣ 리버스 프록시 (Reverse Proxy)

서버 앞단에 위치해서, 클라이언트 요청을 대신 받고 실제 서버로 전달하는 방식
서버 정보를 숨기고, 로드 밸런싱, 캐싱, 접근 제어 역할까지 담당한다.

📍 흐름 : 클라이언트 → 리버스 프록시 → 백엔드 서버

3️⃣ 투명 프록시 (Transparent Proxy)

사용자가 프록시를 쓰고 있다는 걸 모른 채 동작하는 방식
공공 와이파이, 회사, 학교에서 인터넷 사용을 통제하거나, 트래픽 모니터링에 자주 사용된다.

📍 흐름 : 클라이언트 → (알지 못하는 상태로) 투명 프록시 → 서버


0개의 댓글