ElastiCache는 AWS에서 인 메모리 데이터베이스 캐싱 시스템을 제공하여 애플리케이션이 데이터를 검색 할 수있는 성능, 속도 및 중복성을 향상시키는 클라우드 캐싱 서비스입니다. Memcached 또는 Redis와 호환되는 서버 노드를 쉽게 배포 및 실행할 수 있다.(Memcached, Redis는 이미 널리 쓰이고 있는 인 메모리 데이터베이스 시스템이다.)
인 메모리 환경의 관리, 모니터링 및 운영을 간소화하여 부담을 덜어주므로 애플리케이션 개발에 엔지니어링 리소스를 집중할 수 있습니다.
인 메모리 캐싱 기능을 이용하면 읽기 작업이 많은 애플리케이션 워크로드(소셜 네트워킹, 게임, 미디어 공유, Q&A 포털 등) 또는 컴퓨팅 집약적 워크로드(추천 엔진 등)의 지연 시간과 처리량(throughput)이 비약적으로 향상된다. 인 메모리 캐싱은 핵심 데이터 조각을 메모리에 저장해 액세스 지연 시간을 줄여주므로 애플리케이션 성능이 향상된다. 캐싱된 정보에는 I/O 집약적 데이터베이스 쿼리 결과 또는 컴퓨팅 집약적 계산 결과가 포함될 수 있다.
프리티어 환경에서도 ElastiCache를 사용할 수 있다. 월 750 시간 ElastiCache의 cache.t2.micro 또는 cache.t3.micro 노드 사용량을 할당 받는다. ElastiCache 노드 자체에서 송수신한 트래픽에 대해서는 ㅇ데이터 전송 요금이 부담되지 않는다. 다만 일부 설정에 대해 요금이 청구될 수 있으므로 유의가 필요하다.
ElastiCache에서 사용할 보안그룹을 생성한다. EC2 인스턴스가 속해있는 VPC를 선택하고 인바운드 규칙에 EC2의 서브넷 그룹을 선택한다. 포트는 아래에서 적용할 6379 포트를 사용한다.
Amazon ElastiCache - Redis 캐시 - Redis 캐시 생성 버튼을 클릭한다.
현재 프로젝트에서는 Redis를 사용 중이므로 클러스터 유형은 Redis, 커스텀을 선택하고 클러스터 모드는 비활성화 한다. 추가 요금이 발생할 수 있기 때문이다.
이름과 엔진은 임의로 정해주고, 노드 유형은 프리티어에서 사용 가능한 cache.t2.micro 또는 cache.t3.micro을 선택한다. 복제본 수는 0으로 설정한다. 마찬가지로 추가 요금 때문이다.
연결 설정 사용자 지정
을 선택하고 포트는 Redis에서 기본으로 사용하는 6379 포트, 서브넷 그룹은 새로 생성해준다.
서브넷 관리에서 가용영역은 EC2, RDS를 생성했던 ap-northeasst-2c를 선택했다.
EC2 인스턴스가 속해있는 VPC를 선택한다.
위에서 생성했던, EC2 인스턴스의 인바운드 규칙을 설정한 보안그룹을 선택한다.
생성 요청 후 잠시 기다리면 (나는 10~20분 정도 기다렸던 것 같다.) ElastiCache의 엔드포인트 구성이 완료된 것을 확인할 수 있다.
EC2에서 정상적으로 Redis에 접속이 가능한지 확인하기 위해서 redis를 설치해볼 것이다. 참고로 여기서는 EC2 인스턴스에 Amazon Linux를 설치해 사용 중이다.
# GNU 컴파일러 설치
sudo yum install gcc
# redis-cli 설치
wget http://download.redis.io/redis-stable.tar.gz
tar xvzf redis-stable.tar.gz
cd redis-stable
make distclean # ubuntu에서만 입력
make
# 생성한 클로스터 접속
src/redis-cli -c -h redis-elasticache.tjba4s.ng.0001.apn2.cache.amazonaws.com -p 6379
# 테스트
set a "hello"
# -- 응답값
OK
정상적으로 Redis에 접속 후 데이터 생성까지 된 것을 확인할 수 있다.
spring:
...
redis:
host: redis-elasticache.tjba4s.ng.0001.apn2.cache.amazonaws.com
port: 6379
스프링 프로젝트에서 ElastiCache의 Redis에 접속할 수 있도록 설정해주자.