2 minute read

1. 웹 캐시

웹 캐시는 웹 페이지, 이미지, 스크립트 등의 웹 리소스를 임시로 저장하여 동일한 리소스에 대한 후속 요청 시 원본 서버가 아닌 캐시에서 제공하는 기술입니다. 개발자는 웹 캐시를 통해 시스템 성능과 사용자 경험을 향상시킬 수 있습니다.

웹-캐시

웹 캐시의 주요 이점

  • 서버 부하 감소: 반복되는 요청을 캐시에서 처리함으로써 원본 서버의 부하를 줄입니다.
  • 네트워크 트래픽 감소: 원본 서버와의 불필요한 통신을 줄여 대역폭을 절약합니다.
  • 응답 시간 단축: 캐시된 리소스는 더 빠르게 제공되어 사용자 경험이 향상됩니다.
  • 가용성 향상: 원본 서버가 다운되더라도 캐시된 콘텐츠는 계속 제공될 수 있습니다.

캐시 제어 헤더

개발자는 HTTP 응답에 캐시 제어 헤더를 설정하여 리소스의 캐싱 동작을 제어할 수 있습니다:

  • Cache-Control: 리소스의 캐싱 정책을 정의합니다.
    Cache-Control: max-age=3600, public
    
  • ETag: 리소스의 특정 버전을 식별하는 토큰입니다.
    ETag: "33a64df551425fcc55e4d42a148795d9f25f89d4"
    
  • Last-Modified: 리소스가 마지막으로 수정된 날짜와 시간을 나타냅니다.
    Last-Modified: Wed, 21 Oct 2023 07:28:00 GMT
    
  • Expires: 리소스가 만료되는 날짜와 시간을 나타냅니다(Cache-Control이 우선함).
    Expires: Wed, 21 Oct 2023 08:28:00 GMT
    

조건부 요청

클라이언트는 조건부 요청을 사용하여 캐시된 리소스가 여전히 유효한지 확인할 수 있습니다:

  • If-Modified-Since: 서버는 지정된 날짜 이후에 리소스가 변경된 경우에만 리소스를 반환합니다.
    If-Modified-Since: Wed, 21 Oct 2025 07:28:00 GMT
    
  • If-None-Match: 서버는 ETag가 일치하지 않는 경우에만 리소스를 반환합니다.
    If-None-Match: "33a64df551425fcc55e4d42a148795d9f25f89d4"
    


2. 프록시 서버의 개념과 종류

프록시 서버는 클라이언트와 서버 사이에서 중개자 역할을 하는 서버입니다.

포워드 프록시 (Forward Proxy)

포워드 프록시는 클라이언트 측에 위치하여 클라이언트를 대신해 요청을 전달합니다.

포워드-프록시

주요 특징:

  • 클라이언트는 포워드 프록시에 직접 요청을 보냅니다.
  • 목적지 서버는 요청이 프록시에서 왔다는 것만 알고, 실제 클라이언트를 알지 못합니다.
  • 클라이언트의 IP를 숨기고 익명성을 제공합니다.

활용:

  1. 접근 제어: 기업 네트워크에서 특정 웹사이트 접근을 제한하거나 허용할 수 있습니다.
  2. 콘텐츠 필터링: 유해 콘텐츠나 악성 코드 필터링에 사용됩니다.
  3. 지역 제한 우회: 지리적 제한이 있는 콘텐츠에 접근할 수 있게 합니다(VPN과 유사).
  4. 캐싱: 자주 접근하는 리소스를 캐싱하여 성능을 향상시킵니다.

리버스 프록시 (Reverse Proxy)

리버스 프록시는 서버 측에 위치하여 클라이언트로부터의 요청을 적절한 백엔드 서버로 전달합니다.

리버스-프록시

주요 특징:

  • 클라이언트는 직접 원본 서버에 연결하는 것처럼 요청을 보냅니다.
  • 클라이언트는 리버스 프록시와 통신하고 있다는 사실을 모릅니다.
  • 백엔드 서버의 구조와 아키텍처를 클라이언트로부터 숨깁니다.

활용:

  1. 로드 밸런싱: 여러 백엔드 서버에 요청을 분산하여 부하를 균등하게 분배합니다.
  2. SSL 종료: HTTPS 연결을 처리하고 백엔드 서버로는 HTTP로 요청을 전달하여 백엔드 서버의 부하를 줄입니다.
  3. 캐싱: 자주 요청되는 콘텐츠를 캐싱하여 응답 시간을 단축하고 백엔드 서버의 부하를 줄입니다.
  4. 보안 강화: 백엔드 서버를 직접적인 공격으로부터 보호하고, WAF(Web Application Firewall)와 결합하여 보안을 강화할 수 있습니다.
  5. API 게이트웨이: 마이크로서비스 아키텍처에서 클라이언트 요청을 적절한 서비스로 라우팅합니다.

프록시 서버 구현체

자주 사용하는 프록시 서버 솔루션들은 Nginx, Apache HTTP Server, HAProxy, Varnish 등이 있습니다. 여기서는 제가 사용해본 Nginx만 언급합니다.

Nginx

  • 웹 서버 및 프록시 서버
  • 적은 메모리 사용량으로 대량의 동시 연결 처리 가능
  • 정적 콘텐츠 제공, 로드 밸런싱, 캐싱 기능 제공
  • 구성 예시:
    server {
        listen 80;
        server_name example.com;
          
        location / {
            proxy_pass http://backend_servers;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_cache my_cache;
            proxy_cache_valid 200 302 10m;
            proxy_cache_valid 404 1m;
        }
    }
    

Leave a comment