[AWS] 프리티어 ElastiCache 생성부터 적용까지

Dev_ch·2023년 8월 31일
1
post-thumbnail

관련 포스팅 : EC2 멈춤현상 해결하기

예전 포스팅에서 EC2가 메모리 부족으로 인해 터져버리는, 그런 상황을 해결했었다. 이번 포스팅은 메모리 부족으로 멈추는 그런 상황을 해결하는 것이 아닌 자신이 Redis 같은 인메모리 DB를 사용할때 EC2 프리티어를 사용중이라면 당연하게도 메모리가 많이 부족할 것 이다.

우리는 AWS를 최대한 활용해서 인메모리 DB도 ElasticCache를 사용해 따로 관리해보도록 하자! 마치 LIKE RDB....

🔎 ElasticCache가 뭔데?

Amazon ElastiCache는 Amazon Web Services (AWS)의 관리형 인 메모리 캐싱 서비스이다.

해당 서비스를 이용해 실제 서버의 메모리를 사용하지 않고도 애플리케이션의 데이터 액세스 성능을 향상시키기 위해 인 메모리 캐시를 설정하고 관리할 수 있다.

ElastiCahce는 두가지 캐싱 엔진을 지원하는데 아래와 같다.

  1. Redis
  2. Memcached

우리는 Redis를 사용해 인메모리DB를 구축해줄 것 이다.

ElastiCache 생성하기

AWS의 ElastiCache 항목을 선택하여 클러스터 생성 -> Redis로 선택해주자.

클러스터를 생성하려하면 클러스터 설정으로 진입하게 되는데 설정 방법은 프리티어 기준으로 작성한다. 일단 클러스트 모드는 비활성화 시켜주자. (동적으로 크기가 조정되면서 요금이 부과될 수 있음)

클러스터 정보는 자신이 사용하는 프로젝트에 맞춰 작성해준후 AWS 클라우드, 다중 AZ 및 자동 장애 조치를 해제해준다.

⚠️ 중요

프리티어라면 노드 유형은 cache.t2.micro 버전을 사용해야하며 복제본 개수는 0개로 지정해주어야 한다. 해당 설정을 따르지 않으면 99% 확률로 과금될 위험성이 있다.

그 외의 항목들은 기본 설정대로 남기고 다음페이지로 넘어가자.

다음 페이지에서 보안 관련 설정을 진행하게 되는데 해당 보안 그룹은 따로 생성하여 인바운드 규칙에 Redis가 사용하는 6379 포트를 따로 설정해주고 추가해주도록 하자.

이러면 이렇게 Redis 클러스터가 하나 생성되게 되는데 Creating 단계에서 시간이 꽤 오래 걸린다.

생성이 완료되면 위와 같은 세부 정보를 볼 수 있는데 여기서 중요한건 엔드포인트이다.
오른쪽 하단의 기본 엔드포인트가 있는데 해당 엔드포인트를 복사해서

spring:
  data:
    redis:
      host: asdasd.kycfsu.ng.0001.apn2.cache.amazonaws.com
      port: 6379

위와같이 yml 파일에 정의해주면 된다. 6379는 port로 따로 작성해주자.

이제 EC2에 redis를 설치해줄 것 이다. 아래 순서대로 커맨드를 따라오자.

# GNU 컴파일러 설치
sudo yum install gcc
# redis-cli 설치
wget http://download.redis.io/redis-stable.tar.gz
tar xvzf redis-stable.tar.gz
cd redis-stable
make distclean      # ubuntu에서만 입력!!!!
make

설치 완료 후 커맨드로 redis에 접근하는 방법은

# 생성한 클로스터 접속
src/redis-cli -c -h asdasd.kycfsu.ng.0001.apn2.cache.amazonaws.com -p 6379

# 테스트
set a "hello"
# -- 응답값
OK

OK라는 메세지가 출력되면 정상적으로 클러스터에 접속한 것 이다.

사실 이렇게 Redis를 사용하는 것이 EC2 내부에 Redis를 설치하는 것 보다 훨씬 간단하다. 거기다가 서버의 메모리를 잡아먹지 않으니 성능적으로도 훨씬 개선된 방법이다. 만약 프로젝트를 하다가 Redis를 사용해야 한다면 ElstiCache를 사용하는 것을 적극 권장한다.

profile
내가 몰입하는 과정을 담은 곳

0개의 댓글