Amazon ElasticCache 구축 및 접속
개요
이번 실무에 투입할 Redis를 공부해 보며 AWS 상에 구축하려고 하다가 ElasticCache를 경험해보고 싶다는 생각이 문득 들어 구축을 진행해 보았습니다.
로컬에서는 Docker를 활용하여 쉽게 Redis를 구축해서 개발할 수 있지만 운영환경에서는 복제나 고가용성까지 신경 써서 구축하고 관리해야 하므로... 다들 아시듯이 실무에서는 러닝커브를 뛰어넘을만한 시간을 주지 안.... 핑계입니다.
어쨌든 그래서 ElasticCache를 사용할 것이라고 생각은 하고 있었기 때문에 이번에 구축을 간단하게라도 해보았습니다.
Amazon ElasticCache란?
Amazon ElastiCache는 클라우드에서 인 메모리 데이터 스토어 또는 캐시를 손쉽게 배포, 운영 및 확장할 수 있게 해주는 웹 서비스입니다.
이 서비스는 RDBMS에 보다 빠른 관리형 인 메모리 데이터 스토어에서 정보를 검색할 수 있도록 지원하여 웹 애플리케이션의 성능을 향상할 수 있습니다.
Amazon ElastiCache은 Redis와 Memcached 엔진을 지원하고 있습니다.
구축 예제
1. ElasticCache 클러스터 생성
Amazon ElastiCache 콘솔에서 redis 엔진으로 클러스터를 생성합니다.
서버리스로 하면 서버를 관리하지 않고 사용할 수 있지만 경험에 목적으로 자체 캐시를 설계하도록 하겠습니다.
클러스터 모드는 비용이 발생하기 때문에 개발환경이 아닌 운영환경에 적용하려고 합니다.
클라우드 환경에서 관리할 것이기 때문에 위치는 AWS 클라우드를 선택합니다.
개발 환경이기 때문에 cache.t2.small를 선택하여 구축하겠습니다.
복제본 개수는 한 개의 primary 노드를 복제할 replica 노드를 설정할 수 있습니다.
서브넷은 기존에 생성한 서브넷 그룹을 선택하였습니다. 등록한 서브넷 그룹이 없는 경우 새 서브넷 그룹을 생성하시면 됩니다.
다음 버튼을 클릭해 고급 설정으로 넘어갑니다.
나머지는 선택하지 않았고 보안 그룹은 인바운드에 6379 포트를 설정해 주시면 됩니다.
따로 백업과 로그는 설정하지 않았습니다.
2. ElasticCache 접속
생성 후 몇 분 기다려주시면 캐시가 생성된 것을 확인할 수 있습니다.
생성된 캐시를 클릭해 상세 정보를 확인해 보면 기본 엔드포인트를 확인할 수 있습니다.
터미널을 이용해 해당 엔드포인트에 접속해 보도록 하겠습니다.
로컬에서 redis를 설치하고 redis-cli로 접속을 하려고 했지만 계속해서 실패했습니다.
찾아봤더니 원래 ElastiCache Redis는 보안 제약으로 인해 로컬이나 인터넷에서 직접 액세스 할 수 없도록 되어있었습니다.
VPN을 통해 해당 서브넷에 접근하여 접속하거나 같은 VPC 내에 EC2를 생성해 터널링을 통해 접속할 수 있었습니다.
3. EC2 생성 후 터널링 설정 접속
직장에서는 VPN을 통해 접속이 가능하지만 예제를 위해 EC2를 생성해 접속해 보도록 하겠습니다.
EC2를 생성하는 방법은 다들 아실 거라 생각하여 따로 정리하지 않겠습니다.
인스턴스가 실행되었다면 EC2에 접속하고 redis를 설치합니다.
$ ssh -i ./redis-test.pem ubuntu@3.38.xxx.xxx
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install redis-server
해당 명령어는 ubuntu 기준으로 작성하였습니다. 설치가 완료되었다면 redis에 접속해 보겠습니다.
정상적으로 접속이 되고 redis 명령어가 작동하는 모습을 확인할 수 있습니다.
Spring Boot에 설정하는 방법은 6. Spring Redis 분산락(Distribute Lock)을 활용한 동시성 처리 블로그 글에서 확인하실 수 있습니다!
마치며
간단한 설정을 통해 ElasticCache을 생성하고 접속해 보았습니다.
이것저것 찾아보니 ElasticCache을 사용하는 것이 직접 구축하는 것보다 대략 2배 정도 비용이 발생한다고 하는데..
직접 복제와 고가용성까지 구축하고 관리하기 어려운 상황이라면 ElasticCache을 사용하여 간단하게 관리하는 것도 좋아 보입니다.
복제와 고가용성 모두 작업은 해보았지만 실제로 실무에 적용할 수 있을지는 더 고민해봐야 할 것 같습니다.
저는 직접 구축하고 관리하는 것이 편한 편이지만 실무에서는 어떤 일이 발생할지 모르고 여유도 없기 때문에...
아무튼 처음 생성하고 접속해 본 것에 의미를 두고 블로그 글을 정리해 보았습니다.
차차 실무에 적용해 보며 익숙해지고 효율적으로 사용하는 방법을 더욱 알아보고 정리해 보겠습니다. 이상!