CS/내 생각 정리

[CS] 캐싱(Caching) = 배민 한집배달

아모르AMORE 2024. 1. 5. 14:02

 

🌟 읽기 전에 🌟

이 글은 쉬운 이해를 목적으로 하여 비유와 예시를 활용하여 작성되었습니다.

틀린 내용이 있을 수 있습니다 !

 

 

안녕하세요? 

 

오늘은 '캐싱' 이라는 기술이 무엇인지에 대해 일상에서 많이 사용되는 어플, '배달' 을 비유로 들어 설명해 보겠습니다.

 

'캐싱' 은 여러 예시를 가질 수 있는데, 그 중에 캐시 메모리를 배달에 빗대어 설명하겠습니다.

 

우리가 집에 있을 때, '마라탕' 을 먹고 싶다고 가정해봅시다.

 

밖에는 비가 많이 와서, 배달팁을 내고 배달을 먹어야지 라고 생각했다고 합시다.

 

그랬을 때 ...

 

CPU 에, 마라탕CPU 가 필요로 하는 데이터 라고 생각해 보겠습니다.

 

그런데 이 때, 배달을 받을 수 있는 방식이 두 가지가 있습니다.

 

일반배달은 시간이 60분, 비용이 1,000원 든다고 합시다. 긴 시간과 저비용이 듭니다.

 

한집배달은 시간이 20분, 비용이 5,000원 듭니다. 짧은 시간과 고비용이 듭니다.

 

캐시 메모리 = 한집배달에 비유 (혼자 공부하는 컴퓨터구조 + 문법체제 (한빛미디어, 강민정) 에서 영감 받음)

 

캐시 메모리를 한집배달에 비유한 이유는, 캐시 메모리가 일반 메모리 (DRAM) 에 비해 가격이 비싸고, CPU 와의 거리가

 

가깝고 속도가 빠르다는 특성을 빗댄 것입니다.

 

동일한 데이터 (= 특정한 작업의 결과물) 을 CPU 가 얻어서 사용하기 위해서, 

 

처음에는 일반 메모리에 접근하여 결과물 (원하는 데이터) 를 가져오는 과정이 필요합니다.

 

그런데 그 결과물을 캐시메모리에 저장한 후에는, 동일한 요청이 들어왔을 때 CPU 가 캐시메모리에 접근하여 바로

 

데이터를 가져올 수 있어서 일반 메모리 (DRAM) 에 접근하는 시간을 줄여 애플리케이션의 성능을 향상시킬 수 있습니다.

 

이를 그림으로 표현하면 아래와 같습니다.

 

 

 

캐싱 내용 설명 & 예시 (생활코딩 캐슁 페이지 참고)

 

 

 

캐싱 이란, 곧 " 저장한다 " 는 뜻입니다. 

 

즉 오랜 시간이 걸리는 작업의 결과를 여러 번 하지 않고, 최초 1회를 제외한 나머지는 다른 메모리에 저장하여,

 

시간과 비용을 아껴, 결론적으로 애플리케이션의 성능 향상을 도모하는 방법입니다.

 

캐싱 의 예시로는,

 

(i) 족보를 외워서 답안을 작성하는 것

 

(ii) 브라우저에 동일한 요청이 들어올 경우 브라우저가 매번 서버에 요청을 보내지 않고 로컬 스토리지에 저장해둔 이미지를 사용하는 것.

 

(iii) CPU 가 연산 결과를 캐시 메모리에 저장해두고 사용하는 것이 있습니다.

 

 

 

 

캐싱의 장단점

 

https://velog.io/@xogml951/%EC%BA%90%EC%8B%9C-%EC%A0%84%EB%9E%B5%EA%B3%BC-%EA%B0%9C%EB%85%90#:~:text=%2D%20write%20%ED%95%A0%EB%95%8C%EC%97%90%20cache%EC%97%90%EB%8A%94%20%EC%93%B0%EC%A7%80%EC%95%8A%EA%B3%A0%20%EB%A9%94%EB%AA%A8%EB%A6%AC%EC%97%90%EB%A7%8C,%EB%8D%94%20%EB%96%A8%EC%96%B4%EC%A7%88%20%ED%99%95%EB%A5%A0%EC%9D%B4%20%EB%86%92%EB%8B%A4. 참고