Infra & AWS

[Redis] AWS ElastiCache for Redis를 활용한 데이터 캐싱 설정

Accept 2024. 4. 13. 21:04
현재 다니는 회사에서 프로젝트 요구에 따라 Redis와 같은 인메모리 DB를 도입할 필요성을 느꼈습니다.
과거 Redis를 EC2에 설치해서 사용한 경험을 통해, 이번에도 Redis를 사용하기로 결정했고 관련 정보를 찾던 도중 AWS에서 2023년 12월에 ElastiCache for Redis Serverless를 출시했다는 따끈따끈한 소식을 접하게 되었습니다.

서버리스의 장점은 개발자가 인프라 관리에 들이는 노력을 대폭 줄일 수 있다는 것입니다. 하지만, 종종 성능 대비 높은 가격과 낮은 설정 자유도가 단점으로 작용합니다. 예시로 AWS Aurora MySQL Serverless v2는 기존 RDS MySQL보다 거의 두배 가까운 비용이 듭니다. 이에 Redis의 서버리스 버전도 비슷한 비용 문제가 있지 않을까 우려했습니다. 그러나 자세한 비용 책정 기준 확인 결과, 데이터 저장 크기가 비용에 큰 부분을 차지하며, 가장 낮은 단위이자 기본 설정인 1GB로 설정하여 월 약 100달러로 비교적 저렴하게 사용할 수 있음을 확인했습니다.

이러한 이유로, 관리 부담을 최소화하면서 적당한 비용을 지불하면 사용할 수 있는 ElastiCache for Redis Serverless를 사용하기로 결정했습니다.

 

 

1. AWS 접속 후 ElastiCache로 접속 -> [지금 시작] 버튼을 누르고 Redis를 선택합니다.

 

 

2. [서버리스 - 신규], [새 캐시]를 선택하고, [서버 이름]과 [설명]을 작성합니다.

 

 

3. [기본 설정 사용자 지정]을 선택합니다. (테스트 또는 간편하게 설정하고 싶을 경우 기본 설정 사용을 선택해도 됩니다)

 

 

4. 3에서 기본 설정 사용자 지정으로 선택 시, VPC와 가용 영역을 지정할 수 있습니다. 일반적으로 Redis는 보안에 취약하기에 가능하면 Private Subnet에 위치시켜 Private Subnet에 위치한 WAS와만 통신시키는게 보안상 유리합니다. 저는 Redis 설정 전 생성해둔 VPC, Subnet을 선택했습니다. 연결 설정 시 가용 영역은 반드시 2개 이상의 가용 영역과 Subnet을 선택해야합니다. ALB 등을 설정할 때도 가용 영역을 반드시 2개 이상 선택하는데 이것과 유사한 개념이라고 생각하면 될 것 같습니다.

 

 

5. 보안 탭에서는 [보안 설정 사용자 지정]을 선택했고, 보안 그룹에서 Redis용으로 생성해둔 보안 그룹을 선택했습니다. 선택한 보안 그룹에는 Redis의 기본 포트인 6379 포트를 오픈했습니다.

 

 

6. 별도 백업 설정은 하지 않았고, 사용량 한도에서 데이터 스토리지를 최소/최대 1GB로 설정했습니다. 1GB 기준 한달 약 100달러 정도로 사용 가능하며, 1GB 용량으로도 꽤 많은 데이터를 캐싱할 수 있습니다. 모니터링을 적절히 확인하며 용량을 관리해주시면 될거 같습니다.

 

 

7. 마지막의 태그에는 편의를 위해 Name 키를 설정하고 [생성] 버튼을 눌러줍니다.

 

 

 

8. 몇분 정도 지나면 상태가 Available이 되고 사용 가능하게 됩니다.

 

 

 

9. 생성 후 WAS에서 호출하도록 설정했고, 사용 중인 Redis 정보 페이지에서 모니터링 도구를 통해 지표 확인이 가능합니다.

 

 

10. 간단한 동작 테스트를 위해 AWS Cloud9 서버를 Redis를 생성한 VPC, Subnet에 생성한 뒤 테스트 했습니다. 'test' key로 데이터를 캐싱한 뒤 호출해보는 간단한 Python 코드를 작성해보았습니다.

참고로 생성한 Redis 호출 시 반드시 SSL 설정을 True로 설정한 뒤 호출해주셔야 정상적으로 호출되기에 SpringBoot 또는 Python 프레임워크 등에서 Redis 연동 시 SSL 설정을 True로 설정해주시기 바랍니다.