[CS] 캐싱과 캐싱 전략

OROSY·2022년 2월 14일
0

Computer Science

목록 보기
3/3
post-thumbnail

캐싱(Caching)

오늘도 컴퓨터 공학 지식에 대해서 알아보겠습니다. 현재 회사 내에서는 자바스크립트 스터디를 진행하고 있으며, 업무적으로는 리액트로 새로운 프로젝트를 진행 중에 있습니다.

이번에는 캐싱에 대해서 알아보도록 하겠습니다. 모두 아시는 것처럼 캐싱(Caching)은 캐시(cach)에서 파생된 말이라고 할 수 있습니다.

캐시(Cache)

  • 지역성(locality)을 이용하여 데이터 접근 속도를 빠르게 하기 위한 메모리 계층입니다.
  • 캐시 메모리: 실제 메모리와 CPU 사이에서 빠른 전달을 위해 미리 데이터들을 저장해두는 좀 더 빠른 메모리
  1. 시간 지역성
  • 데이터의 읽기/쓰기를 위해 특정 메모리가 사용됐을 때, 가까운 시일 내에 해당 메모리가 다시 사용될 가능성이 높다는 뜻입니다.
  1. 공간 지역성
  • 공간 지역성은 특정 데이터와 가까운 주소가 순서대로 접근되는 경우를 말합니다. 한 메모리 주소에 접근할 때 그 주소뿐만 아니라 해당 블록을 전부 캐시에 가져옴으로써 공간 지역성의 효율을 높입니다.
  1. 순차적 지역성
  • 분기가 발생하는 비순차적인 실행이 아닌 이상, 명령어들이 메모리에 저장된 순서대로 실행된다는 특성을 이용하여 순차적일수록 데이터가 사용될 가능성이 높다는 것입니다.

  • CPU와 RAM의 속도 차이는 병목 현상(bottleneck)을 유발하며, 이는 성능 저하의 원인이 됩니다.
  • 캐시는 CPU와 램(DRAM) 사이에서 중간자 역할을 하며, 자주 사용되는 데이터를 캐시에 저장하면 CPU가 빠르게 꺼내어 사용할 수 있습니다.
  • 캐시 히트(cache hit): CPU에서 요청한 데이터가 캐시 안에 있을 때
  • 캐시 미스(cache miss): CPU에서 요청한 데이터가 캐시에 존재하지 않을 때

캐싱(Caching)

캐싱이란 위에서 말한 캐시 영역으로 데이터를 가져와서 접근하는 방식을 말합니다. 예를 들면, 속도가 느린 디스크의 데이터를 속도가 빠른 메모리로 가져와서 메모리상에서 읽고 쓰는 작업을 수행합니다. 이것이 캐싱입니다.

또한, 위에서 말한 데이터 접근의 지역성이라는 특성을 이용해서 자주 접근될 데이터를 더 빠른 속도의 메모리 상에 가지고 와서 연산을 수행하여 성능을 높이는 것이 캐싱의 목표입니다.

네트워크에서 캐시는 로컬에 파일을 미리 받아놓고, 그 내용을 보거나 웹 서버에서도 매번 로딩을 해야하는 파일들을 로딩해두고, 응답해주기도 합니다. 데이터 베이스를 매번 확인해야 하는것도 캐시서버를 이용한다면 빠른 응답을 해줄 수 있습니다.

캐시의 원리를 이용한 캐시 서버를 활용하여 CDN같은 서비스도 할 수 있습니다. CDN은 컨텐츠를 딜리버리 해주는 서버입니다. 아주 먼곳에 있는 파일을 매번 가져와야 한다면 네트워크 구간이 멀어서 실패율도 있고, 전송 속도가 느리고, 오래 걸릴 수 있습니다. 이를 자주 쓰는 파일들을 가까운 지역의 서버에 올려 놓습니다. 그렇게 되면 빠른 접근이 가능해집니다. 캐시라는 개념은 동일하며, 그것을 컴퓨터 내부에서 쓰느냐 웹서버와 클라이언트 사이에서 쓰느냐, 네트워크에서 파일을 전송시도 다양하게 사용이 가능합니다.

1. 캐싱에 적합한 데이터

  • 반복적이고 동일한 결과가 나오는 기능의 반환값
  • 업데이트가 자주 발생하지 않는 데이터
  • 자주 조회되는 데이터

2. 캐싱 전략

1) Look aside cache (Lazy Loading)

  • 읽기 데이터를 캐시에서 찾고, 없으면 DB에서 찾습니다.
  • Look aside cache는 캐시를 한번 접근하여 데이터가 있는지 판단한 후, 있다면 캐시의 데이터를 사용하며, 없다면 실제 DB 또는 API를 호출하는 로직으로 구현합니다. 대부분의 Cache를 사용한 개발이 해당 프로세스를 따릅니다.

2) Write-Through

  • 데이터를 추가하거나 업데이트를 할 때 캐시에 동시에 업데이트하는 전략
  • 읽기 작업을 할 때에는 DB에 접근할 필요 없이 캐시만 읽으면 됩니다.

3) Write-back

  • 데이터를 캐시에 먼저 저장해놓고 일정 기간 혹은 일정한 크기가 됐을 때, 캐시에 모여있는 데이터를 DB에 저장한 후 캐시에 있던 데이터를 삭제하는 방식]

참고 사이트

캐시캐싱에 대해서 간단하게 알아보았습니다. 스택과 큐의 비교도 중요하지만, 두 자료구조 모두 메모리 안에 데이터들을 효율적으로 관리하게 도와주는 자료 참조 방식이라는 점을 기억하는 것이 중요할 것이라 생각합니다.

더 자세한 사항은 아래에 참고한 사이트를 참고해주시기 바라겠습니다.

Caching (캐싱) 이란?
캐시 & 캐싱
캐시/캐싱이란?

profile
Life is a matter of a direction not a speed.

0개의 댓글