본문 바로가기
DataBase/Cache

캐싱이란?

by 곰민 2022. 11. 19.

캐싱이란


컴퓨팅에서 캐시는 일반적으로 일시적인 특징이 있는 데이터 하위 집합을 저장하는 고속 데이터 스토리지 계층이다.
이후에 해당 데이터에 대한 요청이 있을 경우 데이터의 기본 스토리지 위치에 액세스할 때보다 더 빠르게 요청을 처리할 수 있다.
캐싱을 사용하면 이전에 검색하거나 계산한 데이터를 효율적으로 재사용할 수 있다.

 

보통 In-Memory Computing 즉 애플리케이션 운영을 위한 데이터를 SSD 가아닌 RAM에서 수행하는 것을 말함.
속도를 위해 용량을 절충하는 캐시는 일반적으로 데이터의 하위 집합을 일시적으로 저장 한다.
보통 완전하고 영구적인 데이터가 있는 데이터베이스와는 대조적이다.

 

캐싱의 이점


애플리케이션 성능 개선


메모리는 디스크(마그네틱 또는 SSD) 보다 훨씬 속도가 빠르기 때문에
인 메모리 캐시에서 데이터를 읽는 속도가 매우 빠르다(밀리초 미만).
이렇게 훨씬 더 빠른 데이터 액세스는 애플리케이션의 전반적인 성능을 개선한다.

 

데이터베이스 비용절감


단일 캐시 인스턴스는 수십만 IOPS(초당 입출력 작업)를 제공할 수 있으며,
따라서 수많은 데이터베이스 인스턴스를 대체할 수 있으므로 총비용이 절감된다.
이 같은 비용 절감 이점은 기본 데이터베이스에서 처리량당 요금이 부과되는 경우 특히 크게 나타난다.
이 경우 수십 퍼센트의 비용이 절감될 수 있다.

 

백엔드의 로드 감소


캐싱은 읽기 로드의 상당 부분을 백엔드 데이터베이스에서 인 메모리 계층으로 리디렉션함으로써
데이터베이스의 로드를 줄이고 로드 시에 성능이 저하되거나 작업 급증 시에 작동이 중단되지 않도록 보호할 수 있다.

 

예측 가능한 성능


모던 애플리케이션의 일반적인 과제 중 하나는 애플리케이션 사용량이 급증하는 시기에 대응하는 것이다.
슈퍼볼이나 선거 기간 동안의 소셜 앱, 블랙 프라이데이 기간 동안의 전자 상거래 웹 사이트 등을 예로 들 수가 있는데,
데이터베이스에 대한 로드가 증가하면 데이터를 가져오는 데 있어 지연 시간이 길어지고
전반적인 애플리케이션 성능이 예측 불가능해진다.
높은 처리량의 인 메모리 캐시를 활용함으로써 이 문제를 완화할 수 있다.

 

데이터베이스 핫스폿 제거


유명 인사 프로필이나 인기 있는 제품과 같은 작은 데이터 하위 집합이 나머지 부분에 비해 더 자주 액세스 됨,
이로 인해 데이터베이스에 핫스폿이 발생할 수 있으며 가장 자주 사용되는 데이터의 처리량 요구 사항에 맞추어
데이터베이스 리소스를 초과 프로비저닝해야 할 수 있다.
인 메모리 캐시에 공통 키를 저장하면 가장 자주 액세스 하는 데이터에 대해 예측 가능한 빠른 성능을 제공하는 동시에
초과 프로비저닝의 필요성을 줄일 수 있다.

 

읽기 처리량 증가


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

 

캐싱 개요


캐시는 운영 체제, 네트워킹 계층(콘텐츠 전송 네트워크(CDN), DNS 등), 웹 애플리케이션 및 데이터베이스 등의
다양한 기술 계층에 걸쳐 적용되고 활용될 수 있다.
캐싱을 사용하면 Q&A 포털, 게임, 미디어 공유 및 소셜 네트워킹과 같은 읽기 집약적인 여러 애플리케이션 워크로드의 지연 시간을 크게 줄이고 IOPS를 개선할 수 있다.
캐싱되는 정보로는 데이터베이스 쿼리 결과, 컴퓨팅 집약적인 계산, API 요청-응답 및 HTML, JavaScript 및 이미지 파일과 같은
웹 아티팩트가 있다.

 

추천 엔진과 고성능 컴퓨팅 시뮬레이션과 같이 데이터 세트를 조작하는 컴퓨팅 집약적 워크로드는 캐시 역할을 하는 인 메모리 데이터 계층의 이점을 활용할 수 있다.
이러한 애플리케이션에서는 수백 개의 노드에 걸쳐 있는 시스템 클러스터에서 매우 큰 데이터 세트를 실시간으로 액세스해야 하고 본 하드웨어의 속도 때문에 디스크 기반 스토어에서 이 데이터를 조작하는 것은 이러한 애플리케이션에서 심각한 병목 현상을 초래하게 된다.

 

설계 패턴


분산 컴퓨팅 환경에서, 전용 캐싱 계층을 사용하면 시스템과 애플리케이션이 캐시에 영향을 주는 위험 부담 없이 자체 수명 주기를 통해 캐시와는 독립적으로 실행될 수 있다.
캐시는 자체적인 수명 주기 및 아키텍처 토폴로지를 사용하여 서로 다른 시스템에서 액세스 할 수 있는 중앙 계층 역할을 한다.
특히 애플리케이션 노드를 동적으로 확장 및 축소할 수 있는 시스템에 적합하다.
캐시를 사용하는 애플리케이션 또는 시스템과 동일한 노드에 캐시가 상주하는 경우, 이 같은 확장과 축소가 캐시의 무결성에 영향을 줄 수 있다.
또한 로컬 캐시를 사용하는 경우 데이터를 소비하는 로컬 애플리케이션에만 도움이 된다.
분산 캐싱 환경에서는 여러 캐시 서버에 분산된 데이터가 중앙 위치에 저장되므로 해당 데이터의 모든 소비자가 이익을 얻을 수 있다.
*토폴로지란 : 컴퓨터 네트워크의 요소들(링크, 노드)를 물리적으로 연결해 놓은 것, 또는 그 연결 방식을 의미한다.
LAN의 경우 물리적 토폴로지와 논리적 토폴로지 둘 다 보여줄 수 있는 네트워크의 한 예시가 된다.

 

캐싱 모범 사례 In AWS


캐시 계층을 을 구현할 때는 캐싱되는 데이터의 유효성을 이해하는 것이 중요하다.
성공적인 캐시는 높은 적중률로 이어지는데 적중률은 가져온 데이터가 캐시에 존재한 것을 의미한다.
가져온 데이터가 캐시에 존재하지 않을 때 캐시 비적중이 발생한다.
TTL(Time To Live)을 활용하여 데이터를 만료되도록 할 수 있다.
다른 고려 사항은 캐시 환경이 고가용성이어야 할 필요가 있는지 여부인데, 이는 Redis와 같은 인 메모리 엔진을 사용하여 충족할 수 있습니다.
기본 위치에서 데이터를 캐싱하는 것과는 달리, 경우에 따라 인 메모리 계층을 독립형 데이터 스토리지 계층으로 사용할 수 있다.
이 시나리오에서는 인 메모리 엔진에 상주하는 데이터에 대해 적절한 RTO(복구 목표 시간 – 가동 중단으로부터 복구하는 데 걸리는 시간)와 RPO(목표 복구 시점 – 복구 시 캡처된 최종 시점 또는 트랜잭션)를 정의하여 이것이 적합한지를 파악하는 것이 중요하다.

출처 : https://aws.amazon.com/ko/caching/

 

참조


https://aws.amazon.com/ko/caching/

 

캐싱이란 무엇이고 어떻게 작동합니까 | AWS

다양한 캐싱 사용 사례 알아보기 데이터베이스 캐싱 속도와 처리량 면에서, 데이터베이스가 제공하는 성능은 애플리케이션 전체 성능에 무엇보다 크게 영향을 미칠 수 있습니다. 또한 오늘날

aws.amazon.com

 

https://medium.com/awesome-cloud/aws-amazon-elasticache-overview-introduction-to-aws-elasticache -for-redis-memcached-f7165c3c2e5f

 

AWS — Amazon ElastiCache Overview

What is Amazon ElastiCache?  —  Introduction to Amazon ElastiCache (Redis and Memcached).

medium.com

 

반응형

댓글