본문 바로가기
츄Log/기타 끄적

캐시란? 캐시에 대하여

by 츄츄🦭 2024. 1. 5.
728x90

출처 : https://en.wikipedia.org/wiki/Cache_(computing)

 

캐시는 일정 기간동안 임시로 데이터 하위집합을 저장하기 위한 fast data storage layer입니다.

 

캐시는 어디에나 존재합니다.

하드웨어 캐시(ex. L1, L2), 페이지 캐시, 데이터베이스 캐시, API캐시, DNS캐시, 브라우저 캐시 등등..

Cache 는 ubiquitous 합니다. 

 

캐시가 필요한 이유는 무엇일까요?

캐시는 origin data source보다 빠르므로 데이터 검색 속도를 높입니다. 또한 캐시는 복잡하거나 resource intensive한 작업을 미리 수행하여 데이터 조회를 효율적으로 만들 수 있습니다.

 

보통 우리는 생성 비용이 높거나, 잘 변하지 않는 데이터를 TTL을 두고 캐시해 두곤 합니다.

결과적으로 서버 혹은 데이터베이스로의 로드를 줄일 수 있고, end-user에게 latency를 줄여 데이터를 제공할 수 있습니다.

 

캐시의 좋은 점과 마찬가지로 매우 유의해야할 부분이 있습니다.

바로 Cache Invalidation, 캐시 무효화입니다. 

 

캐시는 절대로 source of truth가 아닙니다. 그러므로 언제든 dirty/stale data가 될 수 있고, 적절한 시점에 캐시를 무효화해줘야 합니다.

그렇지 않으면 일관성이 없거나 잘못된 정보가 서빙됩니다. 

 

하지만 이 무효화는 참 어려운 문제입니다.

왜냐하면 캐시 데이터를 제공하는 모든 입력에 연결된 의존관계에 대해 생각해줘야 합니다. 

언제나 단일 입력이 변경된다면 캐시가 stale하거나 invalid해질 가능성이 있기 때문입니다.

또한 캐시 업데이트 또는 무효화 전략 중 미묘한 부분 하나 놓쳤을 때 프로그램은 계속 작동할 것이므로 문제를 추적하는 것이 어렵습니다.

아예 작동하지 않는다면 문제 발견과 대처가 빠르겠지만, 대부분 작동하는 상황에서는 버그를 찾고 해소하기 어렵습니다.

(심지어 버그가 있는지도 모르고 지나갈 수 있습니다.)

 

어쨌든, 캐시는 매우 유용하고 굉장히 많이 사용하지만 invalidation 시기와 방법을 이해하고 적절한 전략을 구축하는 것이 중요합니다. 

 

 


 

좋은 의견, 다른 의견이 있으면 언제든 댓글 부탁드립니다.

 

관련 : https://chupin-tech.tistory.com/67

 

다양한 캐시 전략들

캐시는 일정 기간동안 임시로 데이터 하위집합을 저장하기 위한 fast data storage layer입니다. 캐시란? 캐시에 대하여 캐시는 일정 기간동안 임시로 데이터 하위집합을 저장하기 위한 fast data storage l

chupin-tech.tistory.com

 

728x90