Amazon MemoryDB 기능

MemoryDB를 사용해야 하는 이유

Amazon MemoryDB는 Valkey 및 Redis OSS와 호환되고 내구성이 뛰어난 인 메모리 데이터베이스 서비스로, 초고속 성능을 제공합니다. 이 기능은 마이크로서비스 아키텍처를 사용하여 현대적 애플리케이션을 위해 특별히 구축되었습니다.

MemoryDB는 Valkey 및 Redis OSS와 호환되므로 고객은 현재 이미 사용하고 있는 것과 동일하게 유연하고 익숙한 Valkey 및 Redis OSS 데이터 구조, API, 명령을 사용하여 애플리케이션을 빠르게 구축할 수 있습니다. MemoryDB를 사용하면 모든 데이터가 메모리 안에 저장되므로 마이크로초 읽기 및 10밀리초 미만의 쓰기 대기 시간과 높은 처리량을 달성할 수 있습니다. MemoryDB는 또한 분산 트랜잭션 로그를 사용하여 여러 가용 영역(AZ)에 데이터를 내구성 있게 저장함으로써 빠른 장애 조치, 데이터베이스 복구 및 노드 다시 시작을 지원합니다. 인 메모리 성능과 다중 AZ 내구성을 모두 제공하는 MemoryDB는 마이크로서비스 애플리케이션에 대한 고성능 프라이머리 데이터베이스로 사용될 수 있으므로 캐시와 내구성 있는 데이터베이스를 별도로 관리할 필요가 없습니다.

Valkey 및 Redis OSS 호환성

Valkey 및 Redis OSS는 빠른 오픈 소스 인 메모리 키 값 데이터 스토어입니다. 개발자는 Valkey 및 Redis OSS를 사용하여 밀리초 미만의 응답 시간을 제공해 게임, 광고 기술, 금융 서비스, 의료 서비스 및 IoT와 같은 분야에서 실시간 애플리케이션을 위해 초당 수백만 건의 요청을 지원할 수 있습니다. 

Valkey 및 Redis OSS는 민첩한 다목적 애플리케이션을 구축하도록 유연한 API, 명령, 데이터 구조(예: 스트림, 세트, 목록)를 제공합니다. MemoryDB는 Valkey 및 Redis OSS와의 호환성을 유지하고, 익숙한 Valkey 및 Redis OSS 데이터 유형, 파라미터 및 명령 세트를 동일하게 지원합니다. 즉, 현재 Valkey 및 Redis OSS에서 이미 사용 중인 코드, 애플리케이션, 드라이버 및 도구를 MemoryDB에서도 사용할 수 있어 애플리케이션을 빠르게 빌드할 수 있습니다.

초고속 성능

MemoryDB는 전체 데이터 집합을 메모리에 저장하여 마이크로초 읽기 지연, 10밀리초 미만의 쓰기 지연과 높은 처리량을 제공합니다. 또한 하루에 13조 개 이상의 요청을 처리할 수 있고, 초당 1억 6,000만 개 이상의 요청 급증을 지원합니다. 마이크로서비스 아키텍처는 사용자 상호 작용당 또는 API 직접 호출당 엄청나게 많은 서비스 구성 요소와 상호 작용할 수 있기 때문에 이러한 아키텍처를 구축하는 개발자에게는 초고속 성능이 필요합니다. MemoryDB를 사용하면 지연 시간이 매우 짧아 최종 사용자에게 실시간 성능을 제공할 수 있습니다.

MemoryDB에는 대규모 처리량과 지연 시간을 크게 개선하는 향상된 IO 멀티플렉싱이 포함되어 있습니다. 향상된 I/O 멀티플렉싱은 처리량 제한이 있고 다수의 클라이언트가 연결되어 있는 워크로드에 적합하며 워크로드 동시성 수준에 따라 그 이점이 확장됩니다. 예를 들어 r6g.4xlarge 노드를 사용하고 5,200개의 동시 클라이언트를 실행하는 경우 Redis OSS와 호환되는 MemoryDB 버전 6에 비해 처리량(초당 읽기 및 쓰기 작업 수)이 최대 46% 증가하고 P99 지연 시간이 최대 21% 감소합니다. 이러한 유형의 워크로드의 경우 노드의 네트워크 I/O 처리가 확장 기능을 제한하는 요인이 될 수 있습니다.

향상된 IO 멀티플렉싱을 사용하면 각 전용 네트워크 IO 스레드가 여러 클라이언트의 명령을 파이프라인을 통해 Valkey 및 Redis OSS 엔진으로 보내 명령을 효율적으로 배치 처리하는 Valkey 및 Redis OSS의 기능을 활용할 수 있습니다.

다중 AZ 내구성

전체 데이터 집합을 메모리에 저장하는 것 외에도 MemoryDB는 분산된 트랜잭션 로그를 사용하여 데이터 내구성, 일관성 및 복구 가능성을 제공합니다. MemoryDB는 다중 AZ 전반에 데이터를 저장하므로 빠르게 데이터베이스를 복구하여 다시 시작할 수 있습니다. MemoryDB를 속도를 위한 캐시와 안정성을 위한 추가 관계형 또는 비관계형 데이터베이스를 별도로 관리하는 대신 짧은 지연 시간과 높은 처리량을 필요로 하는 워크로드에 프라이머리 데이터베이스 서비스로 MemoryDB를 사용할 수 있습니다.

확장성

노드를 수평으로 추가 또는 제거하거나 더 크거나 작은 노드 유형으로 수직으로 이동하는 등 변하는 애플리케이션 필요를 충족하기 위해 MemoryDB 클러스터의 규모를 조정할 수 있습니다. MemoryDB는 샤딩을 사용하여 쓰기 확장을 지원하고, 복제본을 추가하여 읽기 확장을 지원합니다. 클러스터는 계속해서 온라인 상태를 유지하고 크기 조장 작업 중 읽기 및 쓰기 작업을 지원합니다.

완전관리형

MemoryDB를 시작하는 방법은 간단합니다. AWS Management Console을 사용하여 새 MemoryDB 클러스터를 시작하거나 AWS CLI 또는 SDK를 사용할 수 있습니다. MemoryDB 데이터베이스 인스턴스는 선택한 노드 유형에 적합한 파라미터 및 설정 세트로 사전에 구성됩니다. 클러스터를 시작하고 애플리케이션을 연결하기만 하면 됩니다. 이 작업은 몇 분밖에 걸리지 않으며 추가 구성이 필요하지 않습니다.

MemoryDB는 데이터베이스 인스턴스에 대한 Amazon CloudWatch 지표를 제공합니다. 콘솔을 사용하여 컴퓨팅, 메모리, 스토리지, 처리량 및 활성 연결 등을 비롯하여 클러스터와 관련된 35개 이상의 주요 운영 지표를 볼 수 있습니다.

MemoryDB는 새로운 업데이트를 통해 클러스터를 최신 상태로 자동으로 유지하므로 클러스터를 최신 Valkey 및 Redis OSS 버전으로 손쉽게 업그레이드할 수 있습니다.

보안

Amazon Virtual Private Cloud(Amazon VPC) 내에서 실행되는 MemoryDB는 자체 가상 네트워크 내에 데이터베이스를 격리하고 산업 표준 암호화 IPsec VPN을 사용하여 온프레미스 IT 인프라에 연결합니다. 또한, MemoryDB의 VPC 구성을 사용해 방화벽 설정을 구성하고 데이터베이스 인스턴스에 대한 네트워크 액세스를 제어할 수 있습니다.

MemoryDB를 사용하면 AWS Key Management Service(AWS KMS)를 통해 생성하고 제어하는 키를 사용해 저장 데이터를 암호화할 수 있습니다. AWS Graviton2 노드 유형을 사용하여 생성한 클러스터에는 상시 256비트 DRAM 암호화가 포함됩니다. MemoryDB는 Transport Layer Security(TLS)를 사용하여 이동 중 암호화를 지원합니다.

MemoryDB에 통합된 Identity and Access Management(IAM) 기능을 사용하면 AWS IAM 사용자 및 그룹이 MemoryDB 리소스에 수행할 수 있는 작업을 제어할 수 있습니다. 예를 들어 IAM 규칙을 구성하여 관리자는 리소스를 생성, 수정 및 삭제할 수 있지만, 특정 사용자는 읽기 전용 액세스 권한만 보유하도록 할 수 있습니다. API 수준 권한에 대한 자세한 내용은 MemoryDB에 대한 IAM 정책 사용 섹션을 참조하세요.

MemoryDB는 Redis OSS 액세스 제어 목록(ACL)을 사용하여 클러스터에 대한 인증과 권한 부여를 모두 제어합니다. ACL을 사용하면 동일한 클러스터 내 여러 사용자에 대해 서로 다르게 권한을 정의할 수 있습니다.

Kubernetes와 통합

MemoryDB를 위한 AWS Controllers for Kubernetes(ACK)를 사용해 Kubernetes 클러스터에서 직접 MemoryDB의 리소스를 정의하고 사용할 수 있습니다. 이렇게 하면 클러스터 외부의 MemoryDB 리소스를 정의하거나 클러스터 내의 인 메모리 데이터베이스 기능을 실행하고 관리할 필요 없이 Kubernetes 애플리케이션을 지원하는 MemoryDB를 이용할 수 있습니다. Amazon Elastic Container Registry(Amazon ECR)에서 MemoryDB ACK 컨테이너 이미지를 다운로드할 수 있습니다. 설치 지침은 설명서를 참조하세요. 블로그에서도 자세한 내용을 확인할 수 있습니다.

참고: 이제 MemoryDB용 ACK를 정식 버전으로 사용할 수 있습니다. GitHub 페이지에서 피드백을 보내주세요.

 

JSON 지원

MemoryDB는 Redis OSS에 포함된 데이터 구조 이외에 JSON(JavaScript Object Notation) 문서에 대한 기본 지원을 추가 비용 없이 제공합니다. JSON 문서용으로 설계 및 최적화된 기본 제공 명령을 사용하여 애플리케이션을 간단하게 개발할 수 있습니다. MemoryDB는 부분 JSON 문서 업데이트와 JSONPath 쿼리 언어를 사용한 강력한 검색 및 필터링을 지원합니다. JSON 지원은 Valkey 및 Redis OSS 6.2 이상을 사용하는 경우 제공됩니다. 자세한 정보는 MemoryDB 설명서를 참조하세요.

비용 최적화

MemoryDB는 데이터 계층화를 통해 클러스터를 최대 수백 테라바이트 용량까지 저렴한 비용으로 확장할 수 있도록 합니다. 데이터 계층화는 MemoryDB에 대한 가성비 옵션으로, 저렴한 Solid State Drive(SSD)를 각 클러스터 노드에서 활용하고 데이터를 메모리에 저장합니다. 전체 데이터세트의 최대 20%에 정기적으로 액세스하는 워크로드와 SSD의 데이터에 액세스 시 추가 지연 시간을 허용할 수 있는 애플리케이션에 적합합니다.

클러스터에서 데이터 계층화를 사용하는 경우 MemoryDB는 가용 메모리 용량이 완전히 소모될 때 가장 최근에 사용한 항목을 메모리에서 로컬로 연결된 NVMe SSD로 자동으로, 투명하게 옮기도록 설계되었습니다. SSD에 저장된 항목에 액세스하면 MemoryDB가 요청을 처리하기 전에 이를 메모리로 다시 이동합니다. MemoryDB 데이터 계층화는 Graviton2 기반 R6gd 노드에서 사용할 수 있습니다. R6gd 노드는 R6g 노드(메모리 전용)와 비교 시 총 용량은 약 5배 많으며(메모리 + SSD), 최대 사용률로 실행할 경우 60% 이상의 스토리지 비용을 절감할 수 있습니다. 500바이트 문자열 값을 추정하는 경우 메모리의 데이터 읽기 요청과 비교했을 때 SSD에 저장된 데이터에 대한 읽기 요청은 일반적으로 450마이크로초의 지연 시간이 추가로 소요될 것으로 예상됩니다.

MemoryDB는 예약 노드를 제공합니다. 이 노드를 사용하면 1년 또는 3년 동안의 사용을 약정하고 온디맨드 노드 가격보다 최대 55%를 절약할 수 있습니다. 예약 노드는 MemoryDB 온디맨드 노드를 보완하며 기업은 비용 절감에 도움이 되는 유연한 옵션을 이용할 수 있습니다. MemoryDB는 선결제 없음, 부분 선결제, 전체 선결제와 같은 세 가지 예약 노드를 제공하며, 이를 통해 선결제 금액과 실질적인 시간당 요금의 균형을 맞출 수 있습니다.

MemoryDB 예약 노드는 노드 제품군 및 AWS 리전 내에서 유연한 크기를 지원합니다. 즉, 할인된 예약 노드 요금이 동일한 노드 제품군의 모든 크기 사용량에 자동으로 적용됩니다. 유연한 크기 기능을 사용하면 예약 노드 관리에 소요되는 시간이 줄어들고 더 이상 특정 데이터베이스 노드 크기에 구애받지 않으므로 데이터베이스를 업데이트해야 하는 경우에도 할인 이점을 최대한 활용할 수 있습니다.