디프만 동아리에서 진행하는 Bibbi 프로젝트에서 백엔드 팀원끼리 각자 도입하고 싶은 기술이 있다면 도입하자라고 의견을 나눴고 저는 다양한 새로운 기술 중 Redis를 도입하기로 결정했습니다.
Redis를 도입하고자 한 이유는 여러가지가 있었지만 가장 큰 이유는 역시나 조회 API 성능을 높이고자 하기 때문이었습니다. 감사하게도 NCP에서 디프만 동아리에 무료 크레딧을 후원하기 때문에 NCP에 서버 환경을 구축하고 있는데 이번 레디스 또한 NCP에서 구축하고자 합니다.
1. Cloud DB for Redis (VPC/Simple) 생성하기
NCP에서는 VPC와 Classic 두가지 환경에서 서비스를 제공합니다. Bibbi 서버는 이미 VPC에 구축되어 있기때문에 저도 무난하게 Redis 또한, VPC로 설정했습니다.
1) Cluster/Simple 모드
VPC 환경 안에서도 Cluster와 Simple 모드로 나뉘는데 큰 차이점은 다음과 같습니다.
Cluster
- Master-Slave 방식
- 최소 3개의 Shard로 구성
- 데이터를 여러 대의 장비에서 처리하여 특정 데이터에 집중되는 트래픽을 서버가 나누어 처리
Simple
- Stand Alone, Standby-Master 방식
누가봐도 Cluster 모드가 좋아보이지만 그만큼 비용이 Simple 모드에 비해 많이 들고 저희는 Redis를 주로 조회 성능 높이는 데 쓸 예정입니다. 이런 점을 고려하면 Stand Alone도 충분하기에 Simple 모드로 구축했습니다.
이 외에도 Cloud DB for Redis에 대해서는 NCP 사용 가이드에서 친절히 잘 설명을 해주고 있어 참고하시면 좋을 거 같습니다!
2) Redis 생성
NCP 콘솔/VPC/Cloud DB for Redis에서 Redis를 생성합니다.
해당 포스트에서는 Cluster 모드가 아닌 Simple 모드로 생성할 것이므로 Redis Simple을 선택하고 필수 정보들을 채워줍니다.
NCP의 Cloud DB 상품은 기본적으로 Private Subnet 안에서만 생성이 가능하므로 저도 사용하고 있는 VPC 안에 Private subnet을 새로 생성하여 설정해주었습니다.
그 외에 Redis Server는 최소 사양을 선택했으며 생성한 Redis Server를 그룹핑하여 그룹에 속한 서버들을 효율적으로 관리하게 돕는 Config Group 또한 새로 생성하여 설정했습니다.
위와 같이 설정 값들을 다 채워주고 생성하면 대시보드에 생성한 Redis 서버가 나타납니다.
3) Redis ACG 설정
ACG에서 Redis 서버가 사용하는 포트의 허용 정책을 적용해야 합니다. 만약 적용을 하지 않으면 같은 서버에서도 Redis 접속이 되지 않습니다.
위와 같이 Inbound 규칙과 Outbound 규칙에 Redis port를 허용하도록 추가해줍니다.
2. Redis Server 접속 테스트
Redis 서버를 잘 생성했다면 이제는 Redis Client를 설치하여 생성한 Redis Server에 정상 접속되는지 테스트합니다.
// 7.2.4 버전 기준 (Stable 버전)
[root@redis-web ~]# wget https://download.redis.io/releases/redis-7.2.4.tar.gz
[root@redis-web ~]# tar xvfz redis-7.2.4.tar.gz
[root@redis-web ~]# cd redis-7.2.4
[root@redis-web redis-7.2.4]# make
Redis 홈페이지에 접속해서 현재 Stable 버전을 체크합니다.
그 다음 어플리케이션 서버에 접속해서 Stable 버전의 Redis를 다운받습니다.
[root@redis-web redis-7.2.4]# cd src
[root@redis-web src]# ./redis-cli -h [DNS명] -p [Redis 접속포트]
다운 받은 후에는 redis-7.2.4/src 디렉터리로 이동하여 위 명령어를 통해 Redis Server에 접속합니다.
Redis의 DNS명은 Redis 대시보드에서 생성한 Redis 서버를 클릭하면 확인할 수 있습니다.
레디스 서버 접속 완료!
'백엔드 개발일지' 카테고리의 다른 글
[Spring] Redis 캐시를 통해 조회 성능 개선하기 (3) | 2024.01.24 |
---|---|
[Spring] 코드 정적 분석을 위한 SonarCloud 도입기 (1) | 2024.01.01 |
[Spring/AWS] Pre-Signed Url을 이용하여 S3로 파일 업로드하기 (feat. NCP) (0) | 2023.12.25 |
[Spring] Redis를 통한 Refresh Token 도입기 (2) (1) | 2023.12.18 |
[Spring] Redis를 통한 Refresh Token 도입기 (1) (1) | 2023.12.18 |