캐시 : 일시적인 특징이 있는 데이터 하위 집합을 저장하는 고속 데이터 스토리지 계층
이후 해당 데이터에 대한 요청이 있을 경우 데이터의 기본 스토리지 위치에 엑세스할 때보다 더 빠르게 요청 처리 가능
캐싱을 사용하면 이전에 검색하거나 계산한 데이터를 효율적으로 재사용할 수 있다
하드웨어 : RAM과 같이 빠르게 액세스할 수 있는 하드웨어에 저장
소프트웨어 : 소프트웨어 구성 요소와 함께 사용될 수도 있다
주요 목적 : 더 느린 기본 스토리지 계층에 액세스해야 하는 필요를 줄여 데이터 검색 성능을 높인다 [즉, 속도!]
속도를 위해 용량을 절충
데이터의 하위 집합을 일시적으로 저장
캐싱
기본 스토리지 위치가 아닌 빠르게 액세스할 수 있는 하드웨어에 일시적인 데이터를 저장해 빠르게 접근할 수 있게 한다.
<-> 데이터베이스 : 완전, 영구적인 데이터
기존 데이터베이스 및 디스크 기반 하드웨어 : 추가 리소스 필요 => 비용 상승, 지연 시간 up
RAM 및 메모리 엔진 : 지원하는 높은 요청 비율 또는 IOPS 덕분에 캐싱을 사용하면 대규모로 데이터 검색 성능이 향상되고 비용이 절감된다. 데이터 검색 성능 향상, 비용 절감
적용 분야
: 운영체제, 네트워킹 계층, 웹 애플리케이션 및 데이터베이스
: 캐싱을 사용하면 Q&A 포털, 게임, 미디어 공유 및 소셜 네트워킹과 같은 읽기 집약적인 여러 애플리케이션 워크로드의 지연 시간을 크게 줄이고 IOPS를 개선할 수 있다
: 캐싱되는 정보 - 데이터베이스 쿼리 결과, 컴퓨팅 집약적인 계산, API 요청-응답 및 HTML, Javascript 및 이미지 파일과 같은 웹 아티팩트
: 추천 엔진과 고성능 컴퓨팅 시뮬레이션과 같이 데이터 세트를 조작하는 컴퓨팅 집약적인 워크로드(캐시 역할을 하는 인 메모리 데이터 계층의 이점 활용 가능)
: 수백 개의 노드에 걸쳐 있는 시스템 클러스터에서 매우 큰 데이터 세트를 실시간으로 액세스해야 한다
: 기본 하드웨어의 속도 때문에 디스크 기반 스토어에서 이 데이터를 조작하는 것은 이러한 애플리케이션에서 심각한 병목 현상 초래
설계 패턴
분산 컴퓨팅 환경에서 전용 캐싱 계층을 사용하면 시스템과 애플리케이션이 캐시에 영향을 주는 위험 부담 없이 자체 수명 주기를 통해 캐시와는 독립적으로 실행
자체적인 수명 주기 및 아키텍처 토폴로지를 사용해 서로 다른 시스템에서 액세스할 수 있는 중앙 계층 역할을 한다. 특히 애플리케이션 노드를 동적으로 확장 및 축소할 수 있는 시스템에 적합. 캐시를 사용하는 애플리케이션 또는 시스템과 동일한 노드에 캐시가 상주하는 경우, 확장과 축소가 캐시의 무결성에 영향을 줄 수 있다. 로컬 캐시를 사용하는 경우 데이터를 소비하는 로컬 애플리케이션에만 도움이 된다. 분산 캐싱 환경에서는 여러 캐시 서버에 분산된 데이터가 중앙 위치에 저장되므로 해당 데이터의 모든 소비자가 이익을 얻을 수 있다
데이터를 소비하는 로컬 애플리케이션에만 도움이 된다
데이터의 유효성을 이해하는 것이 중요
성공적인 캐시는 높은 적중률로 이어진다
가져온 데이터가 캐시에 존재
가져온 데이터가 캐시에 존재하지 않을 때 캐시 비적중이 발생
TTL과같은 제어 항목을 적용해 데이터 만료 가능
캐시 환경이 고가용성이어야 할지 (Redis로 충족)
기본 위치에서 데이터를 캐싱하는 것과 달리 경우에 따라 인 메모리 계층을 독립형 데이터 스토리지 계층으로 사용하여 충족할 수 있다.
데이터에 대해 적절한 RTO(복구 목표 시간)와 RPO(목표 복구 시점)을 정의해 적합한지 파악하는 것이 중요
다른 인 메모리 엔진의 설계 전략 및 특성들을 적용하면 대부분 RTO와 RPO 요구사항 충족 가능
Amazon ElastiCache
애플리케이션 성능 개선
: 메모리는 디스크보다 훨씬 속도가 빠르기 때문에 인 메모리 캐시에서 데이터 읽는 속도가 매우 빠르다.
데이터베이스 비용 절감
: 단일 캐시 인스턴스는 수십만 IOPS(input/ouput per sec)를 제공할 수 있다
: 수많은 데이터베이스 인스턴스를 대체할 수 있어 비용 절감
백엔드의 로드 감소
: 읽기 로드의 상당 부분을 백엔드 데이터베이스에서 인 메모리 계층으로 리디렉션
: 데이터베이스의 로드를 줄이고 로드 시 성능 저하 / 작업 급증 시 작동 중단 방지
예측 가능한 성능
: 앱 사용량 급증 시기 대응
: 데이터베이스에 대한 로드 증가하면 데이터를 가져오는 데 있어 지연 시간이 길어진다
: 전반적인 애플리케이션 성능 예측 불가능
: 높은 처리량의 인 메모리 캐시 활용해서 완화
데이터베이스 핫스팟 제거
: 데이터베이스 핫스팟이란? 더 자주 조회되는 데이터
: 가장 자주 사용되는 데이터의 처리량 요구 사항에 맞추어 데이터베이스 리소스를 초과 프로비저닝해야 할 수 있다
: 인 메모리 캐시에 공통 키를 저장하면 가장 자주 액세스하는 데이터에 대해 예측 가능한 빠른 성능 제공 동시 초과 프로비저닝의 필요성 감소 가능
읽기 처리량(IOPS) 증가
: 인 메모리 시스템은 지연 시간 감소 뿐만 아니라 유사 디스크 기반 데이터베이스에 비해 훨씬 높은 요청 속도(IOPS) 제공
: 분산형 사이드 캐시로 사용되는 단일 인스턴스는 초당 수십만건의 요청 처리 가능