[Cache] 캐시를 사용하는 이유

ESH'S VELOG·2023년 11월 7일
1

📠Cache

🎡 정의

자주 사용하는 데이터나 값을 미리 복사해 놓는 임시 장소
저장 공간이 작고 비용이 비싼 대신 빠른 성능을 제공
즉, DBMS 혹은 서버에 요청하는 것이 아니라 Memory에 데이터를 저장하였다가 불러다 쓰는 것을 의미한다.

📡 사용 사례

  • 사용할 일이 잦은 데이터
    ex) 회원가입 시 메일 확인을 위한 코드, 사이트 이용 시 계산 후 돌려주는 내용 등
  • 반복적으로 동일한 결과를 돌려주는 경우
    ex) html header, footer, 등

📄 사용 방법

  • Cache 저장 공간에 활용할 데이터를 미리 복사해 놓은 후 필요 시 빠르게 데이터를 전송 및 조회할 수 있다.
  • Cache Hit & Cache Miss
    원하는 데이터가 캐시에 존재할 경우 해당 데이터를 반환하는 것을 Cache Hit이라 하며, 캐시에 존재하지 않을 경우 DBMS or 서버에 요청을 해야하는 것을 Cache Miss라 한다. 즉 Cache Hit율이 높을 수록 Cache를 잘 활용하는 것이라 할 수 있겠다.
  • TTL(Time To Live) : 데이터 만료 시간(Expire Time)
    Cache의 성능이나 프라이버시 수준을 향상시키기 위해 사용되는 방식.
    타임스탬프의 형태로 데이터에 포함되며, 정해진 유효시간이 지나면 데이터는 폐기된다.

📀 저장 공간의 특징

일반적으로 RAM(Random Access Memory), InMemory 같이 빠르게 액세스할 수 있는 하드웨어에 저장되며, 소프트웨어 구성 요소와 함께 사용될 수 있다.

💾 종류

  • CPU Cache
    대용량의 메인 메모리 접근을 빠르게 하기 위해 CPU 칩 내부나 바로 옆에 탑재하는 작은 메모리.
  • disk Cache(=디스크 버퍼)
    입출력되는 데이터를 저장하는 작은 메모리
    미리 읽기, 속도 조절, 쓰기 가속, 명령 큐의 용도로 사용된다.
  • etc Cache
    소프트웨어적으로 관리되는 캐시로 운영 체제 커널과 파일 시스템을 통해 관리된다. 예로 웹 브라우저는 최근 방문한 사이트를 캐시에 저장해 놓는다. 구글 검색 엔진은 검색 대상 사이트들의 내용을 캐시에 저장해 검색 엔진에 사용하기도 한다.
** 커널(kernel) **
운영 체제의 핵심이 되는 컴퓨터 프로그램으로, 시스템의 모든것을 완전히 제어한다. 
운영 체제의 다른 부분 및 응용 프로그램 수행에 필요한 여러 가지 서비스를 제공한다. 

📲 지역성(Locality)

  • 의미
    속도가 비교적 느린 데이터베이스에서 캐시로 데이터 접근이 시간적, 공간적으로 가깝게 일어나는 것을 의미한다.
    두 가지 지역성이 있는데 이를 고려하여 설계할 수록 캐시 적중율을 높일 수 있다.

  • 시간적 지역성
    특정 데이터가 한번 접근되었을 경우, 가까운 미래에 또 한번 데이터에 접근할 가능성이 높은 것
    즉, 서비스에서 시간 내에 얼마나 많이 사용될 것인가에 대한 것이다.

  • 공간적 지역성
    특정 데이터가 가까운 주소에서 참조하게 되는 것을 의미한다.
    예를 들어, 배열은 순차적으로 데이터에 대한 접근이 이루어지며, 배열의 원소 하나하나는 메모리에 순차적으로 저장되고 메모리 주소 역시 순차적으로 참조하게 된다. 이를 공간적 지역성이 성립한다고 볼 수 있다.

⏰ 설계 시 유의할 점

캐시의 장점으로는 이미 계산되어져 있는 데이터를 빠르게 가져다 쓰는 것이기 때문에 반복적으로 동일한 결과를 반환해야 할 때 접근 시간과 계산시간을 절약할 수 있다. 단점으로는 메모리 저장공간은 용량이 작고 가격이 높다.
따라서 캐시 히트율과 시간적 지역성, 공간적 지역성, 데이터의 반복적인 행동과 사용빈도를 고려하여 설계해야 한다.

참고 자료
1) https://ko.wikipedia.org/wiki/%ED%83%80%EC%9E%84_%ED%88%AC_%EB%A6%AC%EB%B8%8C
2) https://ko.wikipedia.org/wiki/%EC%BA%90%EC%8B%9C
3) https://docs.aws.amazon.com/ko_kr/AmazonElastiCache/latest/red-ug/Strategies.html
4) https://mangkyu.tistory.com/69
5) https://aws.amazon.com/ko/caching/

profile
Backend Developer - Typescript, Javascript 를 공부합니다.

1개의 댓글

comment-user-thumbnail
2023년 11월 7일

좋은 글 감사합니다!

답글 달기