캐싱

해피데빙·2022년 9월 27일
0

캐싱

  • 캐시 : 일시적인 특징이 있는 데이터 하위 집합을 저장하는 고속 데이터 스토리지 계층

  • 이후 해당 데이터에 대한 요청이 있을 경우 데이터의 기본 스토리지 위치에 엑세스할 때보다 더 빠르게 요청 처리 가능

  • 캐싱을 사용하면 이전에 검색하거나 계산한 데이터를 효율적으로 재사용할 수 있다

  • 하드웨어 : RAM과 같이 빠르게 액세스할 수 있는 하드웨어에 저장

  • 소프트웨어 : 소프트웨어 구성 요소와 함께 사용될 수도 있다

  • 주요 목적 : 더 느린 기본 스토리지 계층에 액세스해야 하는 필요를 줄여 데이터 검색 성능을 높인다 [즉, 속도!]

  • 속도를 위해 용량을 절충

  • 데이터의 하위 집합을 일시적으로 저장

캐싱
기본 스토리지 위치가 아닌 빠르게 액세스할 수 있는 하드웨어에 일시적인 데이터를 저장해 빠르게 접근할 수 있게 한다.
<-> 데이터베이스 : 완전, 영구적인 데이터

캐싱 개요

RAM 및 메모리 엔진

  • 기존 데이터베이스 및 디스크 기반 하드웨어 : 추가 리소스 필요 => 비용 상승, 지연 시간 up

  • RAM 및 메모리 엔진 : 지원하는 높은 요청 비율 또는 IOPS 덕분에 캐싱을 사용하면 대규모로 데이터 검색 성능이 향상되고 비용이 절감된다. 데이터 검색 성능 향상, 비용 절감

  • 적용 분야
    : 운영체제, 네트워킹 계층, 웹 애플리케이션 및 데이터베이스
    : 캐싱을 사용하면 Q&A 포털, 게임, 미디어 공유 및 소셜 네트워킹과 같은 읽기 집약적인 여러 애플리케이션 워크로드의 지연 시간을 크게 줄이고 IOPS를 개선할 수 있다
    : 캐싱되는 정보 - 데이터베이스 쿼리 결과, 컴퓨팅 집약적인 계산, API 요청-응답 및 HTML, Javascript 및 이미지 파일과 같은 웹 아티팩트
    : 추천 엔진과 고성능 컴퓨팅 시뮬레이션과 같이 데이터 세트를 조작하는 컴퓨팅 집약적인 워크로드(캐시 역할을 하는 인 메모리 데이터 계층의 이점 활용 가능)
    : 수백 개의 노드에 걸쳐 있는 시스템 클러스터에서 매우 큰 데이터 세트를 실시간으로 액세스해야 한다
    : 기본 하드웨어의 속도 때문에 디스크 기반 스토어에서 이 데이터를 조작하는 것은 이러한 애플리케이션에서 심각한 병목 현상 초래

  • 설계 패턴
    분산 컴퓨팅 환경에서 전용 캐싱 계층을 사용하면 시스템과 애플리케이션이 캐시에 영향을 주는 위험 부담 없이 자체 수명 주기를 통해 캐시와는 독립적으로 실행

자체적인 수명 주기 및 아키텍처 토폴로지를 사용해 서로 다른 시스템에서 액세스할 수 있는 중앙 계층 역할을 한다. 특히 애플리케이션 노드를 동적으로 확장 및 축소할 수 있는 시스템에 적합. 캐시를 사용하는 애플리케이션 또는 시스템과 동일한 노드에 캐시가 상주하는 경우, 확장과 축소가 캐시의 무결성에 영향을 줄 수 있다. 로컬 캐시를 사용하는 경우 데이터를 소비하는 로컬 애플리케이션에만 도움이 된다. 분산 캐싱 환경에서는 여러 캐시 서버에 분산된 데이터가 중앙 위치에 저장되므로 해당 데이터의 모든 소비자가 이익을 얻을 수 있다

데이터를 소비하는 로컬 애플리케이션에만 도움이 된다

  • 캐시
    1) 운영 체제, 네트워킹 계층(콘텐츠 전송 네트워크(CDN), DNS 등), 웹 애플리케이션 및 데이터베이스를 비롯한 다양한 기술 계층에 걸쳐 적용되고 활용될 수 있습니다.
    2) 읽기 집약적인 여러 애플리케이션 워크로드의 지연 시간을 크게 줄이고 IOPS를 개선할 수 있습니다. 캐싱되는 정보로는 데이터베이스 쿼리 결과, 컴퓨팅 집약적인 계산, API 요청-응답 및 HTML, JavaScript 및 이미지 파일과 같은 웹 아티팩트가 있습니다.
  • 설계 패턴
    분산 컴퓨팅 환경에서 전용 캐싱 계층을 사용하면 시스템과 애플리케이션이 캐시에 영향을 주는 위험 부담 없이 자체 수명 주리를 통해 캐시와는 독립적으로 실행될 수 있다.
    캐시는 자체적인 수명 주기 및 아키텍처 토폴로지를 사용하여 서로 다른 시스템에서 액세스할 수 있는 중앙 계층 역할을 합니다. 특히 애플리케이션 노드를 동적으로 확장 및 축소할 수 있는 시스템에 적합하다.

데이터의 유효성을 이해하는 것이 중요
성공적인 캐시는 높은 적중률로 이어진다
가져온 데이터가 캐시에 존재
가져온 데이터가 캐시에 존재하지 않을 때 캐시 비적중이 발생
TTL과같은 제어 항목을 적용해 데이터 만료 가능
캐시 환경이 고가용성이어야 할지 (Redis로 충족)

기본 위치에서 데이터를 캐싱하는 것과 달리 경우에 따라 인 메모리 계층을 독립형 데이터 스토리지 계층으로 사용하여 충족할 수 있다.

데이터에 대해 적절한 RTO(복구 목표 시간)와 RPO(목표 복구 시점)을 정의해 적합한지 파악하는 것이 중요
다른 인 메모리 엔진의 설계 전략 및 특성들을 적용하면 대부분 RTO와 RPO 요구사항 충족 가능

Amazon ElastiCache

  • 클라우드에서 인 메모리 데이터 스토어 또는 캐시 손쉽게 구축, 운영 및 확장할 수 있도록 지원
  • 더 느린 디스크 기반 데이터베이스에 전적으로 의존하기보다는, 빠른 관리형 인 메모리 데이터 스토어에서 정보 검색할 수 있도록 지원

캐싱의 이점

  • 애플리케이션 성능 개선
    : 메모리는 디스크보다 훨씬 속도가 빠르기 때문에 인 메모리 캐시에서 데이터 읽는 속도가 매우 빠르다.

  • 데이터베이스 비용 절감
    : 단일 캐시 인스턴스는 수십만 IOPS(input/ouput per sec)를 제공할 수 있다
    : 수많은 데이터베이스 인스턴스를 대체할 수 있어 비용 절감

  • 백엔드의 로드 감소
    : 읽기 로드의 상당 부분을 백엔드 데이터베이스에서 인 메모리 계층으로 리디렉션
    : 데이터베이스의 로드를 줄이고 로드 시 성능 저하 / 작업 급증 시 작동 중단 방지

  • 예측 가능한 성능
    : 앱 사용량 급증 시기 대응
    : 데이터베이스에 대한 로드 증가하면 데이터를 가져오는 데 있어 지연 시간이 길어진다
    : 전반적인 애플리케이션 성능 예측 불가능
    : 높은 처리량의 인 메모리 캐시 활용해서 완화

  • 데이터베이스 핫스팟 제거
    : 데이터베이스 핫스팟이란? 더 자주 조회되는 데이터
    : 가장 자주 사용되는 데이터의 처리량 요구 사항에 맞추어 데이터베이스 리소스를 초과 프로비저닝해야 할 수 있다
    : 인 메모리 캐시에 공통 키를 저장하면 가장 자주 액세스하는 데이터에 대해 예측 가능한 빠른 성능 제공 동시 초과 프로비저닝의 필요성 감소 가능

  • 읽기 처리량(IOPS) 증가
    : 인 메모리 시스템은 지연 시간 감소 뿐만 아니라 유사 디스크 기반 데이터베이스에 비해 훨씬 높은 요청 속도(IOPS) 제공
    : 분산형 사이드 캐시로 사용되는 단일 인스턴스는 초당 수십만건의 요청 처리 가능

profile
노션 : https://garrulous-gander-3f2.notion.site/c488d337791c4c4cb6d93cb9fcc26f17

0개의 댓글