본문으로 바로가기

Django AWS Elasticache 연동하는 방법

category Coding/Django 2019. 3. 13. 15:34
반응형

현재 백엔드 서버로 파이썬 장고를 사용하고 있다. 대부분의 기능구현이 완료되었고 마무리 단계에서 캐싱을 도입하려고 알아보던도중 AWS의 Elasticache를 이용하기로 결정했고 Django <-> Elasticache를 연동하는 과정에 대해 서술한다.

시작하기전에 알아둘 점 -> 작업은 쓰기/읽기로 나뉠텐데, 각 작업마다 하는 행동은 다음과 같다.


읽기 : 캐시서버에 존재하는지 탐색 -> 존재한다면 캐시서버에서 자료 return -> 존재하지 않는다면 데이터베이스에서 가져와서 사용자에게 뿌려주고 캐시서버에 set

쓰기 : 데이터베이스에 저장 -> 캐시서버에 set


먼저 AWS로 들어가서 Elasticache로 들어간다.


아래쪽에 있는 지금 시작 버튼을 누른다.


캐시 서버는 Redis/Memcached 두가지 엔진을 지원한다. 본 포스팅에서는 Redis를 선택했다.


이름, 호환성, 포트, 파라미터 그룹, 유형등을 원하는대로 선택한다. 또한 아래쪽에서 서브넷 그룹과 보안그룹등도 설정해준다음에 생성을 누르면 캐시 서버가 생성된다. (약간의 시간이 소요된다) EC2, ECS등 어떠한 서비스를 사용할지는 모르겠지만 중요한점은, 우리가 캐시 엔진을 생성할 때 선택했던 보안그룹의 Inbound에 엔진의 포트인 6379를 설정해줘야 한다는 점이다.


장고 공식 홈페이지에 들어가보면 캐시관련 설정에 대해 아래와 같은 사진을 볼 수 있다.


위와 같은 형태로 작성해주면 된다. settings.py를 연다. 그리고 아래의 내용을 채워넣는다.


# Elasticache
CACHES = {
'default': {
'BACKEND': 'redis_cache.RedisCache',
'LOCATION': '',
}
}

BACKEND 부분에 redis_cache.RedisCache를 넣어줬고, LOCATION에 위에서 생성했던 Elasticache의 Endpoint를 넣어준다.

이제 아래와 같은 명령어를 통해 set/get을 할 수 있다.


from django.core.cache import cache

cache.get(key이름)
cache.set('key', 'value')


반응형