본문 바로가기
공부/CS, Network

캐시(cache)란?

by k1mwnjn 2023. 3. 29.

캐시란?

- 자주 사용하는 데이터나 값을 미리 복사해놓는 임시 저장소.

- CPU ↔ 메모리 사이의 데이터 전송 레이턴시 개선을 위해 사용되는 전략.

- 캐시에 데이터를 미리 복사해놓으면 계산이나 접근 시간 없이 더 빠른 속도로 데이터에 접근 가능.

 

캐시의 장점

- 빠른 데이터 액세스 : 데이터를 반복해서 액세스해야 하는 경우, 캐시에서 데이터를 읽으면 시간을 절약할 수 있음.

- 대역폭 절약 : 원본 데이터를 가져오는 것보다 캐시에서 데이터를 읽으면 대역폭을 절약할 수 있음. 원본 데이터에 대한 액세스는 네트워크 비용 및 I/O 비용이 들어가기 때문.

- 성능 향상 : 빠른 액세스와 대역폭 절약으로 인해 애플리케이션의 처리 속도가 빨라지며, 사용자 경험이 개선됨.

- 비용 절감 : 캐시를 사용하면 더 많은 하드웨어 리소스를 사용하지 않고도 성능을 향상시킬 수 있기 때문에 시스템 구축 및 운영 비용을 절감하는 데 도움이 됨.

 

캐시의 단점

- 일관성 문제(캐시 코히런스) : 원본 데이터가 업데이트되고 캐시에는 아직 반영되지 않은 경우, 캐시에 저장된 데이터가 원본 데이터와 일치하지 않아서 문제가 발생할 수 있음.

- 용량 제한 : 캐시의 용량은 제한되어 있기 때문에 많은 양의 데이터를 저장할 수 없음. 따라서 대규모 데이터 처리에 적합하지 않음.

- cache miss : 캐시에서 데이터를 찾을 수 없는 경우 원본 데이터에서 데이터를 읽어오는 것을 cache miss라고 하는데, 원본 데이터에서 데이터를 읽어와야 하기 때문에 성능 저하의 원인이 될 수 있음.

- 보안 문제 : 캐시에 저장된 데이터는 노출될 위험이 있는데 이는 캐시에서 데이터를 삭제하더라도 데이터가 완전히 삭제되지 않아 데이터 유출의 위험성이 존재할 수 있다는 것을 의미함.

- 추가 복잡성 : 캐시를 사용하면 시스템이 더 복잡해짐. 캐시 관리와 일관성 문제를 처리하는 코드를 작성해야 하기 때문인데 이는 코드 작성 및 유지보수를 어렵게 만듦.

 

프론트엔드 캐시 활용 방법

- 웹 브라우저 캐싱

 - 이전에 방문했던 페이지, 제목의 썸네일 등을 서버로 요청하지 않고 브라우저에 캐싱하여 빠르게 로드할 수 있다. 사용자는 바로 캐시메모리로 응답받을 수 있어 웹 서핑이 빠르다고 느끼고, 서버는 불필요한 요청을 받지 않아 과부하를 피할 수 있다.

- proxy

 - 웹 브라우저와 서버 사이에 proxy 라는 것을 두는 방식이다. proxy는 “대리인”이라는 뜻의 영어 단어로서, 중간에서 뭔가를 대신해 주는 것을 '프록시'라고 한다. 프록시의 경우 여러 컴퓨터로부터 요청을 받고 처리하다 보니 같은 데이터가 자주 접근될 확률이 높아져서 캐시의 성능이 좋아지고, 데이터를 캐시에서 반환하는 확률이 더 높아진다. (조직 내에서 접속하는 웹 사이트의 리소스들을 캐시하여 속도가 빨라지고 네트워크 사용량을 줄임)

- CDN(Content Delivery Network) 캐시

 - CDN은 전 세계의 다양한 서버에 컨텐츠를 캐싱하여 빠른 속도로 제공한다. CDN을 이용하면 웹 사이트의 로딩 속도를 빠르게 할 수 있다.

- localStorage 캐시

 - localStorage를 이용하여 클라이언트 측에서 데이터를 캐싱할 수 있다. 이를 이용하여 사용자가 다시 방문할 때마다 서버에서 데이터를 다시 받아오지 않고, 클라이언트 측에서 캐시된 데이터를 사용하여 로딩 속도를 빠르게 할 수 있다.

 

참고 : https://divheer.tistory.com/187

댓글