4.배포 환경을 위한 단일 Redis 인스턴스: AWS ElasticCache 활용법
..::..
.:+*##++==:. / \ \ / / ___|
..=*######+++++++-.. / _ \ \ /\ / /\___ \
-############**++++= / ___ \ V V / ___) |
.:-=*###########+-:: /_/___\_\_/\_/ |____/ _ ____ _
*###++++. | ____| | __ _ ___| |_(_) ___ / ___|__ _ ___| |__ ___
*###++++. | _| | |/ _` / __| __| |/ __| | / _` |/ __| '_ \ / _ \
*###++++. | |___| | (_| \__ \ |_| | (__| |__| (_| | (__| | | | __/
.:::------------::.. |_____|_|\__,_|___/\__|_|\___|\____\__,_|\___|_| |_|\___|
-###*++=-----===+++=
..=*######+++++++-..
.:+*##++==:.
..--..
AWS ElasticCache란?
AWS ElasticCache는 아마존 웹 서비스(AWS)가 제공하는 관리형 인메모리 캐싱 서비스다.
데이터를 메모리에 저장하여 빠른 데이터 검색과 애플리케이션 성능 향상을 돕는다.
Redis 또는 Memcached와 같은 인기 있는 오픈 소스 인메모리 캐싱 시스템을 쉽게 설정, 관리, 확장할 수 있도록 설계되었다.
AWS ElasticCache 프리티어 생성
아래 스크린샷 처럼 설정을 한다.
서브넷은 생성하거나 기본값을 선택해도 무관
cache.t2.micro를 선택하는게 중요하다
매월 750시간의 t2.micro 노드 사용량 (Redis 또는 Memcached)
이는 한 달 동안 지속적으로 t2.micro 노드 1개를 무료로 사용할 수 있음을 의미한다. (31일 * 24시간 = 744시간)
내 경우에는 로컬환경에서 ElasticCache를 테스트하려고 보안그룹 설정에서 포트를 열어놨다.
그 외 다른 설정들은 대부분 해제하면 된다.
팀원이 생성한 EC2 인스턴스에서 AWS ElasticCache 활용해서 검증
EC2 인스턴스와 ElastiCache 클러스터가 동일한 VPC 내에 있고, 보안 그룹 설정이 올바르게 되어 있다면 별도의 복잡한 설정 없이도 EC2에서 ElastiCache를 사용할 수 있다.
ElasticCache를 로컬 개발 환경에서 사용하기
IntelliJ에서 로컬 환경으로 설정한 레디스 말고 ElasticCache를 사용해서 캐싱처리한 데이터를 조회 해보고 싶었다.
여러가지 정보를 검색한 결과 ssh 터널링을 사용해서 접근하는 방법을 찾을 수 있었다.
로컬 머신에서 SSH 터널링을 사용하여 AWS ElasticCache Redis에 안전하게 접근하는 방법
SSH 터널링 설정 방법
터미널에서 다음 명령어를 실행:
ssh -i /path/to/your-key.pem -N -L local-port:elasticache-endpoint:redis-port ec2-user@bastion-host-ip
path/to/your-key.pem: EC2 인스턴스에 접속하기 위한 SSH 키 파일의 경로이다.
local-port: 로컬 머신에서 사용할 포트 번호다. 이미 사용 중인 포트가 아니어야 하며, 여기서는 예시로 6380을 사용한다.
elasticache-endpoint: AWS ElastiCache Redis 인스턴스의 엔드포인트 주소.
redis-port: Redis 서비스가 사용하는 포트 번호로, 일반적으로 6379이다.
ec2-user: EC2 인스턴스의 사용자 이름. 우분투 서버를 사용하는 경우 ubuntu가 기본 사용자 이름이다.
bastion-host-ip: Bastion Host로 사용되는 EC2 인스턴스의 공개 IP 주소.
주의사항
명령어 실행 후, 연결이 성공했음을 알리는 별도의 메시지는 출력되지 않는다.
이 SSH 터널이 성공적으로 설정되면, 로컬 머신의 6380 포트를 통해 ElastiCache Redis에 안전하게 접근할 수 있다.
Spring Boot 애플리케이션 설정
application.properties 파일에서 Redis 설정을 다음과 같이 변경한다.
spring.data.redis.host=localhost
spring.data.redis.port=6380
이 설정은 SSH 터널을 통해 로컬 포트 6380으로 ElastiCache Redis 인스턴스에 접근하도록 지시한다.
테스트 및 검증
인텔리제이에서 Redis에 데이터를 저장한 후, EC2 인스턴스에서 ElastiCache Redis를 사용하여 해당 데이터를 조회할 수 있다.
이 과정을 통해 SSH 터널링을 사용하여 로컬 머신과 AWS ElastiCache Redis 간에 안전한 통신 경로가 성공적으로 설정되었음을 확인할 수 있다.
첫 번째 POST 요청을 보내서 Redis에 데이터를 저장한다.
EC2 인스턴스에 접속한 후, ElastiCache Redis에서 키 값을 조회한다.