캐싱 개요

캐싱은 애플리케이션 성능을 대폭 개선하고 비용을 크게 절감해 줍니다.

캐싱이란 무엇입니까?

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

캐싱은 어떻게 작동합니까?

캐시의 데이터는 일반적으로 RAM(Random Access Memory)과 같이 빠르게 액세스할 수 있는 하드웨어에 저장되며, 소프트웨어 구성 요소와 함께 사용될 수도 있습니다. 캐시의 주요 목적은 더 느린 기본 스토리지 계층에 액세스해야 하는 필요를 줄임으로써 데이터 검색 성능을 향상하는 것입니다.

속도를 위해 용량을 절충하는 캐시는 일반적으로 데이터의 하위 집합을 일시적으로 저장합니다. 보통 완전하고 영구적인 데이터가 있는 데이터베이스와는 대조적입니다.

캐싱 개요

RAM 및 인 메모리 엔진이 지원하는 높은 요청 비율 또는 IOPS(초당 입력/출력 작업) 덕분에 캐싱을 사용하면 대규모로 데이터 검색 성능이 향상되고 비용이 절감됩니다. 기존 데이터베이스 및 디스크 기반 하드웨어로 동일한 규모를 지원하려면 추가 리소스가 필요하게 됩니다. 이러한 추가 리소스는 비용을 상승시키면서도 여전히 인 메모리 캐시에서 제공하는 짧은 지연 시간 성능은 달성할 수 없습니다.

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

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

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

계층 클라이언트 측 DNS 데이터베이스
사용 사례

웹 사이트에서 웹 콘텐츠를 검색하는 속도 가속화(브라우저 또는 디바이스)

도메인과 IP 간 확인 웹 또는 앱 서버에서 웹 콘텐츠를 검색하는 속도를 높입니다. 웹 세션 관리(서버 측) 애플리케이션 성능 및 데이터 액세스 가속화 데이터베이스 쿼리 요청과 관련한 지연 시간 단축
기술 HTTP 캐시 헤더, 브라우저 DNS 서버 HTTP 캐시 헤더, CDN, 역방향 프록시, 웹 액셀러레이터, 키-값 스토어 키-값 데이터 스토어, 로컬 캐시 데이터베이스 버퍼, 키-값 데이터 스토어
솔루션 브라우저별 Amazon Route 53 Amazon CloudFrontElastiCache for RedisElastiCache for Memcached파트너 솔루션 애플리케이션 프레임워크, ElastiCache for RedisElastiCache for Memcached파트너 솔루션  ElastiCache for RedisElastiCache for Memcached

Amazon ElastiCache를 사용한 캐싱

Amazon ElastiCache는 클라우드에서 인 메모리 데이터 스토어 또는 캐시를 손쉽게 구축, 운영 및 확장할 수 있도록 지원하는 웹 서비스입니다. 이 서비스는 더 느린 디스크 기반 데이터베이스에 전적으로 의존하기보다는, 빠른 관리형 인 메모리 데이터 스토어에서 정보를 검색할 수 있도록 지원하여 웹 애플리케이션의 성능을 향상합니다. 인 메모리 캐싱에 대한 이 기술 백서를 통해 효과적인 캐싱 전략을 구현할 수 있는 방법을 알아보세요.

다이어그램