자, 드디어 Redis의 마지막 챕터에 도달했다.
3일을 Redis를 위해 달려왔다!
이번 계기로 나도 Redis를 활용해서 조회 성능을 개선할 수 있는 개발자로 성장하자!
1. ElasticCache 잘 생성된거 맞아?
우선 대시보드에 들어가서 상태를 확인해보자.
상태가 Avaliable로 변경된 걸 보니 잘 생성된 것 같다.
생각보다 엄청 오래 걸려서 한참 기다렸다.
2. EC2에서 ElastiCache 접속해보자!
기본 엔드포인트에서 Port만 빼고 복사하자.
참고
- 기본 엔드포인트: 모든 권한을 가지고 있는 주소
- 리더 엔드포인트: 읽기 전용 주소
# EC2에서 ElastiCache 접속하는 명령어
redis-cli -h instagram-cache-server.iaxvmk.ng.0001.apn2.cache.amazonaws.com
# ElastiCache 통신 확인 명령어
ping
참고
다른 주소의 Redis에 접속하기 위해서는 -h 옵션을 붙여줘야 한다.
3. 로컬에서도 접속이 될까?
아무런 응답이 없네. 🤔🤔🤔🤔
로컬에서는 EC2 ElastiCache에 접속되지 않는다.
이유
ElastiCache는 같은 VPC에서만 접속이 가능하기 때문이다.
4. 그럼 EC2랑 ElastiCache랑 VPC가 같아?
EC2의 VPC
ElastiCache의 VPC
VPC가 같았군 😶🤔😶🤔😶🤔
5. Spring Boot랑 연결하자!
application.yml 수정
# prod 환경
spring:
config:
activate:
on-profile: prod
datasource:
url: jdbc:mysql://instagram-db.cfqanhnkrusz.ap-northeast-2.rds.amazonaws.com:3306/mydb
username: admin
password: password
data:
redis:
host: instagram-cache-server.iaxvmk.ng.0001.apn2.cache.amazonaws.com
port: 6379
배포 환경에 redis 연동 정보를 추가하고 ElastiCache의 기본 엔드포인트 정보를(Port 제거) 작성해준다.
EC2에 배포하기 위해서 Github Repository에 Push하고 EC2에서 Pull 받자.
6. Spring Boot 프로젝트 실행
ElastiCache는 Docker로 띄우지 않을거기 때문에 기존 방식으로 실행한다.
# 테스트 생략하고 Spring Boot 빌드하는 명령어
./gradlew clean build -x test
# 빌드 파일이 있는 곳으로 디렉토리 이동하는 명령어
cd build/libs
# Spring Boot 실행하는 명령어
java -jar -Dspring.profiles.active=prod redis-in-spring-0.0.1-SNAPSHOT.jar
7. API 테스트가 빠질 수 없지
데이터 응답은 이번에도 정상이다.
최초 요청에 대한 로그
최초 요청시 Redis에 데이터가 없어 데이터베이스를 통해 데이터를 취득하고 Redis에 해당 데이터를 저장한 것을 확인할 수 있다.
두번째 요청에 대한 로그
두번째 요청시 기존에 저장되어 있는 데이터가 Redis에 존재해 데이터베이스 SQL이 찍히지 않은 것을 알 수 있다.
이로써 ElastiCache 도 Cache Aside 전략의 흐름대로 동작하는 것을 알 수 있게 되었다. 😌
이제 프로젝트에 활용해보러 가야지 😎
Reference.
'Redis' 카테고리의 다른 글
[Redis] AWS ElasticCache를 활용하자! (1) (1) | 2024.10.26 |
---|---|
[Redis] Docker Compose로 Redis + Spring Boot 띄우기 (AWS) (0) | 2024.10.26 |
[Redis] Docker Compose로 Redis + Spring Boot 띄우기 (로컬) (0) | 2024.10.26 |
[Redis] Redis 적용 전,후 부하 테스트도 진행해볼까? (2) | 2024.10.25 |
[Redis] AWS EC2에서 Redis를 활용해보자! (2) (0) | 2024.10.25 |