Amazon Web Services 한국 블로그

Amazon ElastiCache 업데이트 – Redis Sharded Cluster 추가 및 3.2 버전 지원

많은 AWS 고객들이 Amazon ElastiCache를 인-메모리 데이터 저장소로 이용하고 있습니다.

2013년 Amazon ElastiCache for Redis출시하고 스냅샷 S3로 내보내기 기능, 엔진 버전 업데이트, 확장 기능, 태그 , Multi-AZ에서 자동 장애 복구 기능을 계속 추가했습니다.

오늘 몇 가지 새로운 기능을 ElastiCache for Redis에 추가하게 되었습니다.

  • Sharded Cluster 지원 – 3.5 TiB 이상의 메모리 데이터로 처리 할 수있는 sharded cluster를 만들 수있게되었습니다
  • 콘솔 개선 – 이전보다 쉽게 클러스터의 생성과 유지 보수 할 수있게되었습니다
  • 엔진 업데이트 – Redis 3.2의 기능을 사용할 수있게되었습니다
  • Geospatial Data – 공간 데이터의 처리를 할 수 사용할 수 있습니다

한 가지씩 살펴 보도록 하겠습니다.

Sharded Cluster 지원 및 콘솔 개선
지금까지 ElastiCache for Redis는 하나의 기본 노드와 5개까지의 읽기 복제본(read replica)을 포함한 클러스터를 지원했습니다. 이 구성에서 메모리 크기가 클러스터 당 237GiB로 제한되어있었습니다.

하나의 클러스터에서 15까지 샤드(Shard)를 만들 수 있게함으로써 전체 클러스터의 메모리 용량을 최대 3.5 TiB까지 메모리 내 데이터로 저장할 수 있습니다. 각 샤드는 5 개까지 읽기 복제본 운영이 가능하며, 초당 2,000만 읽기, 450만 쓰기 성능을 제공합니다.

샤드 모델을 읽기 복제본과 함께 이용하여 전체 클러스터 가용성과 성능을 향상시킵니다. 데이터는 여러 노드에 분산되며, 읽기 복제본을 통해 기본 노드에 장애가 발생했을때 빠르게 복구할 수 있습니다.

샤드 모델의 장점을 살리기 위해서는 클러스터를 지원하는 Redis 클라이언트를 사용해야합니다. 클라이언트는 16,384개의 슬롯을 샤드마다 균등하게 분산하여 해시 테이블로 처리하고 저장 데이터를 각 샤드에 매핑합니다.

ElastiCache for Redis는 클러스터 전체를 하나의 백업 및 복원 용도의 단위로 취급합니다. 따라서, 각 샤드마다 백업을 관리하거나 고민할 필요가 없습니다.

콘솔 기능을 개선하여 이러한 확장 클러스터를 쉽게 만들 수 있습니다. (Redis 엔진을 선택한 후 Cluster Mode enabled (Scale Out)을 체크하면 됩니다.)

콘솔에서 적절한 노드 유형 선택을 도와줍니다.

Sharded cluster는 AWS Command Line Interface (CLI), AWS Tools for Windows PowerShell, ElastiCache APIAWS CloudFormation 템플릿을 통해서도 만들 수 있습니다.

엔진 업데이트
Amazon ElastiCache for Redis에서 Redis3.2를 지원합니다. 이 버전은 세 가지 흥미로운 추가 기능을 가지고 있습니다.

  • Enforced Write Consistency – 새로운 WAIT 명령은 주 노드와 설정된 수의 읽기 복제본에서 확인 응답이 되돌아 올 때까지 호출을 차단합니다. 이러한 변경은 Redis를 강한 일관성을 가진 데이터 저장소를 만들 뿐 아니라, 읽기 복제본에 주 노트에서 만들어진 데이터를 보유하는 가능성을 더 향상 시킵니다.
  • SPOP with COUNTSPOP 명령은 set에서 임의 요소를 제거하고 이를 반환합니다. 하나 이상의 요소를 한 번에 요청할 수 있게 되었습니다.
  • Bitfields – Bitfields는 Redis에서 문자열(string)로 저장되어 있던 작은 정수 컬렉션을 비트 맵으로 저장하여 메모리 효율을 좋게하는 방법입니다. BITFIELD 명령을 사용하면 주소(GET)를 다루는(SET, increment, decrement) 것을 바이트 정렬과 문자 단위를 신경 쓰지 않아도 처리 할 수 있게 됩니다.

본 구현 방식은 서버 프로세스를 포크하는 것이 아니라 스냅샷 방식을 가지고 있습니다. 과부하 상태에서 표준 포크를 이용한 스냅샷은 스왑 성능 저하를 일으킬 수 있습니다. 우리의 구현은 메모리 사용률이 50%를 넘어도 작동하고 문제를 해결합니다.

그 밖에도 새로운 읽기 복제본 주 노드와 동기화 할 때 성능을 향상하고 있습니다. 이와 비슷한 성능 향상을 새롭게 추진하는 기본 노드와 기존 읽기 복제본 동기화 할 때에도 구현하고 있습니다.

언급한 대로, 현재 엔진은 오픈 소스 버전과 호환되며 여러분의 애플리케이션 변경을 할 필요하지 않습니다.

지리 정보 데이터
지리 공간 데이터 (위도/경도)를 저장하고 질의할 수있게되었습니다. 다음은 관련된 명령입니다.

  • GEOADD – 지리 공간 데이터 저장
  • GEODIST – 지점 간 거리 측정
  • GEOHASH – Geohash (geocoding)을 취득
  • GEOPOS – key를 통해 특정 지점의 아이템 얻기
  • GEORADIUS -지정된 지점 반경 내 아이템 얻기
  • GEORADIUSBYMEMBER – 다른 아이템의 반경 내에 들어가는 아이템 얻기

정식 출시
Sharded cluster를 포함 이번에 소개 한 모든 기능은 전체 AWS 리전에서 오늘부터 이용하실 수 있습니다.

Jeff;

이 글은 Amazon ElastiCache for Redis Update – Sharded Clusters, Engine Improvements, and More의 한국어 버전입니다.