목차
1. AWS ElastiCache란?
ElastiCache는 AWS에서 제공하는 관리형 인메모리 캐시 서비스
즉, 서버에서 직접 Redis나 Memcached를 설치/운영할 필요 없이, AWS가 캐시 서버를 관리해주고 스케일링, 장애 복구, 모니터링 등을 지원해줌
장점
- 실시간 성능: 모든 데이터가 메모리에 저장되기 때문에 읽기/쓰기 속도가 빠름
- 자동 관리: 백업, 패치, 모니터링, 장애 복구 등 AWS가 알아서 해줌
- 유연한 스케일링: 트래픽이 늘어나면 노드 추가/제거 가능
- 고가용성: Multi-AZ 배포 지원으로 장애 발생 시 자동 페일오버
2. ElastiCache를 사용하는 이유
- 애플리케이션 서버 메모리 부담 감소
- 이전에 ECS 태스크에 App + Redis를 같이 띄우면서 OOM 발생
- → ElastiCache로 분리하면 앱 서버는 더 적은 메모리로 운영 가능
- 실시간 데이터 처리
- 채팅, 세션, 인기 콘텐츠 등 빠른 읽기/쓰기가 필요한 서비스에서 활용
- 관리 편의성
- 서버 직접 운영 없이 AWS가 자동으로 관리
- 패치, 모니터링, 백업, 장애 복구를 자동 처리
3. 지원 엔진 비교: Redis OSS vs Memcached vs Valkey
| 특징 | Redis OSS | Memcached | Valkey (오타 가능, AWS에서는 잘 안씀) |
| 데이터 구조 | 문자열, 리스트, 해시, 셋, 정렬셋 등 다양한 자료구조 | 문자열(key-value) 단순 | 거의 Redis와 비슷하지만 AWS 공식 문서에서는 거의 Redis/Memcached만 |
| 영속성 | 가능 (RDB/AOF) | 불가 | N/A |
| Pub/Sub, 트랜잭션 |
가능 | 불가 | N/A |
| 고가용성 | Redis Cluster + Multi-AZ 지원 | 단순 샤딩, 복제 제한적 | N/A |
| 사용 사례 | 세션 관리, 캐시, 메시지 브로커, 리더보드 | 단순 캐시, 조회 중심 데이터 | 거의 없음 |
현실적으로 AWS에서 선택지는 Redis OSS 혹은 Memcached 둘 중 하나
대부분 실시간 세션/채팅/같이 보기 서비스라면 Redis를 선택
4. Redis 선택 기준
- 세션 공유, Pub/Sub, 트랜잭션이 필요한 경우 → Redis
- 단순 캐시용, 데이터 구조가 문자열밖에 필요 없는 경우 → Memcached
- 영속성 필요 여부 → Redis는 디스크 백업 가능
- 스케일링 방식
- Redis Cluster로 샤딩 가능
- Memcached는 노드 단위 수평 확장
5. ElastiCache Redis 사용 방법
5-1) 인스턴스 생성
- AWS 콘솔 → ElastiCache → Redis → 클러스터 생성
- 클러스터 모드: 클러스터 모드 활성화 (샤딩 가능) 또는 단일 노드
- 노드 타입 선택 (메모리 용량 기준)
- VPC, Subnet 선택 (ECS와 같은 VPC에 배치)
- 보안 그룹: ECS Task Security Group에서 Redis 포트(6379) 접근 허용
5-2) 애플리케이션 연동
- Spring Boot Redis 의존성
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
- application.yml
spring:
redis:
host: <ELASTICACHE_ENDPOINT>
port: 6379
password: <OPTIONAL_PASSWORD_IF_SET>
- ECS Task에서 애플리케이션이 VPC 내부 Redis 엔드포인트에 접근 가능하도록 보안 그룹 연결 필요
6. 고려해야 할 사항
- 비용: Redis 노드 메모리 + I/O 비용
- 노드 타입/메모리: 애플리케이션 트래픽과 데이터 크기 기준으로 적절히 선택
- 보안: VPC 내 배치 + 보안 그룹으로 접근 제어
- 백업/복제: Multi-AZ 배포, 스냅샷 백업
- TTL 정책: 캐시 데이터 만료 시간 설정 필수
- 모니터링: CloudWatch로 CPU, 메모리, 연결 수, evictions 확인
요약
- ECS App + Redis 같은 태스크 → OOM 발생 → Redis 분리 필요
- ElastiCache를 쓰면 AWS가 Redis 관리 + 스케일링 + 백업 제공
- 실시간 세션/같이 보기 서비스 → Redis 선택
- Memcached는 단순 캐시용, Pub/Sub나 영속성 필요하면 Redis
- 연동 시 VPC, 보안 그룹, Redis 엔드포인트, Spring Boot 설정 필수
- Multi-AZ, 백업, TTL, CloudWatch 모니터링 고려
7. 수정사항
- ElastiCache 서버리스는 PW가 없음!
- redis host의 vlaue에 aws 콘솔의 endpoint를 작성하는데 이때 포트번호를 작성하면 안됨! 자동으로 6379로 매핑되기 때문!
728x90
'DevOps & Cloud > AWS' 카테고리의 다른 글
| [S3] Presigned URL을 사용하지 않는 상황 (0) | 2025.12.16 |
|---|---|
| ECS(Fargate)와 ElastiCache Redis 연결 시 고려사항 (0) | 2025.12.11 |
| S3 버킷 정책(get요청만 public으로 전환하는 법) (0) | 2025.11.27 |
| [AWS] ECS (1) | 2025.08.31 |
| [AWS] RDS (0) | 2025.08.30 |