SpringBoot: 3.1.3
Build: Gradle
Java: 17
OS: Window
EC2: ubuntu
📌 오늘은 프로젝트에 적용했던 ElastiCache의 Redis 연결방법을 정리하고자 한다.
🙋♀ 나는 위의 "참고사이트"에서 도움을 많이 받았는데 EC2 서버가 달라서 내가 선택한 ubuntu 기준으로 다시 확인하고 SpringBoot에 어떻게 적용했는지 기록해 보려고 한다.
👉 이 서비스를 사용하면 사용자는 인터넷을 통해 고성능, 확장 가능하고, 안정적인 인메모리 데이터 스토어를 설정, 관리 및 확장할 수 있다.
🤷♀ 완전 관리형 인메모리 데이터 스토어 서비스가 뭘까?
👉 사용자가 인메모리 데이터 스토어 관련 작업을 거의 신경 쓰지 않아도 된다는 뜻으로, AWS가 백업, 패치 관리, 장애 복구 등을 처리한다.
🤷♀ 인메모리 데이터는 또 뭘까??
👉 인메모리 데이터는 컴퓨터의 주 기억장치인 RAM(Random Access Memory)에 저장되는 데이터를 의미한다.
인메모리 데이터는 디스크에 저장되는 데이터에 비해 빠르게 접근하고 처리할 수 있어, 높은 성능이 필요한 애플리케이션에서 사용된다.
👉 VPC(Virtual Private Cloud)는 AWS에서 제공하는 가상의 개인 네트워크 환경이다.
사용자는 VPC 내에서 AWS 리소스를 실행할 수 있으며, 이 환경은 사용자가 정의한 IP 주소 범위, 서브넷, 라우팅 테이블, 네트워크 게이트웨이 등을 포함한다.
ElasticCache가 VPC 내에서 실행된다는 것은, ElasticCache가 사용자가 설정한 가상의 개인 네트워크 환경 내에서 운영되며, 이 환경 내에서만 ElasticCache에 접근할 수 있다는 의미이다.
이로 인해, ElasticCache는 인터넷에서 직접적으로 접근할 수 없기 때문에 보안이 향상된다.
📌 이 설명의 정확한 이해를 위해 아래와 같이 가정해보았다.
사용자 A: EC2 생성
사용자 B: ElasticCache 생성
👉 불가
일반적으로, AWS 리소스들은 같은 AWS 계정 내의 리소스끼리만 연결할 수 있다.
따라서, 사용자A가 생성한 EC2 인스턴스에 연결하려면 사용자A가 ElasticCache도 생성해야 한다.
물론 특정 설정과 권한 부여를 통해 다른 계정의 리소스와의 연결이 가능할 수는 있다.
예를 들어 Resource Access Manager를 사용하여 리소스를 공유하거나,
IAM 역할을 사용하여 다른 계정의 리소스에 접근 권한을 부여할 수 있다.
하지만 이러한 설정은 복잡하고 보안 리스크가 있을 수 있으므로, 신중하게 검토하고 구현해야 한다.
따라서 일반적으로 사용자 A의 EC2 인스턴스와 사용자 B의 ElasticCache 인스턴스를 직접 연결하는 것은
허용되지 않는다고 보면 된다.
요약하자면
VPC는 AWS 리소스에 대한 보안을 강화해주고, ElasticCache는 고성능의 인메모리 데이터 스토어 서비스를 제공하여, 사용자는 편리하고 안전하게 서비스를 이용할 수 있다.
👉 free-tier는 t2.micro 노드 1개에 대해 무료로 제공하기때문에 동적으로 노드갯수가 늘어나서 요금이 발생할 가능성이 있어서 비활성화를 권유한다.
Free-tier를 사용한다면 노드유형을 t2.micro로 셋팅해야 별도로 요금이 부과되지 않는다.
복제본의 갯수를 2개로 하면 Free-tier의 경우 750(t2.micro 무료 제공시간)/3(master + 복제본2)시간으로 소모된다.
따라서 비용이 부과될 수 있어서 0으로 설정하는 것을 권장한다.
"다음" 클릭
나머지는 기본값으로 설정 후 생성하기 완료
EC2 접속 후 아래의 명령어를 하나씩 입력하기
sudo apt-get update
sudo apt-get install build-essential wget
wget http://download.redis.io/redis-stable.tar.gz
tar xvzf redis-stable.tar.gz
cd redis-stable
make distclean
make
src/redis-cli -c -h yourcachecluster.yourregion.cache.amazonaws.com -p 6379
set a "hello"
기본 엔드포인트의 주소를
src/redis-cli -c -h yourcachecluster.yourregion.cache.amazonaws.com -p 6379
표시한 부분에 넣어주기
핑 테스트
spring.data.redis.host={본인 엔드포인트 입력}
// ex. spring.data.redis.host=abc.cache.amazonaws.com
spring.data.redis.port=6379
//Redis
implementation 'org.springframework.boot:spring-boot-starter-data-redis'
완료~!~!