Amazon ElastiCache FAQ

일반

Amazon ElastiCache는 클라우드에서 Valkey, Memcached 또는 Redis OSS 프로토콜 준수 캐시의 배포 및 실행을 간소화하는 웹 서비스입니다. ElastiCache는 속도가 느린 디스크 기반 시스템에 의존하는 대신 빠른 관리형 인 메모리 시스템에서 정보를 검색할 수 있도록 하여 애플리케이션 성능을 향상시킵니다. 또한 인 메모리 환경의 관리, 모니터링 및 운영을 간소화하여 부담을 덜어주므로 애플리케이션 개발에 엔지니어링 리소스를 집중할 수 있습니다. 게다가 ElastiCache을 사용하면 사용자 작업과 쿼리에 대한 로드 및 응답 시간이 향상될 뿐 아니라 웹 애플리케이션 확장에 따른 비용도 절감됩니다.

ElastiCache는 분산 인 메모리 키 값 환경을 운영하는 데 필요한 일반 관리 작업을 자동화합니다. ElastiCache를 사용하면 AWS Management Console에서 몇 단계를 거쳐 몇 분 만에 애플리케이션 아키텍처에 캐싱 또는 인 메모리 계층을 추가할 수 있습니다. ElastiCache는 고가용성을 자동으로 유지하도록 설계되었으며 99.99% 가용성의 서비스 수준 계약(SLA)을 제공합니다. ElastiCache는 Valkey, Memcached 및 Redis OSS를 준수하는 프로토콜이므로 기존 Valeky, Memcached 또는 Redis OSS 환경에서 현재 사용하는 코드, 애플리케이션 및 주요 도구를 해당 서비스에서 문제 없이 사용할 수 있습니다. 선불 투자가 필요하지 않으며 사용한 리소스에 대해서만 요금을 지불하면 됩니다.

ElastiCache의 인 메모리 캐싱 기능을 이용하면 읽기 작업이 많은 애플리케이션 워크로드(소셜 네트워킹, 게임, 미디어 공유, Q&A 포털 등) 또는 컴퓨팅 집약적 워크로드(추천 엔진 등)의 지연 시간과 처리량이 비약적으로 향상됩니다. 인 메모리 캐싱은 핵심 데이터 조각을 메모리에 저장해 액세스 지연 시간을 줄여주므로 애플리케이션 성능이 향상됩니다. 캐싱된 정보에는 I/O 집약적 데이터베이스 쿼리 결과 또는 컴퓨팅 집약적 계산 결과가 포함될 수 있습니다.

ElastiCache는 사용자가 요청한 리소스를 프로비저닝하는 것부터 소프트웨어를 설치하는 것까지 분산 인 메모리 환경 설정과 관련된 작업을 관리합니다. Amazon ElastiCache 서버리스를 사용할 때는 구성 및 관리해야 하는 인프라가 없습니다. 자체 ElastiCache 클러스터를 설계할 때 서비스는 소프트웨어 패치, 장애 감지 및 복구와 같은 일반적인 관리 작업을 자동화합니다. ElastiCache는 리소스와 관련된 자세한 모니터링 지표를 제공하므로 문제를 신속하게 진단하고 대응할 수 있습니다. 예를 들면, 캐시 중 하나에 요청 과부하가 걸리면 경보를 받을 수 있도록 임계값을 설정해 둘 수 있습니다.

ElastiCache는 밀리초 미만의 응답 시간을 필요로 하는 가장 까다로운 애플리케이션을 위한 완전관리형 Valkey, Memcached 및 Redis OSS를 제공합니다.

ElastiCache에 아직 가입하지 않은 경우, ElastiCache 페이지에서 시작하기를 선택하고 등록 프로세스를 완료할 수 있습니다. 이 서비스에 액세스하려면 AWS 계정이 있어야 합니다. 아직 계정이 없는 경우 ElastiCache 가입 프로세스를 시작하면 계정을 생성하라는 메시지가 표시됩니다. ElastiCache에 가입한 후에는 Amazon ElastiCache 시작 안내서가 포함된 ElastiCache 설명서를 참조하세요.

일단 ElastiCache에 익숙해지면 콘솔 또는 ElastiCache API를 사용하여 몇 분 안에 캐시를 생성할 수 있습니다.

캐시는 콘솔, ElastiCache API 또는 명령줄 도구를 사용하여 쉽게 생성할 수 있습니다. ElastiCache 서버리스를 사용하는 경우 기본 권장 설정을 사용하여 캐시를 생성하고 1분 이내에 사용을 시작할 수 있습니다.

서버리스

ElastiCache 서버리스는 인프라 프로비저닝이나 용량 계획 없이 1분 이내에 캐시를 시작할 수 있는 서버리스 옵션입니다. ElastiCache 서버리스를 사용하면 캐시의 컴퓨팅, 메모리 및 네트워크 사용률을 지속적으로 모니터링하여 시간이 많이 걸리는 용량 계획 수립을 제거하므로 다운타임이나 성능 저하 없이 수요에 맞게 즉시 확장할 수 있습니다. ElastiCache 서버리스는 여러 가용 영역(AZ)에 데이터를 자동으로 복제하고 고객에게 각 캐시에 대해 99.99% 가용성 서비스 수준 계약(SLA)을 제공합니다. ElastiCache 서버리스를 사용하면 저장한 데이터와 애플리케이션에서 사용하는 컴퓨팅 리소스에 대해서만 비용을 지불합니다. 시작하려면 콘솔, ElastiCache 개발 키트(SDK) 또는 AWS Command Line Interface(AWS CLI)를 사용하여 캐시 이름을 지정하고 몇 단계만 거치면 ElastiCache Serverless 캐시를 생성할 수 있습니다.

Valkey, Memcached 또는 Redis OSS 엔드포인트를 애플리케이션의 새로운 ElastiCache Serverless 캐시 엔드포인트로 변경하여 기존 ElastiCache 워크로드를 이전할 수 있습니다. 백업 파일의 Amazon Simple Storage Service(S3) 위치를 지정하여 기존 ElastiCache 데이터를 ElastiCache Serverless로 마이그레이션할 수 있습니다. 워크로드 마이그레이션에 대해 자세히 알아보려면 ElastiCache Serverless 설명서를 참조하세요.

ElastiCache Serverless는 Valkey 7.2, Memcached 버전 1.6.21 및 Redis OSS 버전 7.0 이상을 지원합니다.

ElastiCache 서버리스는 캐시의 메모리, 컴퓨팅 및 네트워크 사용률을 지속적으로 모니터링하여 즉시 확장합니다. ElastiCache 서버리스는 캐시를 스케일 업하고 동시에 스케일 아웃을 시작하여 애플리케이션의 다운타임이나 성능 저하 없이 확장되므로 애플리케이션 요구 사항을 적시에 충족할 수 있습니다. 확장에 대해 자세히 알아보려면 ElastiCache 서버리스 설명서를 참조하세요.

ElastiCache 서버리스는 여러 AZ 전체에서 데이터를 중복 저장하며 모든 워크로드에 대해 99.99% 가용성 서비스 수준 계약(SLA)을 제공합니다.

ElastiCache 서버리스를 사용하면 저장한 데이터와 애플리케이션에서 사용하는 컴퓨팅에 대해서만 비용을 지불합니다. 자세한 내용은 ElastiCache 요금 페이지를 참조하세요.

예약 노드

예약 노드 또는 예약형 인스턴스(RI)는 1년 또는 3년 약정 시 온디맨드 사용량에 비해 상당한 할인을 제공합니다. 예약 노드에서는 한 번의 선결제로 특정 리전에서 캐시를 1년 또는 3년 동안 실행하도록 예약하고 시간당 사용 요금을 대폭 할인받을 수 있습니다. 예약형 노드 유형에는 전체 선결제, 선결제 없음, 부분 선결제 등 3가지가 있으며 선결제 금액으로 실질적인 시간당 요금을 지불할 수 있습니다.

예약 노드는 ElastiCache 온디맨드 사용에 적용되는 할인을 제공합니다. ElastiCache 서버리스는 예약 노드와 호환되지 않습니다.

예약 노드는 최대 300개까지 구매할 수 있습니다. 300개를 초과하는 노드를 실행하려면 ElastiCache 노드 요청 양식을 작성하세요.

현재 실행하고 있고 예약하고자 하는 노드와 동일한 리전 내에 있는 동일한 노드 클래스를 사용하여 노드 예약을 구매하면 됩니다. 예약을 구매하면 ElastiCache가 기존 노드에 새로운 시간당 사용 요금을 자동으로 적용합니다.

결제 승인이 처리되는 중에 사용자의 요청이 접수되면 예약형 노드와 관련된 요금 변경 사항이 적용됩니다. AWS 계정 활동 페이지 또는 DescribeReservedCacheNodes API를 사용하여 예약 상태를 확인할 수 있습니다. 다음 청구 기간에 일회성 결제가 승인되지 않는 경우는 할인 요금이 적용되지 않습니다.

예약 기간이 지나면 예약형 노드는 노드 클래스와 리전에 해당하는 온디맨드 시간당 사용료로 전환됩니다.

노드를 생성, 수정 및 삭제하기 위한 ElastiCache API는 온디맨드 노드와 예약형 노드를 구분하지 않으므로 둘 다 원활하게 사용할 수 있습니다. 요금을 계산할 때 AWS 시스템이 사용자의 예약 상태를 자동으로 적용하므로 해당하는 모든 노드에 저렴한 시간당 예약 캐시 노드 요금이 부과됩니다.

각 예약 노드는 특정 리전과 연결되어 있으며 이는 예약의 수명 기간 동안 고정되어 변경할 수 없습니다. 그러나 각 예약은 연결된 리전 내의 모든 가용 영역에서 사용할 수 있습니다.

아니요. 노드 예약은 취소할 수 없으며 일회성 요금(해당하는 경우)은 환불되지 않습니다. 예약된 노드 기간에는 사용량과 관계없이 시간당 요금을 계속해서 지불하게 됩니다.

전체 선결제 옵션으로 야약 노드를 구매하는 경우, 예약 노드의 전체 계약 기간에 대한 요금을 한 번에 선결제하게 됩니다. 선결제 없음(No Upfront) 옵션을 선택하면 선결제 금액을 지불하지 않습니다. 이 경우 선결제 요금 예약 노드의 전체 요금은 계약 기간 내 각 시간으로 분배되며 사용량에 관계없이 기간 내 시간에 대해 요금이 청구됩니다. 부분 선결제 옵션은 전체 선결제와 선결제 없음 옵션에 대한 하이브리드 옵션입니다. 소정의 선결제 금액을 지불하고 사용량에 관계없이 기간 내 시간에 대해 저렴한 시간당 요금을 지불하는 옵션입니다.

예, ElastiCache 예약 노드는 인스턴스 패밀리(또는 노드 패밀리) 및 AWS 리전 내에서 크기를 유연하게 제공합니다. 즉, 기존 할인된 예약 노드 요금이 동일한 노드 패밀리의 모든 크기 사용량에 자동으로 적용됩니다.

보안

ElastiCache를 사용하면 AWS Key Management Service(AWS KMS)를 사용한 저장 데이터 암호화, 전송 계층 보안(TLS)을 사용한 전송 데이터 암호화, AWS Identity and Access Management(IAM)를 사용한 인증, Amazon Elastic Compute Cloud(Amazon EC2) 보안 그룹을 통한 네트워크 액세스 제어를 구성할 수 있습니다.

Amazon Virtual Private Cloud(Amazon VPC)를 사용하지 않는 경우 ElastiCache를 사용하면 네트워크 보안 그룹을 통해 캐시에 대한 액세스를 제어할 수 있습니다. 보안 그룹은 캐시에 대한 네트워크 액세스를 제어하는 방화벽 역할을 합니다. 기본적으로 캐시에 대한 네트워크 액세스는 비활성화되어 있습니다. 애플리케이션에 캐시에 대한 액세스 권한을 부여하려면 특정 Amazon EC2 보안 그룹에 있는 호스트의 액세스를 명시적으로 활성화해야 합니다.

또한 IAM 인증을 사용하여 ElastiCache 리소스에 대한 액세스를 제어할 수 있습니다. 자세한 내용은 IAM을 사용한 인증 설명서를 참조하세요.

규정 준수

ElastiCache는 SOC 1, SOC 2, SOC 3, ISO, MTCS, C5, PCI DSS, HIPAA 및 FedRAMP와 같은 규정 준수 프로그램을 지원합니다. 현재 지원되는 규정 준수 프로그램의 목록은 규정 준수 프로그램 제공 범위 내 AWS 서비스를 참조하세요.

예. AWS PCI 규정 준수 프로그램에 PCI 준수 서비스로 ElastiCache가 포함되어 있습니다. 자세한 내용은 다음 리소스를 참조하십시오.

ElastiCache가 해당 요건 범위에 포함되는 규정 준수 프로그램의 현재 목록을 보려면 규정 준수 프로그램 제공 AWS 범위 내 서비스를 확인하십시오.

예. ElastiCache는 HIPAA 적격 서비스이며 AWS BAA(Business Associate Addendum)에 포함되어 있습니다. 즉, ElastiCache를 사용하여 개인 건강 정보(PHI)를 처리, 유지 관리 및 저장하고 의료 서비스 애플리케이션을 지원할 수 있습니다.

아니요. 규정 준수 기능을 사용하는 데 따른 추가 비용은 없습니다.

AWS와 BAA(Business Associate Agreement)가 체결되어 있는 경우 ElastiCache를 사용하여 HIPAA에 따라 HI를 저장하고 처리하는 애플리케이션을 구축할 수 있습니다. BAA를 체결하지 않았거나 애플리케이션에 AWS를 사용하는 것과 관련하여 질문이 있는 경우 AWS에 문의하여 자세히 알아보시기 바랍니다. 

AWS FedRAMP 규정 준수 프로그램에 FedRAMP 인증 서비스로 ElastiCache가 포함되어 있습니다. 미국 정부 고객과 파트너는 이제 최신 버전의 ElastiCache를 사용하여 FedRAMP 시스템, 데이터 및 높은 영향 수준의 미션 크리티컬한 워크로드는 AWS GovCloud(미국 동부) 및 AWS GovCloud(미국 서부) 리전에서 그리고 중간 영향 수준의 워크로드는 미국 동부(오하이오), 미국 동부(버지니아 북부), 미국 서부(캘리포니아 북부) 및 미국 서부(오레곤) 리전에서 처리하고 저장할 수 있습니다.

자세한 내용은 다음 리소스를 참조하십시오.

ElastiCache가 해당 요건 범위에 포함되는 규정 준수 프로그램의 현재 목록을 보려면 규정 준수 프로그램 제공 AWS 범위 내 서비스를 확인하십시오.

Valkey FAQ

Valkey 기능

Valkey는 Linux Foundation이 주도하는 Redis OSS의 오픈 소스 진화로, 오랜 Redis OSS 기여자 및 유지 관리자가 구축한 캐싱, 순위표, 세션 스토어와 같은 다양한 사용 사례를 지원합니다. Valkey는 40여 개 회사로부터 지지를 받고 있으며 2024년 3월 프로젝트가 시작된 이후 빠르게 채택되고 있습니다.

Valkey용 ElastiCache를 사용하면 AWS가 제공하는 보안, 운영 우수성, 99.99% 가용성 SLA, 신뢰성을 활용하면서 오픈 소스 기술을 기반으로 구축된 완전관리형 환경의 이점을 누릴 수 있습니다. 33% 할인된 요금과 100MB의 최소 데이터 스토리지(ElastiCache Redis OSS보다 90% 낮음)를 통해 Valkey용 ElastiCache Serverless의 비용을 더욱 최적화할 수 있습니다. 노드 기반 Valkey용 ElastiCache에서는 노드당 비용을 최대 20% 절감할 수 있습니다. 

몇 번의 클릭만으로 기존 Redis OSS용 ElastiCache 캐시를 가동 중지 시간 없이 Valkey용 ElastiCache로 업그레이드할 수 있습니다. AWS Management Console, 소프트웨어 개발 키트(SDK) 또는 명령줄 인터페이스(CLI)를 사용하여 시작할 수 있습니다. 자세한 내용은 ElastiCache 기능 페이지, 시작하기 블로그, ElastiCache 사용 설명서를 참조하세요.

예. ElastiCache를 사용하면 다른 AWS AZ에서 읽기 전용 복제본을 만들 수 있습니다. ElastiCache Serverless를 사용하는 경우 데이터는 고가용성을 위해 여러 AZ에 중복 저장됩니다. ElastiCache 캐시를 직접 설계할 때 노드에 장애가 발생하면 새 노드를 프로비저닝합니다. 프라이머리 노드에 장애가 발생하는 시나리오에서는 ElastiCache가 기존 읽기 전용 복제본을 기본 복제본 역할로 자동으로 승격합니다. 노드 장애를 처리하는 방법에 대한 자세한 내용은 복제 이해를 참조하세요.

ElastiCache API를 사용하고 선호하는 엔진 버전을 지정하여 새 엔진 버전으로 빠르게 업그레이드할 수 있습니다. ElastiCache 콘솔에서 캐시를 선택한 후 수정을 선택할 수 있습니다. 엔진 업그레이드 프로세스는 기존 데이터를 보존하도록 설계되었습니다. 자세한 내용은 캐싱 전략 및 모범 사례를 참조하세요.

아니요. 이전 엔진 버전으로 다운그레이드는 지원되지 않습니다.

예. ElastiCache의 글로벌 데이터 저장소 기능을 사용하여 교차 리전 복제본을 생성할 수 있습니다. 글로벌 데이터 스토어에서는 빠르고 안정적이며 보안에 집중한 완전관리형 교차 리전 복제를 제공합니다. 하나의 리전에서 ElastiCache 클러스터에 데이터를 작성하고, 최대 2개의 다른 교차 리전 복제본 클러스터에서 해당 데이터를 읽을 수 있으므로, 리전 간 지연 시간이 짧은 읽기와 재해 복구가 가능합니다.

성능

몇 가지 성능 이점이 있습니다.

ElastiCache는 멀티플렉싱, 프레젠테이션 계층 오프로드 및 기타 기능을 통해 대규모 처리량과 지연 시간을 크게 개선하는 향상된 I/O 스레드를 제공합니다. 향상된 I/O 스레드는 I/O를 처리하고 워크로드에 맞게 동적으로 조정하는 데 더 많은 코어를 사용함으로써 성능을 개선합니다. ElastiCache는 암호화를 동일하게 향상된 I/O 스레드로 오프로드하여 TLS 지원 클러스터의 처리량을 높입니다. 이를 통해 Valkey용 ElastiCache는 Redis OSS용 ElastiCache 버전 7.0보다 최대 100% 더 많은 처리량과 50% 더 낮은 P99 지연 시간을 제공할 수 있습니다. r7g.4xlarge 노드 이상에서는 노드당 초당 1백만 개 이상의 요청 또는 클러스터당 초당 5억 개 이상의 요청을 처리할 수 있습니다.

또한 Valkey용 ElastiCache 버전 8.0을 사용하면 Valkey용 ElastiCache 버전 7.2 및 Redis OSS용 버전 7.1에 비해 키당 32바이트 적은 메모리를 사용하여 클러스터 모드를 사용하는 노드 기반 클러스터의 메모리 효율성이 향상됩니다. 서버리스 구성은 성능이 향상되어 몇 분 만에 캐시당 초당 5백만 요청 수까지 확장할 수 있는데, 이는 Valkey 7.2보다 최대 5배 빠르며 지연 시간은 마이크로초 수준입니다.

ElastiCache는 캐시 배포 선택에 따라 캐시의 CPU 사용률을 측정하는 두 가지 지표 세트를 제공합니다. ElastiCache Serverless를 사용하는 경우 ElastiCache Processing Units(ECPU) 지표로 CPU 사용률을 모니터링할 수 있습니다. 요청에 사용되는 ECPU의 수는 소요된 vCPU 시간과 전송된 데이터의 양에 따라 달라집니다. Valkey GET 및 SET 명령 또는 Memcached get 및 set 명령과 같은 각 읽기 및 쓰기에는 전송되는 데이터의 킬로바이트(KB)당 1 ECPU가 필요합니다. 인 메모리 데이터 구조에서 작동하는 일부 명령은 GET 또는 SET 명령보다 vCPU 시간을 더 많이 소비할 수 있습니다. ElastiCache는 SET 또는 GET 명령이 소요한 vCPU 시간의 기준선과 비교하여 명령에 소요된 vCPU 시간을 기반으로 소비된 ECPU 수를 계산합니다. 명령에 vCPU 시간이 더 걸리고 기준선인 1개의 ECPU보다 많은 데이터가 전송되는 경우, ElastiCache는 두 차원 중 더 높은 차원을 기준으로 필요한 ECPU를 계산합니다.

자체 클러스터를 설계할 때 EngineCPUUtilization 및 CPUUtilization을 모니터링할 수 있습니다. CPUUtilization 지표는 인스턴스(노드)의 CPU 사용률을 측정하고 EngineCPUUtilization 지표는 엔진 프로세스 수준의 사용률을 측정합니다. 주 엔진 프로세스는 단일 스레드이며 인스턴스에서 사용할 수 있는 여러 CPU 코어 중 하나의 CPU만 사용하기 때문에 CPUUtilization 지표 외에도 EngineCPUUtilization 지표가 필요합니다. 따라서 CPUUtilization 지표는 프로세스 수준의 CPU 사용률에 대한 정확한 가시성을 제공하지 않습니다. CPUUtilization 지표와 EngineCPUUtilization 지표를 함께 사용하여 Valkey 클러스터의 CPU 사용률을 세부적으로 파악하는 것이 좋습니다.

두 지표 세트 모두 모든 AWS 리전에서 사용할 수 있으며 Amazon CloudWatch 또는 콘솔을 사용하여 이러한 지표에 액세스할 수 있습니다. 또한 설명서를 참조하여 성능 모니터링에 유용한 지표에 대해 알아보실 것을 권장합니다.

읽기 전용 복제본

읽기 전용 복제본은 다음 2가지 용도로 사용됩니다.

  • 장애 처리
  • 읽기 조정

읽기 전용 복제본이 있는 캐시를 실행하면 기본 복제본에서 쓰기 및 읽기 기능을 둘 다 제공합니다. 복제본은 읽기 트래픽만 처리하며 기본 복제본이 손상된 경우 웜 스탠바이로도 사용할 수 있습니다.

ElastiCache Serverless를 사용하면 읽기 전용 복제본이 서비스에 의해 자동으로 유지 관리됩니다. 자체 캐시를 설계하는 경우, 특정 프라이머리 노드가 제대로 작동하기 위해 읽기 전용 복제본을 하나 이상 배포하는 위치는 다양합니다. 읽기 전용 복제본을 배포하는 일반적인 이유는 다음과 같습니다.

  • 읽기 중심의 워크로드를 위해 단일 기본 노드의 컴퓨팅 또는 I/O 용량을 초과하여 확장: 이러한 초과 읽기 트래픽은 하나 이상의 읽기 전용 복제본으로 전달될 수 있습니다.
  • 프라이머리를 사용할 수 없는 동안 읽기 트래픽 제공: 프라이머리 노드가 I/O 요청을 처리하지 못할 경우(예: 백업 또는 예약된 유지 관리를 위한 I/O 중단) 읽기 트래픽을 읽기 전용 복제본으로 보낼 수 있습니다. 이 사용 사례의 경우 기본 인스턴스를 사용할 수 없으므로 읽기 전용 복제본의 데이터가 무효일 수 있다는 점에 유의합니다. 또한 읽기 전용 복제본을 사용하여 실패한 기본 복제본을 다시 시작할 수 있습니다.

데이터 보호 시나리오: 예기치 않은 경우나 프라이머리 노드 오류, 프라이머리 노드가 있는 AZ를 사용할 수 없는 경우가 발생하면 다른 AZ에 있는 읽기 전용 복제본을 새로운 프라이머리로 승격할 수 있습니다.

기본 캐시 노드에 연결하는 것처럼 읽기 전용 복제본에 연결할 수 있습니다. 읽기 전용 복제본이 여러 개인 경우 애플리케이션이 읽기 전용 복제본에 읽기 트래픽을 분산하는 방법을 결정합니다. 자세한 내용은 다음과 같습니다.

  • Valkey 또는 Redis(클러스터 모드 비활성화) OSS 클러스터. 읽기 작업에 개별 노드 엔드포인트를 사용합니다. (API/CLI에서는 이를 읽기 엔드포인트라고 합니다.)
  • Valkey 또는 Redis OSS(클러스터 모드 활성화) 클러스터. 클러스터의 구성 엔드포인트를 모든 작업에 사용합니다. 개별 노드 엔드포인트에서 여전히 읽을 수 있습니다. (API 및 CLI에서는 이를 읽기 엔드포인트라고 합니다.)

ElastiCache에서는 지정된 프라이머리 캐시 노드에 대해 읽기 전용 복제본을 최대 5개까지 만들 수 있습니다.

장애 조치가 발생할 경우 장애 조치가 완료되면 연결된 사용 가능한 읽기 전용 복제본이 복제를 자동으로 재개합니다(새로 승격된 읽기 전용 복제본에서 업데이트를 가져옴).

프라이머리 캐시 노드로 업데이트는 모든 관련 읽기 전용 복제본에 자동으로 복제됩니다. 그러나 Valkey 또는 Redis OSS의 비동기 복제 기술을 사용하면 다양한 이유로 읽기 전용 복제본이 프라이머리 캐시 노드보다 지연될 수 있습니다. 대표적인 이유는 다음과 같습니다.

  • 프라이머리 캐시 노드에 대한 쓰기 I/O 볼륨이 변경 내용이 읽기 전용 복제본에 적용될 수 있는 비율 초과.
  • 네트워크 파티션이나 프라이머리 캐시 노드와 읽기 전용 복제본 간의 지연 시간.

읽기 전용 복제본은 Valkey 또는 Redis OSS 복제의 장단점을 가지고 있습니다. 읽기 전용 복제본을 사용하는 경우 읽기 전용 복제본과 프라이머리 캐시 노드 사이에 지연이나 ‘불일치’가 발생할 수 있다는 점을 인식해야 합니다. ElastiCache는 불일치를 이해하는 데 도움이 되는 지표를 생성합니다.

읽기 전용 복제본은 표준 캐시 노드와 동일한 요금이 청구됩니다. 표준 캐시 노드와 마찬가지로 읽기 전용 복제본의 캐시 노드 시간당 요금은 읽기 전용 복제본의 캐시 노드 클래스에 의해 결정됩니다. 최신 요금 정보는 ElastiCache 요금 페이지를 참조하세요. 기본 캐시 노드와 읽기 전용 복제본 간에 데이터를 복제할 때 발생한 데이터 전송에는 요금이 부과되지 않습니다. 읽기 전용 복제본의 요금 청구는 읽기 전용 복제본이 성공적으로 생성된 직후에 시작됩니다(상태가 활성으로 표시되는 경우). 사용자가 삭제 명령을 실행할 때까지 읽기 전용 복제본에는 표준 ElastiCache 캐시 노드 시간 요금이 청구됩니다.

ElastiCache에서는 시작된 장애 조치를 지원하므로 가능한 한 빨리 캐시 작업을 다시 시작할 수 있습니다. 장애 조치 시, ElastiCache가 단순히 캐시 노드의 DNS 레코드를 반전시켜 읽기 전용 복제본을 가리킵니다. 그리고 이 읽기 전용 복제본이 승격되어 새 기본 복제본이 됩니다. 모범 사례에 따라 애플리케이션 계층에서 캐시 노드 연결을 다시 시도하는 것이 좋습니다. 일반적으로 시작부터 완료까지, 아래의 1~5단계는 6분 이내에 완료됩니다.

다음은 자동 장애 조치 이벤트이며 발생 순서로 나열되어 있습니다.

  1. 복제 그룹 메시지: 노드 그룹 <node-group-id>에 대해 장애 조치 테스트 API 호출
  2. 캐시 클러스터 메시지: 프라이머리 노드 <primary-node-id>에서 복제 노드 <node-id>(으)로의 장애 조치 완료
  3. 복제 그룹 메시지: 프라이머리 노드 <primary-node-id>에서 복제 노드 <node-id>(으)로의 장애 조치 완료
  4. 캐시 클러스터 메시지: 캐시 노드 <node-id> 복구 중
  5. 캐시 클러스터 메시지: 캐시 노드 <node-id>에 대한 복구 완료

아니요. 읽기 전용 복제본은 프라이머리 캐시 노드와 동일한 리전의 동일하거나 다른 AZ에서만 프로비저닝할 수 있습니다. 그러나 글로벌 데이터 스토어를 사용하면 AWS 리전 전체에서 완전관리형 방식의 빠르고 안정적이며 보안에 집중한 복제를 수행할 수 있습니다. 이 기능을 사용하면 ElastiCache에 대한 교차 리전 읽기 복제본 클러스터를 생성하여 AWS 리전 전체에서 짧은 지연 시간의 읽기 및 재해 복구를 지원할 수 있습니다.

예. 클러스터 환경에 있는 하나 이상의 샤드에 읽기 전용 복제본을 추가하거나 제거할 수 있습니다. 이 작업이 진행되는 동안 해당 클러스터는 계속해서 온라인을 유지하고 수신 I/O를 처리합니다.

다중 AZ

다중 AZ는 자체 ElastiCache 캐시를 설계할 때 가용성이 더욱 뛰어난 구성으로 실행할 수 있는 기능입니다. 모든 ElastiCache Serverless 캐시는 다중 AZ 구성에서 자동으로 실행됩니다. ElastiCache 복제 그룹은 기본 복제본 및 최대 5개의 읽기 전용 복제본으로 구성되어 있습니다. 다중 AZ가 활성화된 경우 프라이머리당 1개 이상의 복제본이 필요합니다. 특정 유형의 예정된 유지 관리를 수행하는 동안이나 ElastiCache 노드 장애 또는 AZ 장애와 같이 예기치 않은 상황이 발생하면 ElastiCache는 자동으로 기본 노드의 장애를 감지하고 읽기 전용 복제본을 선택한 다음 이를 새로운 기본 노드로 승격합니다. 또한 ElastiCache는 승격된 읽기 전용 복제본의 DNS 변경 사항을 전파하므로 애플리케이션이 기본 노드 엔드포인트에 쓸 때 엔드포인트를 변경하지 않아도 됩니다.

ElastiCache를 다중 AZ 모드에서 실행하는 것의 가장 큰 이점은 가용성이 강화되며 관리의 필요가 줄어든다는 점입니다. 다중 AZ 구성에서 ElastiCache를 실행하는 경우 캐시는 99.99% 가용성 SLA를 받을 수 있습니다. ElastiCache 프라이머리 노드 오류가 발생하면 기본 노드로의 읽기 및 쓰기 기능에 미치는 영향은 자동 장애 조치가 완료될 때까지 소요되는 시간으로 제한됩니다. 다중 AZ가 활성화되어 있는 경우 ElastiCache 노드 장애 조치가 자동으로 수행되며 관리가 필요하지 않습니다.

ElastiCache를 사용하며 프라이머리 노드와 1개 이상의 읽기 전용 복제본으로 구성된 복제 그룹이 있는 경우 다중 AZ를 사용할 수 있습니다. 프라이머리 노드에 장애가 발생하면 ElastiCache는 자동으로 장애를 감지하고, 사용 가능한 읽기 전용 복제본 중 하나를 선택한 다음, 이를 새로운 기본 노드로 승격합니다. ElastiCache는 애플리케이션이 계속 기본 엔드포인트에 쓸 수 있도록 승격된 복제본의 DNS 변경 사항을 전파합니다. 또한 ElastiCache는 오류가 발생한 기본 노드의 동일한 AZ에서 승격된 읽기 전용 복제본을 대체하도록 새로운 노드를 가동합니다. 일시적인 AZ 중단으로 인해 기본 노드에 오류가 발생한 경우 AZ가 복구되면 새로운 복제본이 시작됩니다.

예. 동일한 AZ에 기본 및 복제본을 모두 배치한다고 해서 ElastiCache 복제 그룹이 AZ 중단에 대해 복원력을 가지는 것은 아니라는 점에 유의하세요.

ElastiCache는 다음과 같은 경우 읽기 전용 복제본으로 장애 조치를 수행합니다.

  • 프라이머리 AZ의 가용성 손실
  • 기본 복제본에 대한 네트워크 연결 상실
  • 기본 복제본의 컴퓨팅 장치 장애

읽기 전용 복제본이 2개 이상 있는 경우, 기본 복제본으로의 비동기식 복제 지연이 가장 짧은 읽기 전용 복제본이 승격됩니다.

예. ElastiCache는 자동 장애 조치가 수행될 때 알려주는 이벤트를 생성합니다. DescribeEvents API를 사용하여 ElastiCache 노드와 관련된 이벤트에 대한 정보를 반환할 수 있습니다. 또는 AWS ElastiCache Management Console에서 Events 섹션을 선택합니다.

AZ는 같은 리전의 다른 AZ에 지연 시간이 짧은 네트워크 연결을 제공하도록 설계되었습니다. 하나의 AZ가 중단되더라도 애플리케이션이 복원력을 가질 수 있도록 여러 AZ 전반에 애플리케이션과 다른 AWS 리소스가 중복되도록 설계해야 합니다.

다중 AZ에 대한 자세한 내용은 ElastiCache 설명서를 참조하세요.

백업 및 복원

백업 및 복원이란 ElastiCache 캐시의 스냅샷을 생성할 수 있도록 하는 기능입니다. ElastiCache는 스냅샷을 저장하여 사용자가 이후 캐시를 복원할 수 있도록 합니다. 이 기능은 현재 Valkey용 ElastiCache, Redis OSS용 ElastiCache 및 Serverless에서 지원됩니다.

스냅샷을 생성하면 노드 장애는 물론 하드웨어 장애와 같이 예기치 못한 상황으로 인해 데이터가 손실된 경우 유용하게 사용할 수 있습니다. 백업을 사용하는 또 다른 일반적인 이유는 아카이빙을 위해서입니다. 스냅샷은 Amazon S3에 저장됩니다.

ElastiCache 스냅샷을 캐시와 같은 리전에 있는 승인된 S3 버킷으로 내보낼 수 있습니다.

예. 먼저 같은 리전에 있는 승인된 S3 버킷 중 원하는 버킷으로 스냅샷을 복사한 다음, 다른 계정에 교차 계정 버킷 권한을 부여해야 합니다.

ElastiCache는 활성화된 각 ElastiCache 캐시에 대해 스냅샷 하나만큼의 스토리지 공간을 무료로 제공합니다. 추가 스토리지는 스냅샷에서 사용한 공간에 따라 월별 1GB당 0.085 USD가 청구됩니다. 가격은 모든 리전에서 동일합니다. 스냅샷 사용을 위한 데이터 전송 요금은 무료입니다.

ElastiCache 캐시를 삭제하는 경우 수동 스냅샷은 보존됩니다. 캐시를 삭제하기 전에 최종 스냅샷을 생성할 수 있는 옵션도 있습니다. 자동 캐시 스냅샷은 보존되지 않습니다.

향상된 엔진

ElastiCache의 엔진은 Valkey 및 Redis OSS와 완벽하게 호환될 뿐만 아니라 성능, 견고성, 안정성을 높여주는 향상된 기능도 함께 제공합니다. 다음은 향상된 기능 중 일부입니다.

  • 가용 메모리 추가: 이제 동기화 및 스냅샷이 진행되는 동안 스왑 사용량 증가에 대한 걱정 없이 애플리케이션에 더 많은 메모리를 안전하게 할당할 수 있습니다.
  • 동기화 개선: 부하가 높거나 연결이 끊긴 네트워크에서 복구할 때 좀 더 견고한 동기화를 지원합니다. 또한, 기본 노드와 읽기 전용 복제본이 이 작업을 수행하는 데 디스크를 사용하지 않으므로 동기화 속도가 더 빠릅니다.
  • 원활한 장애 조치: 장애 조치가 수행될 경우 이제 샤드가 더 빠르게 복구됩니다. 복제본에서 프라이머리 노드와 전체 동기화를 다시 실행하기 위해 데이터를 보낼 필요가 없기 때문입니다.

향상된 엔진은 Valkey 또는 Redis OSS와 완벽하게 호환되므로, 애플리케이션 코드를 변경할 필요 없이 견고함과 안정성을 개선할 수 있습니다.

향상된 엔진 사용에 따르는 추가 요금은 없습니다.

암호화

전송 중 암호화, 저장 시 암호화, Valkey AUTH 및 역할 기반 액세스 제어(RBAC)는 ElastiCache 캐시를 생성할 때 선택할 수 있는 기능입니다. 전송 중 암호화를 활성화한 경우 AUTH 또는 RBAC를 사용하도록 선택하여 추가 보안 및 액세스 제어를 제공할 수 있습니다.

저장 중 암호화는 데이터의 무단 액세스를 방지하는 메커니즘을 제공합니다. 활성화되면 다음 측면이 암호화됩니다.

  • 동기화, 백업 및 스왑 작업 중의 디스크
  • Amazon S3에 저장된 백업

ElastiCache는 기본(서비스 관리형) 저장 중 암호화를 제공하며 AWS KMS에 있는 대칭 고객 관리형 AWS KMS 키를 사용할 수 있는 기능도 함께 제공합니다. 자세히 알아보려면 저장 중 암호화를 참조하세요.

전송 중 암호화 기능은 서버(기본 및 읽기 전용 복제본)뿐만 아니라 클라이언트와 ElastiCache 간의 통신 암호화를 용이하게 합니다. ElastiCache 전송 중 암호화에 대해 자세히 알아보세요.

아니요. ElastiCache가 백그라운드에서 인증서 만료와 갱신을 관리합니다. 인증서를 유지 관리하기 위해 사용자가 수행해야 하는 작업은 없습니다.

아니요. 암호화를 사용할 때 부가되는 추가 비용은 없습니다.

글로벌 데이터 스토어

글로벌 데이터 저장소는 ElastiCache의 기능으로 신속하고 신뢰할 수 있으며 보안에 집중한 완전관리형 교차 리전 복제를 제공합니다. 글로벌 데이터 스토어를 통해 하나의 리전에서 캐시에 데이터를 작성하고, 최대 2개의 다른 교차 리전 복제본 클러스터에서 해당 데이터를 읽을 수 있으므로, 리전 간 짧은 지연 시간의 읽기와 재해 복구가 가능합니다.

글로벌 공간을 활용하는 실시간 애플리케이션용으로 설계된 글로벌 데이터 스토어는 일반적으로 1초 이내에 여러 지역에 걸쳐 데이터를 복제하여 최종 사용자에게 더 가까운 지리적 위치 읽기를 제공함으로써 애플리케이션의 응답성을 높입니다. 혹시라도 한 리전의 성능이 저하되면 정상 상태의 교차 리전 복제본 캐시 중 하나를 전체 읽기 및 쓰기 기능을 갖춘 기본 복제본으로 승격할 수 있습니다. 이 작업이 시작되면 승격은 보통 1분 이내에 완료되므로, 애플리케이션의 가용성을 유지할 수 있습니다.

글로벌 데이터 스토어는 Valkey용 ElastiCache 버전 7.2 및 Redis OSS용 ElastiCache 버전 5.0.6 이상에서 지원됩니다.

글로벌 데이터 스토어 내에서 최대 2개의 보조 리전으로 복제할 수 있습니다. 혹시라도 한 리전의 성능이 저하되면 보조 리전의 캐시가 지연 시간이 짧은 로컬 읽기 및 재해 복구에 사용될 수 있습니다.

기존 캐시를 사용하거나 기본 복제본으로 사용할 새로운 캐시를 생성하여 글로벌 데이터 스토어를 설정할 수 있습니다. ElastiCache 관리 콘솔에서 몇 단계만 거치거나 최신 AWS SDK 또는 AWS CLI를 다운로드하여 글로벌 데이터 스토어를 생성할 수 있습니다. AWS CloudFormation은 글로벌 데이터 스토어를 지원합니다.

아니요. ElastiCache는 기본 클러스터(리전)의 성능이 저하되는 경우 보조 클러스터를 자동으로 승격하지 않습니다. 수동으로 세컨더리 클러스터를 프라이머리 클러스터로 승격하여 장애 조치를 시작할 수 있습니다. 보조 클러스터의 장애 조치 및 승격 작업은 보통 1분 이내에 완료됩니다.

ElastiCache는 RPO 및 RTO에 대한 SLA를 제공하지 않습니다. RPO는 리전 간 복제 지연의 영향을 받으며, 리전 간 네트워크 지연 시간과 교차 리전 네트워크 트래픽 혼잡도에 따라 달라집니다. 글로벌 데이터 스토어의 RPO는 보통 1초 미만이므로 기본 리전에 작성되는 데이터를 1초 이내에 보조 리전에서 사용할 수 있습니다. 글로벌 데이터 스토어의 RTO는 보통 1분 미만입니다. 보조 클러스터로 장애 조치가 시작되면 ElastiCache가 1분 이내에 전체 읽기 및 쓰기 기능을 갖추도록 보조 클러스터를 승격합니다.

ElastiCache는 글로벌 데이터 스토어 사용에 대해 추가 비용을 청구하지 않습니다. 글로벌 데이터 스토어에 있는 기본 클러스터와 보조 캐시에 대한 비용과 교차 리전 데이터 전송 트래픽에 대한 비용을 지불하면 됩니다.

Memcached FAQ

Memcached 기능

ElastiCache for Memcached를 사용하여 다양한 객체를 캐싱할 수 있습니다. 이러한 객체에는 영구 데이터 저장소(예: Amazon Relational Database Service(Amazon RDS), Amazon DynamoDB 또는 Amazon EC2에서 호스팅되는 자체 관리형 데이터베이스)의 콘텐츠, 동적으로 생성된 웹 페이지(예: Nginx 사용) 또는 영구 백업 저장소가 필요하지 않은 임시 세션 데이터가 포함됩니다. 또한 이 서비스로 고빈도 카운터를 구현하여 대용량 웹 애플리케이션에 허용 제어 기능을 배포할 수 있습니다.

예. ElastiCache는 Amazon RDS 또는 DynamoDB와 같은 데이터 스토리지에 적합한 프런트 엔드로서, 매우 높은 요청 비율 또는 짧은 지연 시간이 필요한 애플리케이션에 고성능 미들 티어를 제공합니다.

ElastiCache는 Memcached와 프로토콜이 호환됩니다. 따라서 기존 Memcached 배포에서 하던 것과 똑같이 get, set, incr, decr 등의 표준 Memcached 작업을 사용하면 됩니다. ElastiCache는 텍스트 프로토콜과 바이너리 프로토콜을 모두 지원합니다. 대부분의 표준 통계 결과도 CloudWatch에서 그래프로 볼 수 있도록 지원하고 있습니다. 덕분에 애플리케이션을 재컴파일하거나 재링크할 필요 없이 ElastiCache로 쉽게 이전할 수 있습니다. 물론 기존 라이브러리도 그대로 사용 가능합니다. 애플리케이션이 액세스하는 캐시 서버를 구성하려면, AWS가 프로비저닝한 서버(노드)의 엔드포인트가 포함되도록 애플리케이션의 Memcached config 파일을 업데이트합니다. 엔드포인트 목록은 콘솔의 Copy Node Endpoints 옵션 또는 DescribeCacheClusters API를 이용하면 쉽게 받을 수 있습니다. 다른 마이그레이션 프로세스와 마찬가지로, 현재 솔루션의 이전을 완료하기 전에 새 ElastiCache 배포를 철저히 테스트하는 것이 좋습니다.

Amazon EC2 네트워크 또는 자체 데이터 센터에서 Amazon VPC의 ElastiCache 클러스터에 액세스할 수 있습니다. 자세한 내용은 Amazon VPC 액세스 패턴을 참조하세요. ElastiCache는 DNS 항목을 통해 클라이언트 애플리케이션이 서버(노드)를 찾을 수 있도록 지원합니다. 노드의 DNS 이름은 그대로 유지됩니다. 하지만 예를 들어 VPC 외 설치에서 장애가 발생한 후에는 노드가 자동으로 교체되므로 IP 주소는 시간이 지나면서 바뀔 수 있습니다. 노드 장애에 대처하는 방법에 대한 권장 사항은 이 FAQ를 참조하십시오.

구성 및 조정

이 질문에는 정확한 답을 드리기 어렵지만, ElastiCache의 경우 언제든 빠르게 노드를 추가하거나 제거할 수 있으므로 정확히 몇 개의 노드를 사용해야 하는지 고민하지 않아도 됩니다. 또한 ElastiCache 서버리스를 사용하여 가용성이 뛰어난 Memcached 캐시 실행을 간소화할 수 있습니다. 최초 구성 시에는 다음과 같은 서로 관련된 두 가지 측면을 고려해 선택할 수 있습니다.

  • 목표 캐시 적중률을 달성하는 데 필요한 총 메모리
  • 노드 장애가 발생하더라도 데이터베이스 백엔드에 과부하가 걸릴 염려 없이 원하는 애플리케이션 성능을 유지하는 데 필요한 노드 수

필요한 메모리 양은 데이터 세트 크기와 애플리케이션의 액세스 패턴에 따라 달라집니다. 내결함성을 높이려면 필요한 총 메모리를 대강 계산한 다음, 노드 한두 개에 장애가 생기더라도 애플리케이션 작동에 문제가 없을 만큼 충분한 수의 노드로 총 메모리를 나누십시오. 예를 들어, 필요한 메모리가 13GB라면 cache.m4.xlarge 노드 하나보다는 cache.m4.large 노드 두 개를 사용하는 것이 좋습니다. 노드 한두 개의 장애 복구 때문에 캐시 적중률이 잠깐 떨어지더라도 데이터베이스 등의 기타 시스템에 과부하가 걸리지 않게 하는 것이 중요합니다. 자세한 내용은 ElastiCache 사용 설명서를 참조하세요.

예. 클러스터를 생성하거나 기존 클러스터에 노드를 추가할 때 새로운 노드에 대한 AZ를 선택할 수 있습니다. 각 AZ에서 요청 노드 수를 지정하거나 영역에 걸쳐 노드를 분산하도록 선택할 수 있습니다. 클러스터가 Amazon VPC에 있는 경우 선택한 캐시 서브넷 그룹 일부분인 AZ 내에만 노드를 배치할 수 있습니다. 자세한 내용은 ElastiCache VPC 설명서를 참조하세요.

리전당 최대 300개까지 노드를 실행할 수 있습니다. 노드가 더 필요하면 ElastiCache 한도 증가 요청 양식을 작성해 주세요.

Amazon ElastiCache에서 노드 장애를 감지하면 다음과 같이 자동으로 대응합니다.

  • ElastiCache가 새 서비스 리소스를 확보하여 노드를 복구한 다음, 해당 노드의 기존 DNS 이름을 새 서비스 리소스로 리디렉션합니다. Amazon VPC 설치의 경우, 노드가 장애에서 복구될 때 ElastiCache는 DNS 이름과 IP 주소가 모두 그대로 유지되도록 해줍니다. Amazon VPC 외 설치의 경우, ElastiCache는 노드의 DNS 이름이 그대로 유지되도록 해주지만, 노드의 해당 IP 주소는 변경될 수 있습니다.
  • 클러스터에 SNS 주제를 연결해 둔 경우 새 노드를 구성해 사용할 준비가 되면 ElastiCache가 SNS 알림을 보내 노드 복구가 진행되었음을 알려줍니다. 원한다면 Memcached 클라이언트 라이브러리가 복구된 노드로 다시 연결되도록 애플리케이션을 설정할 수도 있는데, 이는 서버와의 커뮤니케이션 오류나 제한 시간 초과가 발생할 경우 간혹 Memcached 라이브러리가 서버(노드) 사용을 무기한으로 중단할 수도 있으므로 중요합니다.

콘솔에서 사용 중인 캐시 클러스터에 대한 Nodes 탭의 "Add Node" 옵션을 사용하거나 ModifyCacheCluster API를 호출해 기존 Memcached 클러스터에 노드를 더 추가하면 됩니다.

호환성

ElastiCache는 Amazon RDS 및 DynamoDB와 같은 AWS의 프런트 엔드로 매우 적합하며, 고성능 애플리케이션에 매우 짧은 지연 시간을 제공하고 요청 볼륨의 부담을 일부 줄여줍니다. 반면에 이러한 서비스는 지속적인 데이터 내구성을 제공합니다. Amazon EC2 및 Amazon EMR과 함께 애플리케이션 성능을 개선하는 데에도 유용합니다.

Memcached 클라이언트 라이브러리는 모두는 아니지만 대부분 주요 프로그래밍 언어에서 사용할 수 있습니다. ElastiCache를 사용하는 중 특정 Memcached 클라이언트에 문제가 생기면 ElastiCache 커뮤니티 포럼을 통해 당사에 알려 주시기 바랍니다.

자동 검색

자동 검색은 개발자의 시간과 노력을 덜어주고 동시에 애플리케이션의 복잡성을 줄여주는 기능입니다. 자동 검색을 사용하면 ElastiCache 클러스터에서 노드를 추가하거나 삭제할 때 클라이언트별로 캐시 노드를 자동 검색할 수 있습니다. 이전에는 클러스터 멤버십 변경을 처리하기 위해 개발자가 캐시 노드 엔드포인트 목록을 수동으로 업데이트해야 했습니다. 클라이언트 애플리케이션이 설계된 방식에 따라 대개 애플리케이션을 종료했다가 다시 시작하는 클라이언트 초기화 과정이 필요하고, 이로 인해 가동 중지 시간이 발생하게 됩니다. ElastiCache는 자동 검색을 통해 이러한 복잡성을 제거합니다. 또한 자동 검색을 사용하면 Memcached 프로토콜의 이전 버전 프로토콜과 호환될 뿐 아니라 ElastiCache가 캐시 클러스터 멤버십에 대한 정보를 클라이언트에 제공합니다. 추가 정보를 처리할 수 있는 클라이언트는 초기화하지 않고도 ElastiCache 클러스터의 최신 노드를 사용하도록 스스로 재구성됩니다.

ElastiCache 클러스터는 여러 노드와 함께 생성될 수 있으며 각 노드는 이름이 지정된 엔드포인트를 통해 주소가 지정됩니다. 또한 자동 검색을 사용하는 경우에는 ElastiCache 클러스터에 클러스터가 존재하는 동안 유효한 DNS 레코드인 고유한 구성 엔드포인트가 지정됩니다. 이 DNS 레코드에는 클러스터에 속한 노드의 DNS 이름이 포함됩니다. ElastiCache는 구성 엔드포인트가 항상 이러한 대상 노드를 하나 이상 가리키도록 합니다. 대상 노드를 쿼리하면 해당 클러스터의 모든 노드에 대한 엔드포인트가 반환됩니다. 그런 다음 이전과 동일하게 클러스터 노드에 연결할 수 있고 get, set, incr 및 decr과 같은 Memcached 프로토콜 명령을 사용할 수 있습니다. 자세한 내용은 설명서를 참조하세요. 자동 검색을 사용하려면 자동 검색이 가능한 클라이언트가 필요합니다. .Net, Java 및 PHP용 자동 검색 클라이언트는 ElastiCache 콘솔에서 다운로드할 수 있습니다. 초기화하는 동안 해당 클라이언트는 구성 엔드포인트를 사용하여 ElastiCache 클러스터의 현재 멤버를 자동으로 확인합니다. 노드를 추가 또는 삭제하여 캐시 클러스터를 변경하거나 장애 발생으로 노드가 대체되는 경우 자동 검색 클라이언트가 자동으로 변경 사항을 확인하므로 클라이언트를 수동으로 초기화할 필요가 없습니다.

시작하려면 ElastiCache 콘솔에서 ElastiCache 클러스터 클라이언트 다운로드 링크를 선택하여 ElastiCache 클러스터 클라이언트를 다운로드합니다. 다운로드하려면 ElastiCache 계정이 있어야 합니다. 아직 계정이 없으면 ElastiCache 세부 정보 페이지에서 가입할 수 있습니다. 클라이언트를 다운로드한 다음 ElastiCache 콘솔로 이동하여 ElastiCache 클러스터를 설정하고 활성화할 수 있습니다. 자세한 내용은 설명서를 참조하세요.

예. 언제든지 자동 검색의 사용을 중지할 수 있습니다. ElastiCache 클러스터 클라이언트를 초기화하는 동안 운영 모드를 지정하여 자동 검색의 사용을 중지할 수 있습니다. 또한 ElastiCache가 계속 Memcached를 지원하므로 이전과 마찬가지로 모든 Memcached 프로토콜 호환 클라이언트를 사용할 수 있습니다.

자동 검색을 이용하려면 자동 검색이 가능한 클라이언트를 사용하여 ElastiCache 클러스터에 연결해야 합니다. ElastiCache는 현재 .Net, Java 및 PHP에 대한 자동 검색이 가능한 클라이언트를 지원합니다. 이러한 클라이언트는 ElastiCache 콘솔에서 다운로드할 수 있습니다. 사용 가능한 주요 Memcached 클라이언트를 구축하여 다른 언어용 클라이언트를 생성할 수 있습니다.

Memcached 클라이언트 라이브러리를 받아서 자동 검색에 대한 지원을 추가할 수 있습니다. 자동 검색을 사용하도록 자체 클라이언트를 추가 또는 수정하려면 자동 검색 명령 세트 설명서를 참조하시기 바랍니다.

예. ElastiCache는 계속 Memcached 프로토콜과 호환되며 클라이언트를 변경할 필요가 없습니다. 하지만 자동 검색 기능을 활용하기 위해 Memcached 클라이언트 기능을 개선했습니다. ElastiCache 클러스터 클라이언트를 사용하지 않는 경우 자체 클라이언트를 계속 사용할 수 있습니다. 그렇지 않으면 자동 검색 명령 세트를 이해하도록 자체 클라이언트 라이브러리를 수정하세요.
 

예. 자동 검색이 지원되는 클라이언트와 기존 Memcached 클라이언트를 통해 동시에 같은 ElastiCache 클러스터에 연결할 수 있습니다. ElastiCache는 Memcached와 100% 호환됩니다.

예. 언제든지 자동 검색의 사용을 중지할 수 있습니다. ElastiCache 클러스터 클라이언트를 초기화하는 동안 운영 모드를 지정하여 자동 검색의 사용을 중지할 수 있습니다. 또한 ElastiCache가 계속 Memcached를 지원하므로 이전과 마찬가지로 모든 Memcached 프로토콜 호환 클라이언트를 사용할 수 있습니다.

엔진 버전 관리

ElastiCache를 사용하면 클러스터를 지원하는 Memcached 프로토콜 호환 소프트웨어를 ElastiCache가 지원하는 새 버전으로 업그레이드할지와 그 시기를 제어할 수 있습니다. 이런 유연성 덕분에 특정 Memcached 버전과의 호환성은 그대로 유지하면서 프로덕션 환경에 배포하기 전에 애플리케이션에서 새 버전을 테스트해 보고, 원하는 조건과 일정에 맞춰 버전 업그레이드를 수행할 수 있습니다. 버전 업그레이드는 몇 가지의 호환성 위험이 있어 자동으로 이루어지지 않으며, 사용자가 직접 시작해야 합니다. 이 방식의 소프트웨어 패치에서는 버전 업그레이드를 사용자가 주도해서 관리해야 하지만 ElastiCache에 대한 패치 애플리케이션의 작업 부담은 크게 줄어듭니다. 버전 관리에 대한 자세한 내용은 해당 FAQ를 참조하세요. ElastiCache 사용 설명서를 참조해도 됩니다. 엔진 버전 관리 기능은 사용자에게 패치 진행 방법에 대해 최대한의 제어 권한을 주지만 시스템이나 캐시 소프트웨어에서 보안 취약성이 감지되는 경우에는 AWS에서 클러스터를 자동으로 패치할 수도 있습니다.

현재 지원되는 버전(부 또는 주 버전) 중 어느 버전으로 할지는 새 클러스터를 생성할 때 지정할 수 있습니다. 지원되는 엔진 버전 릴리스로 업그레이드를 시작하려면 클러스터의 수정 옵션을 사용하면 됩니다. Cache Engine Version 필드에서 원하는 업그레이드 버전을 지정합니다. 그러면 업그레이드가 즉시(‘Apply Immediately(즉시 적용)’ 옵션을 선택한 경우) 진행되거나 클러스터에 대해 예약된 다음 유지 관리 기간 동안 진행됩니다.

예. 새 클러스터를 새 엔진 버전으로 생성하면 됩니다. 개발 또는 스테이징 애플리케이션을 이 클러스터로 연결해 놓고 테스트한 다음, 기존 클러스터를 업그레이드할지 결정할 수 있습니다.

주 버전과 부 버전 모두를 포함하여 더 많은 Memcached 버전을 ElastiCache에서 지원하도록 할 계획입니다. 특정 연도에 몇 개의 새 버전 릴리스를 지원할지는 Memcached 버전 릴리스의 빈도와 내용, 그리고 당사 엔지니어링 팀의 철저한 릴리스 검사 결과에 따라 달라질 수 있습니다.

Modify 프로세스를 사용하면 기존 Memcached 클러스터를 업그레이드할 수 있습니다. 이전 버전의 Memcached에서 Memcached 버전 1.4.33 이상으로 업그레이드할 때는 기존 매개변수인 max_chunk_size 값이 slab_chunk_max 매개변수에 필요한 조건을 만족하는지 확인하시기 바랍니다. 업그레이드 전제 조건을 살펴보세요.

Redis OSS FAQ

기능

ElastiCache는 클라우드에서 Redis OSS 프로토콜 준수 캐시의 배포 및 실행을 간소화하는 웹 서비스입니다. 이 서비스를 통해 Redis OSS 노드 관리, 모니터링 및 작업을 수행할 수 있으며 ElastiCache 콘솔, AWS CLI 또는 웹 서비스 API를 통해 노드 만들기, 삭제 및 수정을 수행할 수 있습니다. ElastiCache는 Redis OSS 클러스터 모드 사용, 클러스터 모드 사용 중지 상태에서 프라이머리 인스턴스에서 복제본으로 자동 장애 조치 등 고가용성 구성을 지원합니다.

예. ElastiCache는 Redis OSS 프로토콜과 호환되도록 설계되었습니다. 현재 기존 독립 실행형 Redis OSS 데이터 스토어에서 사용하는 코드, 애플리케이션, 드라이버 및 도구를 계속해서 ElastiCache에서 사용할 수 있으므로 별도로 언급하지 않는 한 ElastiCache로 마이그레이션되는 기존 Redis OSS 배포에서 코드를 변경할 필요가 없습니다.

최신 요금 정보는 Amazon 요금을 참조하세요.

예. ElastiCache를 사용하면 다른 AWS AZ에서 읽기 전용 복제본을 만들 수 있습니다. ElastiCache Serverless를 사용하는 경우 데이터는 고가용성을 위해 여러 AZ에 중복 저장됩니다. ElastiCache 캐시를 직접 설계할 때 노드에 장애가 발생하면 새 노드를 프로비저닝합니다. 프라이머리 노드에 장애가 발생하는 시나리오에서는 ElastiCache가 기존 읽기 전용 복제본을 기본 복제본 역할로 자동으로 승격합니다. 노드 장애를 처리하는 방법에 대한 자세한 내용은 복제 이해를 참조하세요.

ElastiCache API를 사용하고 선호하는 엔진 버전을 지정하여 새 엔진 버전으로 빠르게 업그레이드할 수 있습니다. ElastiCache 콘솔에서 캐시를 선택한 후 수정을 선택할 수 있습니다. 엔진 업그레이드 프로세스는 기존 데이터를 보존하도록 설계되었습니다. 자세한 내용은 캐싱 전략 및 모범 사례를 참조하세요.

아니요. 이전 엔진 버전으로 다운그레이드는 지원되지 않습니다.

예. ElastiCache의 글로벌 데이터 스토어 기능을 사용하여 교차 리전 복제본을 생성할 수 있습니다. 글로벌 데이터 스토어에서는 빠르고 안정적이며 보안에 집중한 완전관리형 교차 리전 복제를 제공합니다. 하나의 리전에서 ElastiCache 클러스터에 데이터를 작성하고, 최대 2개의 다른 교차 리전 복제본 클러스터에서 해당 데이터를 읽을 수 있으므로, 리전 간 지연 시간이 짧은 읽기와 재해 복구가 가능합니다.

성능

ElastiCache는 멀티플렉싱, 프레젠테이션 계층 오프로드 및 기타 기능을 통해 대규모 처리량과 지연 시간을 크게 개선하는 향상된 I/O 스레드를 제공합니다. 향상된 I/O 스레드는 I/O를 처리하고 워크로드에 맞게 동적으로 조정하는 데 더 많은 코어를 사용함으로써 성능을 개선합니다. ElastiCache는 암호화를 동일하게 향상된 I/O 스레드로 오프로드하여 TLS 지원 클러스터의 처리량을 높입니다. ElastiCache(Redis OSS) 버전 7.0에는 향상된 I/O 멀티플렉싱이 도입되었습니다. 이 멀티플렉싱은 여러 클라이언트 요청을 단일 채널로 결합하고 스레드 효율성을 개선합니다.

Redis OSS용 ElastiCache 버전 7.1 이상에서는 향상된 I/O 스레드 기능이 확장되어 프레젠테이션 계층 로직도 처리됩니다. 향상된 I/O 스레드는 클라이언트 입력을 읽을 뿐만 아니라 입력을 바이너리 명령 형식으로 구문 분석한 다음 실행을 위해 메인 스레드로 전달함으로써 성능을 높입니다. Redis OSS용 ElastiCache 버전 7.1을 사용하면 이전 버전에 비해 최대 100% 더 많은 처리량과 50% 더 짧은 P99 지연 시간을 실현할 수 있습니다. r7g.4xlarge 이상에서는 노드당 100만 건 이상의 초당 요청 수(RPS)를 달성할 수 있습니다.

ElastiCache는 캐시 배포 선택에 따라 캐시의 CPU 사용률을 측정하는 두 가지 지표 세트를 제공합니다. ElastiCache Serverless를 사용하는 경우 ElastiCache Processing Units(ECPU) 지표로 CPU 사용률을 모니터링할 수 있습니다. 요청에 사용되는 ECPU의 수는 소요된 vCPU 시간과 전송된 데이터의 양에 따라 달라집니다. Redis OSS GET 및 SET 명령 또는 Memcached get 및 set 명령과 같은 각 읽기 및 쓰기에는 전송되는 데이터의 킬로바이트(KB)당 1 ECPU가 필요합니다. 인 메모리 데이터 구조에서 작동하는 일부 Redis OSS 명령은 GET 또는 SET 명령보다 vCPU 시간을 더 많이 소비할 수 있습니다. ElastiCache는 SET 또는 GET 명령이 소요한 vCPU 시간의 기준선과 비교하여 명령에 소요된 vCPU 시간을 기반으로 소비된 ECPU 수를 계산합니다. 명령에 vCPU 시간이 더 걸리고 기준선인 1개의 ECPU보다 많은 데이터가 전송되는 경우, ElastiCache는 두 차원 중 더 높은 차원을 기준으로 필요한 ECPU를 계산합니다.

자체 클러스터를 설계할 때 EngineCPUUtilization 및 CPUUtilization을 모니터링할 수 있습니다. CPUUtilization 지표는 인스턴스(노드)의 CPU 사용률을 측정하고 EngineCPUUtilization 지표는 엔진 프로세스 수준의 사용률을 측정합니다. 주요 Redis OSS 프로세스는 단일 스레드이며 인스턴스에서 사용할 수 있는 여러 CPU 코어 중 하나의 CPU만 사용하기 때문에 CPUUtilization 지표 외에도 EngineCPUUtilization 지표가 필요합니다. 따라서 CPUUtilization 지표는 엔진 프로세스 수준의 CPU 사용률에 대한 정확한 가시성을 제공하지 않습니다. CPUUtilization 지표와 EngineCPUUtilization 지표를 함께 사용하여 Redis OSS 클러스터의 CPU 활용도를 세부적으로 파악하는 것이 좋습니다.

두 지표 세트 모두 모든 AWS 리전에서 사용할 수 있으며 Amazon CloudWatch 또는 콘솔을 사용하여 이러한 지표에 액세스할 수 있습니다. 또한 설명서를 참조하여 성능 모니터링에 유용한 지표에 대해 알아보실 것을 권장합니다.

읽기 전용 복제본

Redis OSS에서 읽기 전용 복제본은 다음 2가지 용도로 사용됩니다.

  • 장애 처리
  • 읽기 조정

읽기 전용 복제본이 있는 캐시를 실행하면 기본 복제본에서 쓰기 및 읽기 기능을 둘 다 제공합니다. 복제본은 읽기 트래픽만 처리하며 기본 복제본이 손상된 경우 웜 스탠바이로도 사용할 수 있습니다.

ElastiCache Serverless를 사용하면 읽기 전용 복제본이 서비스에 의해 자동으로 유지 관리됩니다. 자체 캐시를 설계하는 경우, 특정 프라이머리 노드가 제대로 작동하기 위해 읽기 전용 복제본을 하나 이상 배포하는 위치는 다양합니다. 읽기 전용 복제본을 배포하는 일반적인 이유는 다음과 같습니다.

  • 읽기 중심의 워크로드를 위해 단일 기본 노드의 컴퓨팅 또는 I/O 용량을 초과하여 확장: 이러한 초과 읽기 트래픽은 하나 이상의 읽기 전용 복제본으로 전달될 수 있습니다.
  • 프라이머리를 사용할 수 없는 동안 읽기 트래픽 제공: 프라이머리 노드가 I/O 요청을 처리하지 못할 경우(예: 백업 또는 예약된 유지 관리를 위한 I/O 중단) 읽기 트래픽을 읽기 전용 복제본으로 보낼 수 있습니다. 이 사용 사례의 경우 기본 인스턴스를 사용할 수 없으므로 읽기 전용 복제본의 데이터가 무효일 수 있다는 점에 유의합니다. 또한 읽기 전용 복제본을 사용하여 실패한 기본 복제본을 다시 시작할 수 있습니다.
  • 데이터 보호 시나리오: 예기치 않은 경우나 프라이머리 노드 오류, 프라이머리 노드가 있는 AZ를 사용할 수 없는 경우가 발생하면 다른 AZ에 있는 읽기 전용 복제본을 새로운 프라이머리로 승격할 수 있습니다. 

기본 캐시 노드에 연결하는 것처럼 읽기 전용 복제본에 연결할 수 있습니다. 읽기 전용 복제본이 여러 개인 경우 애플리케이션이 읽기 전용 복제본에 읽기 트래픽을 분산하는 방법을 결정합니다. 자세한 내용은 다음과 같습니다.

  • Redis(클러스터 모드 비활성화) OSS 클러스터, 읽기 작업에 개별 노드 엔드포인트를 사용합니다. (API/CLI에서는 이를 읽기 엔드포인트라고 합니다.)
  • Redis OSS(클러스터 모드 활성화) 클러스터. 클러스터의 구성 엔드포인트를 모든 작업에 사용합니다. 개별 노드 엔드포인트에서 여전히 읽을 수 있습니다. (API 및 CLI에서는 이를 읽기 엔드포인트라고 합니다.)

ElastiCache에서는 지정된 프라이머리 캐시 노드에 대해 읽기 전용 복제본을 최대 5개까지 만들 수 있습니다.

장애 조치가 발생할 경우 장애 조치가 완료되면 연결된 사용 가능한 읽기 전용 복제본이 복제를 자동으로 재개합니다(새로 승격된 읽기 전용 복제본에서 업데이트를 가져옴).

프라이머리 캐시 노드로 업데이트는 모든 관련 읽기 전용 복제본에 자동으로 복제됩니다. 그러나 Redis OSS의 비동기 복제 기술을 사용하면 다양한 이유로 읽기 전용 복제본이 프라이머리 캐시 노드보다 지연될 수 있습니다. 대표적인 이유는 다음과 같습니다.

  • 프라이머리 캐시 노드에 대한 쓰기 I/O 볼륨이 변경 내용이 읽기 전용 복제본에 적용될 수 있는 비율 초과.
  • 네트워크 파티션이나 프라이머리 캐시 노드와 읽기 전용 복제본 간의 지연 시간.

읽기 전용 복제본은 Redis OSS 복제의 장단점을 가지고 있습니다. 읽기 전용 복제본을 사용하는 경우 읽기 전용 복제본과 프라이머리 캐시 노드 사이에 지연이나 ‘불일치’가 발생할 수 있다는 점을 인식해야 합니다. ElastiCache는 불일치를 이해하는 데 도움이 되는 지표를 생성합니다.

읽기 전용 복제본은 표준 캐시 노드와 동일한 요금이 청구됩니다. 표준 캐시 노드와 마찬가지로 읽기 전용 복제본의 캐시 노드 시간당 요금은 읽기 전용 복제본의 캐시 노드 클래스에 의해 결정됩니다. 최신 요금 정보는 ElastiCache 요금 페이지를 참조하세요. 기본 캐시 노드와 읽기 전용 복제본 간에 데이터를 복제할 때 발생한 데이터 전송에는 요금이 부과되지 않습니다. 읽기 전용 복제본의 요금 청구는 읽기 전용 복제본이 성공적으로 생성된 직후에 시작됩니다(상태가 활성으로 표시되는 경우). 사용자가 삭제 명령을 실행할 때까지 읽기 전용 복제본에는 표준 ElastiCache 캐시 노드 시간 요금이 청구됩니다.

ElastiCache에서는 시작된 장애 조치를 지원하므로 가능한 한 빨리 캐시 작업을 다시 시작할 수 있습니다. 장애 조치 시, ElastiCache가 단순히 캐시 노드의 DNS 레코드를 반전시켜 읽기 전용 복제본을 가리킵니다. 그리고 이 읽기 전용 복제본이 승격되어 새 기본 복제본이 됩니다. 모범 사례에 따라 애플리케이션 계층에서 캐시 노드 연결을 다시 시도하는 것이 좋습니다. 일반적으로 시작부터 완료까지, 아래의 1~5단계는 6분 이내에 완료됩니다.

다음은 자동 장애 조치 이벤트이며 발생 순서로 나열되어 있습니다.

  1. 복제 그룹 메시지: 노드 그룹 <node-group-id>에 대해 장애 조치 테스트 API 호출
  2. 캐시 클러스터 메시지: 프라이머리 노드 <primary-node-id>에서 복제 노드 <node-id>(으)로의 장애 조치 완료
  3. 복제 그룹 메시지: 프라이머리 노드 <primary-node-id>에서 복제 노드 <node-id>(으)로의 장애 조치 완료
  4. 캐시 클러스터 메시지: 캐시 노드 <node-id> 복구 중
  5. 캐시 클러스터 메시지: 캐시 노드 <node-id>에 대한 복구 완료

아니요. 읽기 전용 복제본은 프라이머리 캐시 노드와 동일한 리전의 동일하거나 다른 AZ에서만 프로비저닝할 수 있습니다. 그러나 글로벌 데이터 스토어를 사용하면 AWS 리전 전체에서 완전관리형 방식의 빠르고 안정적이며 보안에 집중한 복제를 수행할 수 있습니다. 이 기능을 사용하면 ElastiCache에 대한 교차 리전 읽기 복제본 클러스터를 생성하여 AWS 리전 전체에서 짧은 지연 시간의 읽기 및 재해 복구를 지원할 수 있습니다.

예. 콘솔 또는 DescribeCacheClusters API를 사용하여 기본 복제본의 현재 위치를 알 수 있습니다.

예. 클러스터 환경에 있는 하나 이상의 샤드에 읽기 전용 복제본을 추가하거나 제거할 수 있습니다. 이 작업이 진행되는 동안 해당 클러스터는 계속해서 온라인을 유지하고 수신 I/O를 처리합니다.

다중 AZ

다중 AZ는 자체 ElastiCache 캐시를 설계할 때 가용성이 더욱 뛰어난 구성으로 실행할 수 있는 기능입니다. 모든 ElastiCache Serverless 캐시는 다중 AZ 구성에서 자동으로 실행됩니다. ElastiCache 복제 그룹은 기본 복제본 및 최대 5개의 읽기 전용 복제본으로 구성되어 있습니다. 다중 AZ가 활성화된 경우 프라이머리당 1개 이상의 복제본이 필요합니다. 특정 유형의 예정된 유지 관리를 수행하는 동안이나 ElastiCache 노드 장애 또는 AZ 장애와 같이 예기치 않은 상황이 발생하면 ElastiCache는 자동으로 기본 노드의 장애를 감지하고 읽기 전용 복제본을 선택한 다음 이를 새로운 기본 노드로 승격합니다. 또한 ElastiCache는 승격된 읽기 전용 복제본의 DNS 변경 사항을 전파하므로 애플리케이션이 기본 노드 엔드포인트에 쓸 때 엔드포인트를 변경하지 않아도 됩니다.

ElastiCache를 다중 AZ 모드에서 실행하는 것의 가장 큰 이점은 가용성이 강화되며 관리의 필요가 줄어든다는 점입니다. 다중 AZ 구성에서 ElastiCache를 실행하는 경우 캐시는 99.99% 가용성 SLA를 받을 수 있습니다. ElastiCache 프라이머리 노드 오류가 발생하면 기본 노드로의 읽기 및 쓰기 기능에 미치는 영향은 자동 장애 조치가 완료될 때까지 소요되는 시간으로 제한됩니다. 다중 AZ가 활성화되어 있는 경우 ElastiCache 노드 장애 조치가 자동으로 수행되며 관리가 필요하지 않습니다. 

ElastiCache를 사용하며 프라이머리 노드와 1개 이상의 읽기 전용 복제본으로 구성된 복제 그룹이 있는 경우 다중 AZ를 사용할 수 있습니다. 프라이머리 노드에 장애가 발생하면 ElastiCache는 자동으로 장애를 감지하고, 사용 가능한 읽기 전용 복제본 중 하나를 선택한 다음, 이를 새로운 기본 노드로 승격합니다. ElastiCache는 애플리케이션이 계속 기본 엔드포인트에 쓸 수 있도록 승격된 복제본의 DNS 변경 사항을 전파합니다. 또한 ElastiCache는 오류가 발생한 기본 노드의 동일한 AZ에서 승격된 읽기 전용 복제본을 대체하도록 새로운 노드를 가동합니다. 일시적인 AZ 중단으로 인해 기본 노드에 오류가 발생한 경우 AZ가 복구되면 새로운 복제본이 시작됩니다.

예. 동일한 AZ에 기본 및 복제본을 모두 배치한다고 해서 ElastiCache 복제 그룹이 AZ 중단에 대해 복원력을 가지는 것은 아니라는 점에 유의하세요. 또한 다중 AZ가 켜져 있는 경우, 프라이머리와 동일한 AZ에 복제본을 둘 수 없습니다.

ElastiCache는 다음과 같은 경우 읽기 전용 복제본으로 장애 조치를 수행합니다.

  • 프라이머리 AZ의 가용성 손실
  • 기본 복제본에 대한 네트워크 연결 상실
  • 기본 복제본의 컴퓨팅 장치 장애

읽기 전용 복제본이 2개 이상 있는 경우, 기본 복제본으로의 비동기식 복제 지연이 가장 짧은 읽기 전용 복제본이 승격됩니다.

예. ElastiCache는 자동 장애 조치가 수행될 때 알려주는 이벤트를 생성합니다. DescribeEvents API를 사용하여 ElastiCache 노드와 관련된 이벤트에 대한 정보를 반환할 수 있습니다. 또는 ElastiCache Management Console에서 Events 섹션을 선택합니다.

AZ는 같은 리전의 다른 AZ에 지연 시간이 짧은 네트워크 연결을 제공하도록 설계되었습니다. 하나의 AZ가 중단되더라도 애플리케이션이 복원력을 가질 수 있도록 여러 AZ 전반에 애플리케이션과 다른 AWS 리소스가 중복되도록 설계해야 합니다.

다중 AZ에 대한 자세한 내용은 ElastiCache 설명서를 참조하세요.

백업 및 복원

백업 및 복원이란 ElastiCache 캐시의 스냅샷을 생성할 수 있도록 하는 기능입니다. ElastiCache는 스냅샷을 저장하여 사용자가 이후 캐시를 복원할 수 있도록 합니다. 이 기능은 현재 Valkey용 ElastiCache, Redis OSS용 ElastiCache 및 Serverless에서 지원됩니다. 

스냅샷을 생성하면 노드 장애는 물론 하드웨어 장애와 같이 예기치 못한 상황으로 인해 데이터가 손실된 경우 유용하게 사용할 수 있습니다. 백업을 사용하는 또 다른 일반적인 이유는 아카이빙을 위해서입니다. 스냅샷은 Amazon S3에 저장됩니다.

백업이 실행되면 ElastiCache가 이후 복구 또는 아카이빙에 사용될 수 있는 지정된 캐시의 스냅샷을 생성합니다. 언제든지 원하는 때 백업을 실행할 수 있습니다. 또는 보존 기간을 최대 35일로 설정하여 매일 백업이 반복되도록 설정할 수도 있습니다. 복원할 스냅샷을 선택하면 새로운 ElastiCache 캐시가 생성되며 스냅샷의 데이터로 채워집니다. ElastiCache 스냅샷은 Redis OSS RDB 파일 형식과 호환됩니다.

콘솔, ElastiCache API 및 AWS CLI를 통해 백업 및 복원 기능을 사용할 수 있습니다. 언제든지 해당 기능을 비활성화 및 재활성화할 수 있습니다.

백업 및 복원은 캐시를 기반으로 스냅샷을 생성합니다. 사용자는 콘솔, AWS CLI 또는 ElastiCache API를 통해 백업할 ElastiCache 캐시를 지정할 수 있습니다. 기본 복제본에 미치는 영향을 최소화하면서 캐시의 읽기 전용 복제본 중 하나에 대한 백업을 활성화하는 것이 좋습니다. ElastiCache Serverless를 사용하는 경우 읽기 전용 복제본에 대한 백업이 자동으로 수행됩니다.

ElastiCache 스냅샷을 캐시와 같은 리전에 있는 승인된 S3 버킷으로 내보낼 수 있습니다.

예. 먼저 같은 리전에 있는 승인된 S3 버킷 중 원하는 버킷으로 스냅샷을 복사한 다음, 다른 계정에 교차 계정 버킷 권한을 부여해야 합니다.

ElastiCache는 활성화된 각 ElastiCache 캐시에 대해 스냅샷 하나만큼의 스토리지 공간을 무료로 제공합니다. 추가 스토리지는 스냅샷에서 사용한 공간에 따라 월별 1GB당 0.085 USD가 청구됩니다. 가격은 모든 리전에서 동일합니다. 스냅샷 사용을 위한 데이터 전송 요금은 무료입니다.

ElastiCache 캐시를 삭제하는 경우 수동 스냅샷은 보존됩니다. 캐시를 삭제하기 전에 최종 스냅샷을 생성할 수 있는 옵션도 있습니다. 자동 캐시 스냅샷은 보존되지 않습니다.

향상된 엔진

ElastiCache의 엔진은 Redis OSS와 완벽하게 호환 가능할 뿐만 아니라 성능, 견고성, 안정성을 높여주는 향상된 기능도 함께 제공합니다. 다음은 향상된 기능 중 일부입니다.

  • 가용 메모리 추가: 이제 동기화 및 스냅샷이 진행되는 동안 스왑 사용량 증가에 대한 걱정 없이 애플리케이션에 더 많은 메모리를 안전하게 할당할 수 있습니다.
  • 동기화 개선: 부하가 높거나 연결이 끊긴 네트워크에서 복구할 때 좀 더 견고한 동기화를 지원합니다. 또한, 기본 노드와 읽기 전용 복제본이 이 작업을 수행하는 데 디스크를 사용하지 않으므로 동기화 속도가 더 빠릅니다.
  • 원활한 장애 조치: 장애 조치가 수행될 경우 이제 샤드가 더 빠르게 복구됩니다. 복제본에서 프라이머리 노드와 전체 동기화를 다시 실행하기 위해 데이터를 보낼 필요가 없기 때문입니다.
  • TLS 오프로드 및 IO 멀티플렉싱: ElastiCache는 전용 스레드에서 특정 네트워크 관련 프로세스를 처리하여 사용 가능한 CPU 리소스를 더 잘 사용하도록 설계되었습니다.

아니요. 향상된 엔진은 Redis OSS와 완벽하게 호환되므로, 애플리케이션 코드를 변경할 필요 없이 견고함과 안정성을 개선할 수 있습니다.

향상된 엔진 사용에 따르는 추가 요금은 없습니다.

암호화

저장 중 암호화는 데이터의 무단 액세스를 방지하는 메커니즘을 제공합니다. 활성화되면 다음 측면이 암호화됩니다.

  • 동기화, 백업 및 스왑 작업 중의 디스크
  • Amazon S3에 저장된 백업

ElastiCache는 기본(서비스 관리형) 저장 중 암호화를 제공하며 AWS KMS에 있는 대칭 고객 관리형 AWS KMS 키를 사용할 수 있는 기능도 함께 제공합니다. 자세히 알아보려면 저장 중 암호화를 참조하세요.

전송 중 암호화 기능은 서버(기본 및 읽기 전용 복제본)뿐만 아니라 클라이언트와 ElastiCache 간의 통신 암호화를 용이하게 합니다. ElastiCache 전송 중 암호화에 대해 자세히 알아보세요.

전송 중 암호화, 저장 시 암호화, Redis OSS AUTH 및 역할 기반 액세스 제어(RBAC)는 ElastiCache 캐시를 생성할 때 선택할 수 있는 기능입니다. 전송 중 암호화를 활성화한 경우 Redis OSS AUTH 또는 RBAC를 사용하도록 선택하여 추가 보안 및 액세스 제어를 제공할 수 있습니다.

아니요. ElastiCache가 백그라운드에서 인증서 만료와 갱신을 관리합니다. 인증서를 유지 관리하기 위해 사용자가 수행해야 하는 작업은 없습니다.

아니요. 암호화를 사용할 때 부가되는 추가 비용은 없습니다.

글로벌 데이터 스토어

글로벌 데이터 스토어는 ElastiCache의 기능으로 빠르고 안정적이며 보안에 집중한 완전관리형 교차 리전 복제를 제공합니다. 글로벌 데이터 스토어를 통해 하나의 리전에서 캐시에 데이터를 작성하고, 최대 2개의 다른 교차 리전 복제본 클러스터에서 해당 데이터를 읽을 수 있으므로, 리전 간 짧은 지연 시간의 읽기와 재해 복구가 가능합니다.

글로벌 공간을 활용하는 실시간 애플리케이션용으로 설계된 글로벌 데이터 스토어는 일반적으로 1초 이내에 여러 지역에 걸쳐 데이터를 복제하여 최종 사용자에게 더 가까운 지리적 위치 읽기를 제공함으로써 애플리케이션의 응답성을 높입니다. 혹시라도 한 리전의 성능이 저하되면 정상 상태의 교차 리전 복제본 캐시 중 하나를 전체 읽기 및 쓰기 기능을 갖춘 기본 복제본으로 승격할 수 있습니다. 이 작업이 시작되면 승격은 보통 1분 이내에 완료되므로, 애플리케이션의 가용성을 유지할 수 있습니다.

글로벌 데이터 스토어 내에서 최대 2개의 보조 리전으로 복제할 수 있습니다. 혹시라도 한 리전의 성능이 저하되면 보조 리전의 캐시가 지연 시간이 짧은 로컬 읽기 및 재해 복구에 사용될 수 있습니다.

글로벌 데이터 스토어는 ElastiCache for Redis 5.0.6 이상 버전에서 지원됩니다.

아니요. ElastiCache는 기본 클러스터(리전)의 성능이 저하되는 경우 보조 클러스터를 자동으로 승격하지 않습니다. 수동으로 세컨더리 클러스터를 프라이머리 클러스터로 승격하여 장애 조치를 시작할 수 있습니다. 보조 클러스터의 장애 조치 및 승격 작업은 보통 1분 이내에 완료됩니다.

글로벌 데이터 스토어에서는 교차 리전 트래픽에 전송 중 암호화를 적용하여 데이터를 더 많이 보호합니다. 또한, 저장 중시 암호화를 사용하여 기본 캐시와 보조 캐시를 암호화하여 데이터를 더 안전하게 유지할 수 있습니다. 각 기본 캐시와 보조 캐시는 저장 시 암호화를 위한 별도의 고객 관리형 AWS KMS 키를 가질 수 있습니다.

ElastiCache는 RPO 및 RTO에 대한 SLA를 제공하지 않습니다. RPO는 리전 간 복제 지연의 영향을 받으며, 리전 간 네트워크 지연 시간과 교차 리전 네트워크 트래픽 혼잡도에 따라 달라집니다. 글로벌 데이터 스토어의 RPO는 보통 1초 미만이므로 기본 리전에 작성되는 데이터를 1초 이내에 보조 리전에서 사용할 수 있습니다. 글로벌 데이터 스토어의 RTO는 보통 1분 미만입니다. 보조 클러스터로 장애 조치가 시작되면 ElastiCache가 1분 이내에 전체 읽기 및 쓰기 기능을 갖추도록 보조 클러스터를 승격합니다.

ElastiCache는 RPO 및 RTO에 대한 SLA를 제공하지 않습니다. RPO는 리전 간 복제 지연의 영향을 받으며, 리전 간 네트워크 지연 시간과 교차 리전 네트워크 트래픽 혼잡도에 따라 달라집니다. 글로벌 데이터 스토어의 RPO는 보통 1초 미만이므로 기본 리전에 작성되는 데이터를 1초 이내에 보조 리전에서 사용할 수 있습니다. 글로벌 데이터 스토어의 RTO는 보통 1분 미만입니다. 보조 클러스터로 장애 조치가 시작되면 ElastiCache가 1분 이내에 전체 읽기 및 쓰기 기능을 갖추도록 보조 클러스터를 승격합니다.

데이터 계층화

데이터 계층화는 데이터를 메모리에 저장하는 것 외에도 각 클러스터 노드에서 저렴한 솔리드 스테이트 드라이브(SSD)를 사용함으로써 새로운 가격 대비 성능 옵션을 제공합니다. 전체 데이터세트의 최대 20%에 정기적으로 액세스하는 워크로드와 SSD의 데이터에 액세스 시 추가 지연 시간을 허용할 수 있는 애플리케이션에 적합합니다. 메모리 및 SSD가 있는 ElastiCache R6gd 노드는 총 스토리지 용량이 거의 5배 더 많으며, 최대 활용량 실행 시 메모리만 있는 ElastiCache R6g 노드보다 요금을 60% 이상 절감할 수 있습니다.

데이터 계층화는 사용 가능한 메모리 용량이 완전히 소모될 때 가장 최근에 사용한 항목을 메모리에서 로컬로 연결된 NVMe SSD로 자동으로 투명하게 이동하여 작동합니다. 그런 다음 SSD로 옮겨진 항목에 액세스하면, ElastiCache는 요청을 수행하기에 앞서 비동기적으로 다시 메모리로 돌아갑니다.

데이터 계층화는 애플리케이션 성능에 미치는 영향을 최소화하도록 설계되었습니다. 500바이트 문자열 값을 추정하여, 메모리의 데이터 요청 대비 SSD에 저장된 데이터에 대한 요청에 평균 300µs의 지연 시간이 추가로 소요될 것으로 예상됩니다.

ElastiCache는 ElastiCache for Redis OSS 버전 6.2 이상에 대한 데이터 계층화를 지원합니다.

ElastiCache는 R6gd 노드를 사용하는 클러스터의 데이터 계층화를 지원합니다.

데이터 계층화를 사용할 때 모든 Valkey 및 Redis OSS 명령과 대부분의 ElastiCache 기능이 지원됩니다. 데이터 계층화를 사용하는 클러스터에서 지원되지 않는 기능 목록은 설명서를 참조하세요.

노드의 시간당 비용 외에 데이터 계층화 사용에 대한 추가 비용은 없습니다. 데이터 계층화가 있는 노드는 온디맨드 가격으로 예약 노드로 사용할 수 있습니다. 요금은 ElastiCache 요금 페이지를 참조하세요.