AWS 기술 블로그

Amazon Elasticache Valkey 8.0은 더 빠른 스케일링과 개선된 메모리 효율을 제공합니다

이 글은 AWS Database Blog에 게시된 Amazon ElastiCache version 8.0 for Valkey brings faster scaling and improved memory efficiency by Abhay Saxena and Rashim Gupta 을 한국어로 번역 및 편집하였습니다.

2024년 11월, Amazon ElastiCache에 Valkey 8.0 버전에 대한 지원이 추가 되었습니다. Valkey 전용 ElastiCache 버전 8.0은 서버리스에 대한 더 빠른 확장과 노드 기반 클러스터에 대한 메모리 최적화를 제공합니다. 이 글은 이러한 개선 사항과 이를 통해 얻을 수 있는 이점에 대해서 논의합니다.

Valkey는 오픈 소스, 메모리 내 key-value 데이터 저장소입니다. Redis OSS(오픈소스)를 즉시 대체할 수 있는 솔루션입니다. Linux Foundation이 관리하며 활발한 개발자 커뮤니티의 기여로 빠르게 개선되고 있습니다. AWS는 Valkey에 적극적으로 기여하고 있으며, Valkey에 대한 AWS 기여에 대해서 자세히 알아보려면 Amazon ElastiCache 및 Amazon MemoryDB의 Valkey 지원 발표를 참조하십시오. 2024년 10월, Valkey용 ElastiCache 7.2 버전을 발표했습니다. ElastiCache는 완전 관리형의 Valkey, Memcached, Redis OSS 호환 캐싱 서비스로, 99.99%의 가용성으로 최신 애플리케이션에 실시간으로 비용 최적화된 성능을 제공합니다.
ElastiCache는 데이터베이스와 애플리케이션의 성능을 향상시키는 서비스로, 마이크로초 수준의 빠른 읽기/쓰기 응답 시간을 제공하며 초당 수백만 건의 작업을 처리할 수 있도록 확장이 가능합니다.

ElastiCache Serverless 의 스케일링 개선

ElastiCache Serverless를 사용하면 1분 이내에 캐시를 생성하고 애플리케이션 트래픽 패턴에 따라 용량을 확장할 수 있습니다. 이전에는 캐시의 크기를 적절히 조정하는 것이 비용과 성능 사이의 균형을 맞추는 일이었습니다. 피크 시간대를 위해 충분한 버퍼를 두고 용량을 프로비저닝할 수 있었지만, 사용하지 않을 때도 그 용량에 대한 비용을 지불했습니다. 대안으로는, 필요한 만큼의 용량을 프로비저닝하고 필요할 때 수동으로 용량을 확장할 수 있습니다. 하지만 예상치 못한 갑작스러운 트래픽 급증이 발생하면 성능 병목 현상이 발생할 수 있습니다. AWS는 용량 계획 없이도 가장 까다로운 워크로드에 대해 캐시를 운영할 수 있도록 ElastiCache Serverless를 출시했습니다. 출시 이후, 많은 고객들이 화제성있는 라이브 이벤트와 같은 상황에서 갑작스러운 트래픽 급증에 대해 더 빠르게 애플리케이션을 확장할 수 있는 기능을 요청하였습니다.

Valkey용 ElastiCache Serverless 8.0 버전은 급격한 트래픽과 빠른 확장이 필요한 워크로드를 처리하는 방식을 개선했습니다. 이전에는 ElastiCache Serverless가 10~12분마다 지원되는 초당 요청 수(requests per second, RPS)를 두 배로 늘릴 수 있었습니다. Valkey 8.0 버전에서는 ElastiCache Serverless가 13분 이내에 0에서 500만 RPS까지 확장할 수 있으며, 2~3분마다 지원되는 RPS를 두 배로 늘릴 수 있습니다. 이러한 개선 사항을 어떻게 달성했는지 살펴보고, 몇 가지 벤치마크를 공유해 보겠습니다.

Valkey 8.0에서 AWS는 새로운 멀티스레드 아키텍처를 통해 100만 RPS 이상을 달성하는 등 상당한 성능 향상을 이루었습니다. 새로운 I/O 스레딩 구현을 통해 메인 스레드와 I/O 스레드가 동시에 작동하여 명령어 읽기 및 구문 분석, 응답 쓰기, I/O 이벤트 폴링과 같은 작업을 오프로드할 수 있습니다. 이 설계는 동기화 메커니즘을 최소화하여 Valkey의 단순성을 유지하면서 성능을 향상시킵니다. 오픈소스 Valkey 8.0의 I/O 멀티스레딩 관련 구체적인 개선 사항에 대해 자세히 알아보려면 Unlock 1 Million RPS: Experience Triple the Speed with Valkey를 참조하세요.

Valkey용 ElastiCache Serverless 8.0 버전에서는 이러한 개선 사항을 활용하여 더 빠른 버스트 스케일링과 스케일아웃 작업을 처리할 수 있도록 하였습니다. 온디맨드로 더 많은 코어를 활성화하고 I/O 스레딩을 최적화함으로써, ElastiCache Serverless는 추가 처리량을 지원하기 위해 동적으로 추가 I/O 스레드를 할당할 수 있습니다. 또한 ElastiCache Serverless는 새로운 샤드로 데이터를 마이그레이션하는 수평적 확장을 처리하기 위해 추가 I/O 스레드를 할당할 수 있습니다. 이렇게 향상된 확장 기능을 통해 ElastiCache Serverless는 높은 처리량과 최소한의 지연 시간이 필요한 애플리케이션에 도움이 되는 높은 트래픽 시나리오와 갑작스러운 트래픽 급증을 더 효과적으로 처리할 수 있습니다.

벤치마크 데이터

ElastiCache Serverless Valkey 8.0 버전이 애플리케이션 워크로드를 얼마나 빨리 확장 할 수 있는지를 보여주기 위해 일반적인 캐싱 사용 사례를 선택했습니다. 응용 프로그램이 512 바이트 값을 캐싱하고 읽기 트래픽은 80%, 쓰기 트래픽은 20%로 가정헤 보겠습니다. 테스트에서는 응용 프로그램 요청 속도가 0 RPS에서 5백만 RPS로 증가한다고 가정합니다.

ElastiCache Serverless Valkey 7.2 버전

먼저, ElastiCache Serverless Valkey 7.2 버전에서 실행되는 워크로드를 살펴보겠습니다. 아래 그래프는 캐시에서 워크로드에 의해 실행 된 초당 요청(RPS)과 P50 및 P99 지연 시간(latency)을 보여줍니다.

그래프에서 알 수 있듯이 ElastiCache Serverless Valkey 7.2 버전은 5백만 RPS의 피크로 확장하는 데 약 50분이 걸립니다. 그래프의 보라색 선으로 표시되어 있으며, 10분마다 RPS를 효과적으로 두 배로 늘립니다. 이 기간 동안 P50 읽기 지연 시간(파란색 선)은 1밀리초 미만으로 유지되지만 P99 지연 시간은 최대 9밀리초(주황색 및 빨간색 선)로 증가합니다.

ElastiCache Serverless Valkey 8.0 버전

다음으로 동일한 워크로드를 ElastiCache Serverless Valkey 8.0 버전에서 실행한 결과를 살펴보겠습니다.

그래프에서 볼 수 있듯이, ElastiCache Serverles Valkey 8.0 버전은 훨씬 더 빠르게 확장되며, 0에서 피크인 5백만 RPS로 13분 미만이 소용되며, 2분마다 지원되는 RPS를 효과적으로 두 배로 늘립니다. 지연 시간 프로필(latency profile)은 일관되게 유지되며, p50 읽기 지연 시간은 1밀리 초 미만으로 유지되며 p99 지연 시간은 7~8밀리초로 증가합니다.

결과 요약

다음 표는 벤치마킹 결과 요약입니다.

ElastiCache Mode 기준선에서 피크 RPS에 도달하기까지의 시간 p50 읽기 지연 시간 p99 읽기 지연 시간
ElastiCache Serverless Valkey 7.2 버전 50 minutes <800 us 8-9 ms
ElastiCache Serverless Valkey 8.0 버전 13 minutes <800 us 7-8 ms

메모리 사용 개선

Valkey 8.0은 워크로드의 메모리 사용량과 리소스 소비를 줄이는데 도움이 되는 주요 메모리 효율성 개선 사항을 도입했습니다.

먼저, AWS가 이 분야에서 OSS Valkey에 기여한 개선 사항들을 살펴보겠습니다. OSS Valkey 8.0의 주요 개선 사항 중 하나는 클러스터 구성에서의 최적화된 메모리 관리입니다. 이전에는 Valkey의 클러스터 모드가 16,384개의 해시 슬롯에 걸쳐 데이터를 분산했는데, 이는 특히 대규모 배포에서 상당한 메타데이터 오버헤드를 필요로 했습니다. Valkey 8.0은 이제 슬롯별 딕셔너리(Dictionary per slot) 모델을 채택하여 슬롯당 메타데이터 요구사항을 줄이고 이를 통해 메모리 사용량을 낮췄습니다. 이 업데이트는 키당 32바이트의 메모리 절감을 의미하며, 워크로드의 키 크기에 따라 상당한 메모리 절약을 가져올 수 있습니다. Valkey 8.0의 개선 사항 뒤에 있는 기술적 세부사항에 대해 자세히 알아보려면 Storing more with less: Memory Efficiency in Valkey 8을 참조하세요.

이제 이 부분이 ElastiCache Valkey 8.0 버전에서 어떻게 구현되는지 살펴보겠습니다. Valkey용 ElastiCache Serverless의 가격을 책정할 때, 이러한 메모리 최적화를 예상하고 잠재적인 비용 절감을 반영했습니다. GB당 및 ECPU당 가격을 낮추고, 스토리지 최소 요구사항을 1GB에서 100MB로 줄였으며, Valkey용 ElastiCache Serverless의 가격을 Redis OSS 대비 33% 낮게 책정했습니다. 또한, Valkey 8.0에서는 SET 데이터 구조를 사용하는 사용자들이 SET의 요소당 24바이트를 절약할 수 있어 추가적인 비용 절감이 가능합니다.

클러스터 모드에서 Valkey 8.0을 실행하는 노드 기반 클러스터의 경우, 이러한 메모리 효율성은 전반적인 메모리 소비 감소로 이어집니다. 우리의 벤치마크에서는 16바이트 키와 100바이트 값을 사용하는 문자열 워크로드를 테스트했습니다. 동일한 데이터를 먼저 Valkey 7.2를 실행하는 클러스터에 저장한 다음 Valkey 8.0을 실행하는 클러스터에 저장하며 새로운 릴리스에서 가능한 메모리 절검을 확인하였습니다. 서버리스 캐시에 데이터를 추가하기 위해서는 valkey-benchmark 도구를 사용했습니다.

src/valkey-benchmark \
 -t set \
 -n 10000000 \
 -r 10000000 \
 -d 100
Bash

Valkey 7.2 클러스터의 메모리 사용량을 살펴 보았습니다.

Valkey 7.2> DBSIZE
(integer) 6322820
Valkey 7.2> INFO MEMORY
# Memory
used_memory:1491244824
used_memory_human:1.39G
Bash

그런 다음 Valkey 8.0 클러스터의 메모리 사용량을 살펴 보았습니다.

Valkey 8.0> DBSIZE
(integer) 6319345
Valkey 8.0> INFO MEMORY
# Memory
used_memory:1192317904
used_memory_human:1.11G
Bash

이 특정 워크로드에서는 노드 기반 클러스터의 메모리 사용량이 1.39 GB에서 1.11 GB로 감소하여 메모리 사용량이 20% 감소하는 것을 관찰했습니다. 이 메모리 사용 감소는이 워크로드 유형에 따라 다르며, 워크로드 세부 정보에 따라 메모리 사용이 다른 감소 할 수 있습니다.

결론

ElastiCache Valkey 8.0 버전은 이제 모든 AWS 리전에서 사용할 수 있습니다. ElastiCache 서버리스 캐시 및 노드 기반 ElastiCache 클러스터를 Redis OSS 및 Valkey 7.2에서 Valkey 8.0으로 업그레이드하여 이러한 성능 및 메모리 사용 개선의 이점을 누리시기 바랍니다.

스케일링 개선 및 메모리 효율성 개선 외에도 Valkey용 ElastiCache로 이동하면 비용을 절감할 수 있습니다. Valkey용ElastiCache Serverless는 다른 엔진의 ElastiCache 서버리스보다 33% 낮은 가격이며 Valkey용 노드 기반 ElastiCache는 20% 낮습니다. 월 $ 6의 저렴한 가격으로 Valkey의 ElastiCache 서버리스로 시작할 수 있습니다.

What ‘s New 페이지에서 ElastiCache Valkey 8.0 버전에 대해 자세히 알아보십시오. ElastiCache for Valkey를 시작하는 방법에 대한 단계별 안내서를 보려면 Amazon ElastiCache Valkey 시작하기를 참조하십시오.

Yujin Cho

Yujin Cho

조유진 테크니컬 어카운트 매니저는 다양한 데이터베이스의 운영과 데이터 분석 경험을 바탕으로 고객이 데이터 기반의 비즈니스 목표를 달성할 수 있도록 고객과 함께 효율적인 아키텍처와 안정적인 운영 환경을 구성하기 위해 노력하고 있습니다.

Joonhyun Kim

Joonhyun Kim

김준현 테크니컬 어카운트 매니저는 응용 어플리케이션 운영과 솔루션 아키텍트 경험을 바탕으로, 고객의 비즈니스 목표를 달성할 수 있도록 다양한 어플리케이션 및 솔루션을 활용하여 효율적인 클라우드 아키텍쳐와 안정적인 운영 환경을 구성하기 위해 노력하고 있습니다.