본문 바로가기

IT 지식

[1일 1로그 100일 완성 IT 지식] 캐시(cache)

해당 글 <캐시>에서 요약된 목차

  

2부. 하드웨어  

    015. 캐시가 뭔가요?

 

캐시 

 

프로그램을 실행할 때 프로세서는 필요한 데이터와 명령어를 주 기억 장치에서 인출하는 메모리 작업을 수행한다. 그런데 주 기억 장치는 용량이 큰 대신 속도가 느려 메모리 작업에 일정 시간이 소요된다. 그래서 프로그램을 실행할 때마다 주 기억 장치에 접근하는 것은 비효율적이다. 

 

이때 필요한 존재가 캐시다. 캐시는 용량이 작고 속도가 빠른 메모리로, 프로그램 실행에 사용된 데이터를 임시로 저장해둘 수 있다. 프로세서는 매번 주 기억 장치에 가지 않아도 되고, 프로그램은 메모리 작업을 기다릴 필요가 없어져 더 빨리 실행될 수 있다. 

 

'캐시'는 프로세서의 메모리를 부르는 이름이지만, 컴퓨터의 구성 요소 중 무언가가 다른 부품의 일 처리 속도를 높이는 데 도움을 주거나 데이터를 임시로 저장하는 일을 한다면 캐시라고 부를 수 있다. 

 

위키백과에 따르면 "캐시는 컴퓨터 과학에서 데이터나 값을 미리 복사해 놓는 임시 장소를 가리킨다"고 알려져 있다. 임시 장소라고 부르는 이유는 캐시의 데이터가 영구적으로 저장되지 않기 때문인 것으로 보인다. 캐시 메모리는 비싸기 때문에 데이터를 영구적으로 저장하면 많은 비용이 발생하므로 오래된 데이터는 주기적으로 삭제한다.  

 

캐싱

 

데이터를 임시로 저장하는 행위인 캐싱의 목적은 빠른 액세스를 돕는 것이다. 워드나 엑셀에 있는 '최근에 사용된 파일 목록'을 예로 들 수 있다. 사용자는 검색할 필요 없이 최근 작업하던 파일을 쉽게 찾을 수 있다.

 

또한 웹 브라우저의 캐시도 있다. 브라우저는 사용자가 방문했던 페이지의 로컬 사본을 저장하고 있다가 페이지 재방문이 이루어지면 해당 사본을 사용한다. 데이터를 다시 다운로드하는 것보다 그편이 빠르기 때문이다. 

 

최근에 사용된 정보는 곧 다시 사용될 가능성이 크다. 이 부분에서 큰 효과를 발휘하는 캐싱은 컴퓨터 작업이 더 빨라지게 만든다. 


Read me Seconds.

 

캐싱 활용 사례 - CDN 

 

CDN(Content Delivery Network, 콘텐츠 전송 네트워크)은 "웹 콘텐츠(HTML, 이미지, 오디오, 비디오)를 로딩 없이 안정적으로 배포하기 위해 지리적으로 분산된 서버들을 연결한 네트워크다."(참고자료 1)

 

웹 사이트의 콘텐츠를 가지고 있는 서버와 웹 사이트 이용자 간의 거리가 멀면 콘텐츠를 로딩할 때 시간이 오래 걸릴 수 있다. 거리가 먼 이유는 첫 번째로 인터넷 사용자들이 전 세계에 흩어져 있고 각 지역 사용자에게 데이터를 빨리 전송하기 위해 서버를 곳곳에 설치하는데[각주:1], 그러다 보면 멀리 떨어진 지역에 있는 서버에 접속하는 일이 발생하기 때문이다.  

 

미국에 있는 사람이 한국에 서버를 두고 있는 웹 사이트에 접속했다고 가정해 보자. 미국에서 한국 웹 서버에 데이터를 요청하고 응답을 받으려면 미국과 한국을 잇는 경로에 있는 "모든 라우터[각주:2]를 왕복으로 통과해야 한다. 

.

용량이 큰 이미지 파일이 다수 포함된다면 레이턴시[각주:3] 더 늘어나고 서버 과부하를 유발할 수 있다. 뿐만 아니라 대역폭[각주:4]소비와 그에 따른 비용도 많이 발생한다.

 

CDN은 비용적인 문제를 해결하고 서버를 원활히 실행하는 데 사용된다. CDN을 통해 호스트 서버에 있는 콘텐츠를 캐싱해 여러 곳에 분산되어 있는 서버에 저장하고, 사용자에게 더 가까이 있는 서버로부터 콘텐츠를 배포해 서버와 사용자 간의 물리적 거리를 단축한다. 

 

대표적인 서비스로 아마존 Cloudfront, Cloudflare가 있다.


참고 자료

  1. IBM, "CDN이란?", 링크
  2. Cloudflare, "CDN의 효과", 링크

용어 설명

  1. 서버를 곳곳에 설치하는 이유 : 서버와 사용자 간의  거리가 가까우면 데이터를 전송하기 위해 거쳐야 하는 네트워크 경로가 짧고 간단해지기 때문에 속도가 빨라진다. [본문으로]
  2. 라우터 : 서로 다른 네트워크 사이에서 통신 경로를 지정해 주고 데이터가 전송되도록 중간에서 중계해 주는 장치 [본문으로]
  3. 레이턴시 : 시스템에 데이터를 요청하는 시점과 시스템에서 그에 응답하여 데이터를 보내기 시작하는 시점 사이의 지연 시간 [본문으로]
  4. 대역폭 : 일정 시간 동안 전송할 수 있는 데이터의 양 [본문으로]