이번 포스팅에서는 Cache에 대한 개념과 왜 필요한지에 대해서 알아보겠다.
캐시가 무엇이고 왜 쓰이는지에 대해서 알기위해 몇 가지 기본 지식들을 먼저 알아보자.
메모리 계층 구조는 필요에 따라 여러가지 종류로 나눈 것을 말하며 간단하게 나타내면 아래와 같이 나타낼 수 있다.
메모리 계층 구조는 몇 가지 특징을 가지고 있다.
파레토 법칙은 이탈리아 경제학자인 빌브레도 파레토가 발견한 현상으로 전체 결과의 80%는 상위 20%에 의해 발생한다는 것을 말한다.
자주 쓰이는 데이터는 시간적 혹은 공간적으로 몰려 있을 가능성이 높다.
위의 개념들을 가지고 있다고 가정하고, 캐시의 필요성에 대해 한 번 생각해보자.
사용자가 동일한 데이터를 요청할 때마다 새로 데이터를 가져와 전달한다면 비효율적이지 않을까?
-> 자주 쓰이는 데이터를 특정 저장소에 저장하고, 요청이 왔을 때 바로 전달해주면 중복되는 처리과정을 반복하지 않아도 된다.
저장소로 캐시를 사용한다면 훨씬 빠른 속도로 사용자에게 응답을 줄 수 있지 않을까?
캐시는 속도가 빠른 대신 용량이 적다는 문제점이 있지 않을까?
-> 파레토 법칙을 적용시켜본다면 자주 사용하는 20%를 캐시에 저장한다면 80%의 일을 아주 빠르게 처리할 수 있게 되고, 이는 적은 용량으로도 많은 요청을 처리하기 때문에 매우 효율적이라고 볼 수 있지 않을까?
개인적인 생각으로는 위와 같은 이유로 캐시
를 사용한다고 생각한다.
또한, 캐시의 쓰임을 생각했을 때 내가 내린 캐시의 정의는 나중에 필요할 수도 있는 무언가를 저장하였다가 신속하게 가져다 쓸 수 있는 보관장소
라고 할 수 있을 것 같다.
CDN (Content Delivery Network)
youtebe를 예로 들어보겠다.
이처럼 세계 각지의 캐시 서버를 두어 전송속도를 높이고 부하를 분산하는 시스템을 CDN이라고 한다.
이 외에도 웹 캐시, 브라우저 캐시가 있다. 캐시가 사용되는 사례에 대해서는 다음 포스팅에서 자세하게 다루겠다.