Amazon ElastiCache

- AWS가 제공하는 완전관리형 인메모리 캐시 서비스
- 자주 조회되는 데이터를 메모리에 저장해 데이터베이스 부하를 줄이고 응답 속도를 단축하는 역할
- Redis와 Memcached 두 가지 오픈소스 엔진을 지원하며, 애플리케이션 성능 최적화와 확장성 확보를 위해 설계된 구조
- 데이터베이스 질의 처리량을 개선하고 API 응답 지연을 최소화하기 위한 캐시 계층으로 사용
- AWS 관리형 서비스로 제공되어 인프라 구성, 패치, 장애 복구 등 운영 작업이 자동화
아키텍처 구조
ElastiCache는 클러스터(Cluster) 단위로 구성되며, 각 클러스터는 하나 이상의 노드(Node) 로 이루어짐
노드는 Primary와 Replica로 구분되며, Primary는 쓰기 요청을 처리하고 Replica는 읽기 부하를 분산
Redis의 경우 Cluster Mode Enabled 옵션을 통해 데이터 샤딩(Sharding) 구조 사용 가능
샤드(Shard)는 데이터 파티션 단위로, 각 샤드는 Primary 1개와 여러 Replica로 구성
Memcached 엔진은 단일 캐시 풀로 동작하며, 클라이언트 측에서 키 기반 분산 처리를 수행
서버 간 데이터 복제가 없고 노드 간 상태 공유가 없기 때문에 단순 캐시 구조에 적합
주요 기능
1. 완전관리형 운영
- AWS가 인스턴스 운영체제, Redis/Memcached 엔진 버전, 보안 패치 등을 자동 관리
- 장애 발생 시 자동으로 노드 교체 및 데이터 복제 수행
- 스냅샷 기반 백업 및 복원을 통해 장애 시점 복구 가능
- 유지보수 작업(엔진 업그레이드, 노드 교체 등)을 최소화한 관리형 환경
2. 고가용성 및 복구 구조
- Redis Replication Group을 활용한 고가용성 구성
- Multi-AZ 배포를 통해 한 가용영역(AZ) 장애 시 자동 Failover 수행
- Route53 DNS Endpoint를 통해 장애 조치 후에도 연결 유지
- CloudWatch 메트릭 기반으로 Replica Lag 및 Failover 상태 모니터링 가능
- Redis Cluster Mode에서는 샤드 단위 복구 및 재배치 기능 제공
3. 확장성 및 성능 최적화
- Redis Cluster Mode Enabled 설정 시 샤드 단위로 수평 확장 가능
- 읽기 성능 향상을 위해 Read Replica 추가 가능
- 자동 백업 스냅샷을 사용해 운영 중에도 무중단 복구 수행 가능
- Eviction Policy(volatile-lru, allkeys-lru 등)를 적절히 설정해 메모리 효율 최적화
- CloudWatch의 CPUUtilization, CurrConnections, Evictions 메트릭을 기준으로 확장 정책 설정 가능
4. 데이터 일관성 및 TTL 관리
- 캐시 데이터는 기본적으로 비영구적이며 TTL(Time to Live) 기반으로 만료 관리
- RDS 또는 DynamoDB와 병행 구성 시 캐시 무효화(Cache Invalidation) 전략이 중요
- Lazy Loading, Write-Through, Write-Behind 등 캐시 쓰기 정책 선택 가능
- TTL 설정을 통해 Hot Key 남용 방지 및 메모리 효율 관리
5. 보안 및 접근 제어
- VPC 내부 서브넷에 배포되어 외부 인터넷 접근 차단
- 보안 그룹(Security Group)으로 접근 가능한 포트 및 IP 제한
- IAM Role 기반 관리 API 접근 제어
- Redis AUTH Token을 통한 사용자 인증 지원
- TLS 암호화 통신(SSL) 활성화로 데이터 전송 구간 보호
- Redis AUTH + TLS 조합으로 보안 강화 가능
Redis와 Memcached의 비교 및 선택 기준
| 항목 | Redis | Memcached |
|---|
| 데이터 구조 | 문자열, 리스트, 해시, 세트 등 복합 자료형 지원 | 단순 키-값 구조 |
| 데이터 지속성 | RDB 스냅샷, AOF 로그 제공 | 없음 |
| 복제 | Primary–Replica 복제 지원 | 미지원 |
| 샤딩 구조 | Cluster Mode Enabled로 자동 샤딩 지원 | 클라이언트 측 샤딩 필요 |
| 트랜잭션 | MULTI/EXEC로 지원 | 미지원 |
| 사용 사례 | 세션 스토리지, 실시간 순위, 큐 시스템 | 단순 캐시, 페이지 로드 속도 향상 |
Redis는 데이터 구조가 다양하고 고가용성 및 복제 기능이 강력
Memcached는 경량 구조로 단순 캐시 목적에 적합
주요 사용
1. 세션 캐싱(Session Store)
사용자 로그인 세션을 Redis에 저장해 인증 속도 향상
API 서버가 무상태(stateless)로 동작 가능
Replica를 이용해 읽기 부하 분산 및 장애 시 세션 손실 최소화
2. 실시간 데이터 처리
조회수, 좋아요, 주문 수 등 빠르게 변하는 데이터를 Redis Hash에 저장
비동기적으로 RDS 또는 S3로 동기화
Redis Pub/Sub 기능을 활용해 실시간 알림 또는 이벤트 전파 구현
3. 캐시 계층(Cache Layer)
RDS나 DynamoDB 앞단에 캐시 계층을 두어 읽기 요청 부하 감소
CloudFront → API Gateway → ElastiCache → RDS 구성으로 API 응답 최적화
4. 랭킹 및 큐 시스템
Sorted Set 자료형을 이용해 실시간 랭킹 시스템 구성
List 자료형을 활용해 대기열(Queue) 기반의 작업 처리 구현
비용 및 운영 고려사항
-
요금 구조
- 노드 타입(R6g, M7g 등)과 크기, 리전, 노드 수 기준 과금
- 온디맨드, 리저브드 노드(1년/3년 약정) 선택 가능
- 스냅샷 스토리지 및 데이터 전송 비용은 별도 과금
-
운영 최적화 포인트
- TTL 정책과 Eviction 전략으로 메모리 사용률 관리
- Read Replica 추가를 통한 읽기 부하 분산
- Redis Cluster Mode 활용 시 키 해싱 분포 설계 중요
- 대규모 트래픽 환경에서는 Connection Pool 관리 필요