본문 바로가기
OS

웹 캐싱 기법

by creatingeveryday 2023. 4. 12.

웹 캐싱

  • 웹 캐싱이란 웹 사용자에 의해 빈번히 요청되는 데이터를 사용자와 지리적으로 가까운 웹캐시 서버에 보관해 빠른 서비스를 가능하게 하는 기법을 말한다.
  • 캐싱(caching) 기법은 저장장치 계층 간의 속도 차이를 완충시켜 주기 위해 컴퓨터 구조, 운영체제, 데이터베이스 등의 분야에서 각각 캐시 메모리, 페이징 기법, 버퍼링 기법등으로 널리 연구되어 왔다.
  • 1990년대 중반부터는 웹의 보편화와 콘텐츠 전송 네트워크(CDN) 서비스의 활성화로 인해 단일 시스템 내에서 속도 차가 있는 저장장치 간에 이루어지는 캐싱 기법뿐 아니라 원격지의 객체를 캐싱하는 기법의 중요성이 커지고 있다.
  • 웹의 인기가 높아감에 따라 네트워크의 병목현상과 그로 인한 웹서비스의 오랜 지연시간문제 등이 점점 더 심각해져 가는 추세이며, 이를 완화시키기 위해 다양한 각도에서의 웹캐싱 기법에 관한 연구가 활발히 이루어졌다.
  • 캐싱 시스템 성능
    • 캐시 교체 알고리즘
      • 캐시 교체 알고리즘은 한정된 캐시 공간을 가지고 사용자들의 지속적인 요청을 처리하기 위해 어떠한 객체를 캐시에 보관하고 어떠한 객체를 캐시에서 삭제할지 온라인으로 결정한다.
    • 일관성 유지 기법
      • 캐시에 보관된 웹 객체는 근원지 서버에서 변경될 수 있으므로 캐싱 시스템은 통상적으로 일관성 유지 기법을 필요로 한다.
      • 일관성 유지 기법은 사용자가 요청한 웹 객체가 캐싱되어 있는 경우 이 객체가 근원지 서버에 있는 객체와 동일한지를 확인해서 사용자에게 최신의 정보를 전달하기 위해 필요하다.

웹 캐시의 교체알고리즘

  • 캐시 교체 알고리즘은 미래의 참조를 미리 알지 못하는 상태에서 한정된 캐시 공간에 보관하고 있을 객체와 삭제할 객체를 동적으로 결정하는 온라인 알고리즘이다.
  • 웹 캐싱에서는 객체를 가지고 있는 근원지 서버의 위치 및 특성에 따라 객체를 캐시로 읽어오는 비용이 균등하지 않고 하나의 URL에 대응하는 파일 단위로 캐싱이 이루어지기 때문에 캐싱 단위의 크기도 균일하지 않다.
  • 전통적인 캐싱 환경에서는 사용자가 요청한 객체가 캐시에 존재하는 경우 객체의 크기와 인출비용이 균일하기 때문에 그 효용이 모두 동일하므로 캐시 알고리즘의 목표는 참조 가능성이 높은 객체를 캐시에 보관해 캐시 적중률을 높이는 것으로 충분했다.
  • 그러나 웹 캐싱에서는 객체들의 크기와 인출비용이 균일하지 않기 때문에 객체들의 참조 가능성과 이질성을 함께 고려해서 객체들의 가치를 평가해야 한다.
  • 어떻게 참조 가능성을 예측할 것인가?
    • 최근 참조 성향(시간지역성)과 참조 횟수(객체의 인기도)에 근거하여 참조 성향을 모델링할 수 있다.
    • LRU
    • LFU
    • LRU-K
    • LRFU
  • 웹캐싱 알고리즘은 시간지역성의 관점에서 객체의 직전 참조 시각을 활용한다. 참조 인기도 측면에서는 일부 알고리즘의 경우 객체의 참조 횟수를 이용하고 다른 부류는 여기에 노화 기법을 추가해 오래전에 이루어진 참조에 대해서 참조 횟수를 계산할 때 가중치를 줄여나가는 방식으로 캐시 오염을 방지한다.
  • 객체의 이질성에 대한 고려
    • 객체를 캐시에 보관하고 있을지 여부를 결정하는 가치평가 기준은, 객체의 참조 가능성에 의한 가치와 캐시에서 적중될 경우 실제로 절약할 수 있는 비용을 동시에 고려해야 한다.
  • 알고리즘의 시간 복잡도
    • 캐시 교체 알고리즘이 실제 시스템에 유효하게 사용되기 위해서는 시간 복잡도 측면에서 현실성이 있어야 한다.
    • 일반적으로 캐시 내에 있는 객체의 수 n개에 대해 시간 복잡도 측면에서는 캐시 운영에 드는 시간이 O(log n)을 넘지 않는 것이 바람직하다.

웹캐시의 일관성 유지 기법

  • 캐싱된 웹 객체가 근원지 서버에서 변경될 수 있으므로 웹캐시에는 사용자에게 유효한 정보를 전달하기 위한 일관성 유지 기법이 필요하다.
  • polling-every-time
    • 캐시 내에 이미 존재하는 객체에 대한 요청이 있을 때마다 근원지 서버에 객체의 변경 여부를 확인하는 방법이다.
  • invalidation
    • 근원지 서버가 자신의 객체를 캐싱하고 있는 모든 프락시서버를 기록해 두었다가 해당 객체가 변경된 경우 해당 프락시서버들에 변경사실을 알려주는 방법이다.
  • adaptive TTL
    • 캐시 내에 이미 존재하는 객체에 대한 요청이 있을 때, 해당 객체에 대한 최종 변경 시각과 최종 확인 시각을 고려해서 변경되었을 가능성이 높다고 판단되는 경우에만 근원지 서버에 변경 여부를 확인하는 방법이다.
  • 대부분의 일반적인 프락시서버에서는 약한 일관성 유지기법인 adaptive TTL 방법을 주로 사용한다.

웹캐시의 공유 및 협력 기법

  • 웹 캐싱의 효과를 극대화하기 위해서는 웹캐시 간의 공유 및 협력 기법이 필요하다.
  • 인터넷 캐시 프로토콜(ICP)
    • 동료 프락시캐시들 사이에서 웹 객체의 검색 및 전송을 지원하기 위한 프로토콜이다.
    • 요구된 웹 객체를 캐싱하지 않은 경우 ICP에서는 모든 동료 프락시들에게 ICP질의를 멀티캐스트 해서 누가 요청된 웹 객체를 가지고 있다는 답신을 보내오면, ICP 질의를 보냈던 프락시는 객체를 가지고 있는 동료 프락시에게 HTTP 요청을 보내어 해당 객체를 받아온 후 사용자에게 전달한다.
    • ICP는 공유 웹 캐시들 간에 객체의 위치를 확인하기 위한 프로토콜로서 HTTP에 비해 매우 부담이 적은 프로토콜이다.
  • 캐시 배열간 경로 지정 프로토콜(CARP)
    • 공유 웹 캐시들에 동일한 웹 객체들이 중복저장되는 것을 막기 위해 URL 공간을 분할해, 각각의 캐시는 자신에게 배정되는 객체들만을 캐싱하게 한다.
  • 디렉토리 기반 프로토콜
    • 공유 웹 캐시에 저장된 객체들의 위치 정보를 디렉토리에 유지함으로써 ICP 프로토콜의 멀티캐스트 부담을 없애고자 한다.
    • 하지만 디렉토리의 유지 및 관리에 또 다른 부담이 생기게 된다.
    • 디렉토리는 공유 프락시 자체 또는 별도의 디렉토리 서버에 구현하게 되며 디렉토리 서버의 부담을 줄이기 위해 여러개의 디렉토리 서버를 두기도 한다.

웹캐시의 사전인출 기법

  • 웹서비스의 응답 지연시간을 줄이기 위해서 사용자에 의해 아직 요청되지 않은 객체를 미리 받아오는 사전 인출 기법의 중요성이 증가하고 있다.
  • 예측 사전인출 기법
    • 웹페이지들 간의 관계 그래프 등을 구성해 하나의 웹페이지가 참조되었을 때 새로운 웹페이지가 참조될 확률을 과거의 참조 기록을 통해 예측하고 이 확률을 기반으로 사전인출을 수행하는 방법이다.
  • 대화식 사전인출 기법
    • 사용자가 HTML 문서에 대한 요청을 했을 때 웹캐시는 캐싱하고 있던 HTML 문서를 미리 파싱해 그 문서에 포함되거나 연결된 웹 객체를 미리 받아와서 사용자의 후속 요청에 곧바로 전달하는 방법이다.
  • 유효성의 사전확인 기법도 연구도 이루어지고 있다.
    • 캐싱된 객체의 유효성을 미리 확인해 두었다가 사용자가 해당 객체의 요청 시 웹서버에 변경 여부를 확인하지 않고 곧바로 보내주는 방법을 말한다.

동적 웹 객체의 캐싱 기법

  • 동적 웹 콘텐츠에 대한 웹 캐싱은 정적 웹 콘텐츠의 캐싱에 비해 데이터 관리에 어려움이 따른다.
  • 요청받은 내용에 대해 프로그램을 실행한 후 그 결과물을 보내주어야 하기 때문이다.

'OS' 카테고리의 다른 글

디스크 관리  (0) 2023.04.07
가상 메모리  (0) 2023.04.01
메모리 관리  (1) 2023.03.26
CPU 스케줄링  (0) 2023.03.18
프로세스 관리  (0) 2023.03.11

댓글