머신 캐시
머신 캐시(machine cache)는 중앙 처리 장치(CPU) 또는 주 메모리(RAM)와 하드 드라이브나 네트워크 리소스와 같은 느린 저장 장치 사이에 위치하는 고속 데이터 저장 계층을 의미합니다. 이의 주요 기능은 자주 액세스되는 데이터를 저장하여 시스템이 기본 저장소에 접근하는 것보다 훨씬 빠르게 정보를 검색할 수 있도록 하는 것입니다.
현대의 데이터 집약적인 애플리케이션에서 지연 시간(latency) — 명령어 실행 후 데이터 전송이 시작되기까지의 지연 — 은 주요 병목 현상입니다. 잘 구현된 머신 캐시는 이 지연 시간을 상당히 줄여줍니다. 빠르고 국소화된 메모리에서 요청을 처리함으로써 CPU가 느린 I/O 작업을 기다릴 필요가 없게 되어 애플리케이션 응답성과 처리량(throughput)이 직접적으로 향상됩니다.
캐싱은 지역성(locality)의 원칙에 따라 작동합니다. 시간적 지역성(temporal locality, 데이터가 지금 액세스되면 곧 다시 액세스될 가능성이 높음)과 공간적 지역성(spatial locality, 데이터가 지금 액세스되면 그 근처의 데이터도 곧 액세스될 가능성이 높음)이 그것입니다. 요청이 들어오면 시스템은 먼저 캐시를 확인합니다. 데이터가 있는 경우('캐시 히트'), 즉시 반환됩니다. 데이터가 없는 경우('캐시 미스'), 시스템은 느린 소스에서 데이터를 가져와 사용한 다음, 향후 사용을 위해 복사본을 캐시에 저장합니다.
머신 캐시는 다양한 기술 계층에 배포됩니다.
머신 캐싱을 활용하는 것의 장점은 정량화할 수 있습니다.
효과적인 캐시를 구현하는 것이 복잡함이 없는 것은 아닙니다. 주요 과제는 다음과 같습니다.
관련 개념에는 메모리 계층 구조(Memory Hierarchy), 콘텐츠 전송 네트워크(CDN), 데이터베이스 복제(Database Replication)가 포함됩니다. 이러한 시스템들이 어떻게 상호 작용하는지 이해하는 것은 확장 가능하고 고성능의 아키텍처를 설계하는 데 매우 중요합니다.