ElastiCache Redis OSS 이해와 최적화 노드 선택하기

ElastiCache Redis OSS Cluster (Cluster Mode Enabled)
이민석's avatar
Sep 03, 2024
ElastiCache Redis OSS 이해와 최적화 노드 선택하기

리서치

  1. 목적

  2. 결과

목적

임시 데이터 캐싱 목적으로 ElastiCache를 사용하고 있는데
AWS SA 분과 밋업 중에 ElastiCache 비용 절감을 원하시면 Graviton Processor 기반의 ElastiCache로 마이그레이션을 추천 받았습니다.

이에 ElastiCache에 대한 전반적인 리서치, 현재 사용 중인 타입 그리고 ElastiCache Graviton Processor로 마이그레이션을 하면 실제로 비용이 절감되는지에 대해서 리서치 하였습니다.

결과

실제로 Graviton 2/3 Processor 기반의 t4g, m5g, r6g / m7g, r7g 노드 타입이 vCPU, MEM 대비 더 비용이 저렴했습니다. 웃긴 점은 이미 버스터블 타입의 Graviton Processor인 t4g를 사용하고 있다는 점이었습니다.

사전 지식

ElastiCache 비용 최적화 과정을 이해하기 전,
ElastiCache가 무엇이며, 어떤 엔진을 지원하며, 어떤 클러스터링 방식을 따르는지 등의 사전 지식이 필요합니다. 본 챕터에서는 해당 지식들을 다루고 있습니다. 각 소제목의 내용을 모두 알고 있다면 최적화 탭으로 넘어가주세요.

  1. ElastiCache란?

  2. ElastiCache Engine 2종류

  3. ElastiCache Cluster Mode란?

  4. Redis OSS와 Redis OSS Cluster 비교

  5. ElastiCache Node Types 소개

  6. ElastiCache Processor 소개

  7. 실제 ElastiCache Node Types 종류

ElastiCache란?

ElastiCache는 관리형 인메모리 캐시 서비스입니다.
Redis, Memcached 두 가지 오픈 소스 캐시 엔진을 지원합니다.

AWS Console 상에서 ElastiCache를 생성하고 나면 다양한 옵션들이 눈에 들어옵니다. 클러스터 모드, 샤드, 노드, 데이터 계층화, 다중 AZ, 자동 장애 조치, …

이런 부분들에 대한 기초적인 이해가 있어야 ElastiCache 비용 최적화 과정을 원활하게 이해할 수 있기 때문에 아래와 같이 2가지 섹션을 추가로 포함하였습니다.

  1. ElastiCache Engine

  2. ElastiCache Cluster & Node

  3. ElastiCache Primary & Replica Nodes

ElastiCache Engine 2종류

ElastiCache는 Redis OSS와 Memcache의 2가지 엔진을 지원합니다.
둘 다 사용하기 쉽고 고성능을 제공하지만 아키텍처적인 몇 가지 차이점이 존재합니다. 본 문서에서는 ElastiCache Redis OSS에 대해서 내용을 다룹니다.

ElastiCache Cluster Mode란?

ElastiCache Redis OSS 버전 3.2 부터 2가지 종류로 생성할 수 있습니다.

  1. Replication Group(Redis OSS, Cluster Mode Disabled)

  2. Replication Group(Redis OSS Cluster, Cluster Model Enabled)

여기서 말하는 Cluster Mode가 활성화되면 샤딩(Sharding) 기반의 데이터 분할이 활성화 됩니다.

Redis OSS와 Redis OSS Cluster 비교

Redis OSS는 Cluster Mode가 비활성화 되어 있는 것을 의미합니다.
이에 따라 Redis OSS에는 단일 NodeGroup을 가지며 이 노드 그룹을 샤드라고 부릅니다. 단일 샤드에는 1개의 Primary Node와 경우에 따라 1~5개의 Replica Node를 가질 수 있습니다.

결정적으로 Redis OSS는 트래픽 변화에 따라 다음과 같이 확장이 가능합니다.

  1. Redis OSS Replica Node들을 추가 (수평적 확장)

  2. Redis OSS Node Type 확장 (수직적 확장)

Redis OSS Cluter는 Cluster Mode가 활성화 되어 있는 것을 의미합니다.
이에 따라 Redis OSS Cluster는 복수 NodeGroup을 가지며 각 노드 그룹을 샤드라고 부릅니다. 각 샤드에는 1개의 Primary Node를 가지며 1~5개의 Replica Node를 가질 수 있습니다. 샤드의 총수량은 1~500개 사이로 정의됩니다.

결정적으로 Redis OSS Cluster는 트래픽 변화에 따라서 Sharding 기반의 데이터 분할 방식으로 확장이 가능합니다.

  1. Redis OSS Cluster에 새로운 Shard를 추가 (수평적 확장)
    해당 과정에서 Offline resharding & shard rebalancing 혹은 Online resharding & shard rebalancing 중 한 가지 방법을 선택하며, offline 방식을 사용하면 해당 과정에서 Redis OSS Cluster는 확장 과정에서 요청을 처리할 수 없는 상태가 됩니다.

또한 Redis OSS는 더 큰 타입을 사용하되 Redis OSS Cluster에서는 더 작은 타입을 사용하고 많은 수량이 사용이 가능합니다.

  1. Redis OSS는 Primary Node가 1개이기 때문에 작은 NodeType을 한 개만 사용하는 것이 가능합니다.

  2. Redis OSS Cluster는 Primary가 N개 이기 때문에 더 작은 NodeType을 여러개 배치하는 것이 가능합니다.

특이한 부분은 읽기 작업쓰기 작업에 대해서 각기 다른 추가 조치가 가능한 점도 있습니다.

  1. Redis OSS는 추가 읽기 작업에 대해서 읽기 복제본(Replica Node)를 확장하여 조치할 수 있습니다.

  2. Redis OSS Cluster는 추가 쓰기 작업에 대해서 추가 쓰기 앤드포인트(Additional Write Endpoint)를 활용할 수 있습니다.

ElastiCache Node Types 소개

ElastiCache에는 크게 3가지 종류의 Node Type이 존재합니다.

  1. T-type (Bustable)

    1. 일반적으로 적은 용량의 vCPU, MEM, Network 요구사항을 가지며 종종 트래픽이 치솟는 소규모 어플리케이션

  2. M-type (General Purpose)

    1. vCPU, MEM, Network에 균형이 맞춰줘 있으며 대부분의 어플리케이션에 적합

  3. R-type (Memory Optimized)

    1. Low Latency를 요구하며 Memory 집약적인 어플리케이션

설명 상으로는 다음과 같이 표기되어 있습니다.

실제 ElastiCache Node Types 종류

작서일(2024-09-03) 시점 서울 리전(ap-northeast-2)에는
t4g, t3, t2, m7g, m5g, m4, r7g, r6g, r5, r4 등의 노드 패밀리가 존재합니다.
노드 타입의 접두사 t, m, r이 각각 버스터블, 컴포터블, 메모리 최적화 타입입니다.
그리고 접미사 g는 graviton processor로 빌드 및 배포된 ElastiCache Redis OSS를 의미합니다.

Graviton Processor

AWS에서는 EC2, Aurora, ElastiCache 등의 서비스에 대해서
Graviton Processor 위에서 돌아가는 일부 타입을 지원하고 있습니다.

Graviton Processor는 AMD 칩 위에서 가동되는 전용 프로세서로서 x86에서 가동되는 Intel Processor에 비해서 성능, 비용, 지연 시간 측면에서 더 효율적입니다.

ElastiCache Graviton Processor

ElastiCahe에는 Graviton v2와 Gravtion v3가 있습니다.

  • Graviton v2 : t4g, m5g, r6g

  • Graviton v3 : m7g, r7g

References

Share article

Unchaptered