박서희연구소

Caching(캐싱)이란? 본문

○ Programming [Basic]/Theory

Caching(캐싱)이란?

SEOHUI PARK 2023. 3. 31. 16:49
반응형

개요

Caching 은 애플리케이션의 Object 가 Cache 라는 임시 저장 영역에 저장되는 기술을 뜻한다.

  • Cache 자체는 메모리 내의 데이터 구조로 생각할 수 있음
  • Caching 기술은 비용과 시간이 많이 소요되는 작업이나, Static 한 웹 페이지, 백엔드 DB 의 Access 등 다양한 상황에서 활용이 가능
  • 동일한 정보를 가져오거나 비용이 많이 드는 반복되는 계산을 실행 해야 하는 요구 사항이 있을 때, Caching 을 활용해 중간 Cache  에 데이터를 저장 및 fetching  하는 작업의 용도로  활용할 수 있음 
  • 특히 데이터에 대한 빠른 Access 용도로 많이 활용
  • 적절한 Caching 은 성능을 향상시키고 리소스 사용량을 줄이며 응답성을 높일 수 있음
  • Cache 는 장치의 하드 드라이브 공간을 차지하므로, 더 많이 웹 사이트에 액세스하고 앱을 설치하면 필요한 메모리 양이 늘어남

Cache 의 종류

Cache 에는 여러 유형이 있으며 각각 다른 용도로 사용된다.

1. Memory Cache

3개의 카테고리로 나눌 수 있다.

  1. Primary Cache L1
  2. Secondary Cache L2
  3. Main Memory L3 Cache

위 Cache 중 일부는 CPU 와 직접 작동하고, 나머지는 데이터를 저장하고 필요할 때 쉽게 Access 할 수 있는 External Cache 이다.

 

[Primary Cache L1]

이 유형은 장치의 CPU 에 있는 프로세서의 일부로 매우 작고, 메모리의 범위는 2~64kb 이다.

Primary Cache 는 많은 데이터를 저장하도록 설계되지 않았으며, Random Access Memory 와 유사하게 작동한다.

  • 필요할 때 Instruction 에 Access 할 수 있도록 저장됨
  • Instruction 이 더이상 유용하지 않다면 새로운 Instruction 을 위해 삭제
  • 주요 이점으로는 프로세서와 거의 동일한 속도로 작동함

[Secondary Cache L2]

이 유형은 장치의 프로세서와 장치의 주 메모리 사이의 중개자로, 메모리의 범위는 256~512kb 이다.

  • Cache 누락이 발생하게되면 장치는 이 유형으로 이동하여 원하는 것을 찾을 수 있는지 확인
  • Cache Miss 는 Cache 에서 Instruction 을 꺼내려다가 실패한 것을 말함
  • Cache Miss 가 발생했을 때, Instruction 이 장치의 Primary Cache 에서 충분히 빨리 로드되지 않아, 대신 Secondary Cache 를 검색하게 되는 과정을 거침
  • 프로세서 외부에 보관되므로, high-speed bus 를 사용하여 연결해야 함

[Main Memory L3 Cache]

이 유형은 장치의 메인 메모리보다 빠르면서, CPU 로 부터 떨어져 저장되면서 붙여진 이름이다.

3가지 유형의 CPU 관련 Cache 중 가장 크다.

  • 1~8mb 사이에서 작동하는 경향이 있고, 이는 훨씬 더 많은 명령을 저장할 수 있음을 의미
  • Multicore 프로세서가 있는 경우 일반적으로 모든 코어를 동시에 처리

2. Web Cache

아마 자주 방문하는 웹 페이지가 이전에 방문한 적이 없는 페이지보다 빠르게 로드되는 경험을 느껴본 적이 있을 것이다.

Web Cache 는 필요한 정보에 빠르게 Access 할 수 있도록 브라우저, 웹 사이트 및 서버의 데이터를 저장한다.

만일 Web Cache 가 없다면, 브라우저는 웹 페이지에 Access 할 때마다 새로운 요청을 보내야 한다.

  • 정보가 이미 기기의 Cache 에 있는 경우 웹 사이트에서 Static Content 를 빠르게 전달할 수 있음
  • User 가 이전에 본 적이 없는 항목에 Access 할 때, Delay 가 발생함

다양한 종류의 Web Cache 지원으로 인해 브라우저에서 서버에 요청하는 수를 줄일 수 있다.

서버의 요청이 적을 수 록 로딩 시간이 빨라지고 웹 사이트 서버에 가해지는 부하가 줄어든다.

  1. Site Cache
  2. Browser Cache
  3. Micro Cache
  4. Server Cache

[Site Cache]

Page Cache 라고도 불리는 Site Cache 는 웹 사이트를 처음 방문할 때 웹 사이트에 대한 데이터를 저장한다.

  • 웹 사이트로 돌아가면 특정 요소를 더 빠르게 로드할 수 있도록 Site Cache 에서 저장된 데이터를 가져옴
  • Site Cache 에 저장된 파일을 사용하면 페이지에서 새로운 요청보다 더 빠르게 Static Web Content 를 표시할 수 있음
  • 웹 사이트가 Dynamic 할 수 록 Site Cache 를 덜 사용하므로, Static Content 가 많은 웹 사이트에 가장 적합
  • 웹 사이트 소유자는 파일이 Site Cache 에 즉시 지울 수 도, 잔여 시간을 결정하여 지울 수 도 있음

[Browser Cache]

웹 브라우저에 내장된 일종의 Site Cache 이며 마찬가지로 방문하는 대부분의 웹 사이트의 Cached Version 을 저장하므로, 브라우저가 웹 사이트를 더 빠르게 로드하도록 한다.

  • HTML, Multimedia Content, Image, CSS 와 같은 웹 사이트의 Element 를 저장하여 작동
  • 웹 사이트 Content 와 관련된 다른 파일과 그룹화하여 더 빠른 브라우저 동작을 만듬
  • 이미지와 Content 를 표시하기 위해 브라우저에서 다시 다운로드할 필요가 없기에 빠름
  • 검색 기록은 Browser Cache 에 저장되므로 삭제하여 검색 데이터를 지울 수 있음
  • 웹 사이트 소유자는 파일의 Browser Cache 에 잔여 시간을 결정할 수 있음

[Micro Cache]

Micro Cache 의 사용 예로 주식 웹 사이트를 들 수 있는데, 숫자는 계속 바뀌지만 그래프와 표 다이어그램은 그대로 유지된다.

  • Dynamic Content 의 Static Element 를 저장하는 것에 사용되며 최대 10초동안 파일을 저장
  • Static Element 로 빠르게 변화하는 Content 를 제공
  • Static Element 는 10초마다 Micro Cache 에 저장되고 새로 고쳐지며, 더 많은 Dynamic Element 는 필요할때만 변경

[Server Cache]

여러 유형의 Cache Memory 를 포괄하는 용어로 Object Caching, Opcode Caching, CDN(Content Delivery Networ k) Caching 등을 이야기 한다.

자주 Access 하는 데이터를 웹 사이트 서버에 저장하는 방식이다.

  • Server Cache 에 저장된 Content 는 요청 즉시 브라우저로 반환
  • 웹 사이트는 더 많은 트래픽을 처리하고, 서버의 부하를 줄이면서 Content 를 더 빠르게 전달할 수 있음
  • 서버를 통해 웹 사이트를 탐색하는 데 시간을 소비하지 않고 Cache 에서 데이터를 찾음

3. Applicaction/Software Caches

검색 기록, 비디오 썸네일이나 배경 이미지 같은 것을 저장하며, Content 가 무엇이든 대기 시간을 줄이고 사용자가 자주 Access 하는 효율적인 방법을 제공

4. Data Caching

사용자가 동일한 데이터 집합을 자주 요청하고, 해당 데이터가 시간이 지나도 변경되지 않는 상황에 데이터를 더 빨리 제공하기 위해 사용할 수 있다.

웹 또는 애플리케이션 서버에서 유지 관리되며, 서버에 대한 비용이 감소되므로 비용에 효율적이다.

단, 개발자가 보유하고 있는 데이터가 오래되었거나 쓸모 없게 된 경우 Cache 를 지울 수 있는 정책을 스스로 만들어야 한다.

5. Application/Output Caches

CDN 과 같은 네트워크에서 자주 사용하는 유형이며, 많은 Contentment Management Software Package 에 내장되어 있다.

서버 수준에서 작동하며, Static Content 를 저장해 서버의 Overhead 를 줄일 수 있다.

Static Page 를 더 빠르게 로드할 수 있도록 원시 HTML 을 Cache 해 웹 페이지 로딩 시간을 최대 50%까지 줄일 수 있다.

6. Distributed Caching

거대한 대용량 시스템을 보유하고 있는 상황에 사용되며, 여러 분산 DB 서버에 데이터를 저장할 수 있다. 각 DB 서버의 데이터는 서로 다른 웹 서버에 Caching 된다.

다른 Cache 와 다르게 저장 공간이 넉넉하며, 용량이 부족할 경우 서버를 늘리면 되고, 대용량 트래픽 처리에 좋은 방법이다.

 

- 끝 -

반응형

'○ Programming [Basic] > Theory' 카테고리의 다른 글

Big-O(빅오) 표기법이란?  (0) 2023.03.30
Comments