1. EC2에 Redis 설치
생성한 EC2에 접속하기 위해 연결을 클릭한다.
연결을 누르면 EC2 인스턴스에 원격 접속을 하게 된다.
EC2 인스턴스에 접속이 완료되었다.
Redis 설치
# apt update 명령어
sudo apt update
# Redis 설치 명령어
sudo apt install redis
Redis 설치 및 통신 확인
2. EC2에 JDK 설치
JDK 설치
JDK 설치 여부 확인
3. Spring Boot 프로젝트에 배포 환경 설정 추가
로컬 환경과 분리하여 배포 환경의 설정을 추가해준다.
데이터베이스 설정 정보는 일전에 생성한 RDS의 정보로 작성한다.
# local 환경
spring:
profiles:
default: local
datasource:
url: jdbc:mysql://localhost:3306/mydb
username: root
password: password
driver-class-name: com.mysql.cj.jdbc.Driver
jpa:
hibernate:
ddl-auto: update
show-sql: true
data:
redis:
host: localhost
port: 6379
logging:
level:
org.springframework.cache: trace
---
# prod 환경
spring:
config:
activate:
on-profile: prod
datasource:
url: jdbc:mysql://instagram-db.cfqanhnkrusz.ap-northeast-2.rds.amazonaws.com:3306/mydb
username: admin
password: password
참고
RDS 주소는 생성한 데이터베이스에서 확인할 수 있다.
연결 및 보안 부분에 있는 엔트포인트가 생성한 RDS의 주소다.
4. Github Repository에 프로젝트 올리기
EC2 인스턴스로 Spring Boot 프로젝트를 옮기기 위해서 사용하는 방법이다.
Repository 생성 과정은 여기서는 생략하겠다.
참고
편의상 지금은 application.yml 정보를 .gitignore 처리하지 않았지만, 실제로는 보안을 위해 .gitignore 처리해야 한다.
5. EC2에서 프로젝트 Clone
Github에서 주소를 복사한 후 EC2 인스턴스에서 Clone을 진행한다.
# Github Clone 명령어
git clone https://github.com/jn4624/redis-in-spring.git
# Clone 프로젝트 확인 명령어
ls
참고
Clone 과정에서 Github 계정과 발급 받은 Token 정보가 있어야 하니 미리 준비해두면 좋다.
6. Spring Boot 서버 실행
Clone한 프로젝트 디렉토리로 이동하여 프로젝트를 빌드하고 서버를 실행하자!
# 테스트 과정 없이 프로젝트 빌드 명령어
./gradlew clean build -x test
# 빌드 디렉토리로 이동 명령어
cd build/libs
# 배포 환경 profiles 지정하여 서버 실행 명령어
java -jar -Dspring.profiles.active=prod redis-in-spring-0.0.1-SNAPSHOT.jar
엔티티가 RDS에 정상적으로 반영되었는지 확인해보자.
잘 반영된 것을 확인할 수 있었다!
7. 더미 데이터 추가
-- 높은 재귀(반복) 횟수를 허용하도록 설정
-- (아래에서 생성할 더미 데이터의 개수와 맞춰서 작성하면 된다.)
SET SESSION cte_max_recursion_depth = 1000000;
-- boards 테이블에 더미 데이터 삽입
INSERT INTO boards (title, content, created_at)
WITH RECURSIVE cte (n) AS
(
SELECT 1
UNION ALL
SELECT n + 1 FROM cte WHERE n < 1000000 -- 생성하고 싶은 더미 데이터의 개수
)
SELECT
CONCAT('Title', LPAD(n, 7, '0')) AS title, -- 'Title' 다음에 7자리 숫자로 구성된 제목 생성
CONCAT('Content', LPAD(n, 7, '0')) AS content, -- 'Content' 다음에 7자리 숫자로 구성된 내용 생성
TIMESTAMP(DATE_SUB(NOW(), INTERVAL FLOOR(RAND() * 3650 + 1) DAY) + INTERVAL FLOOR(RAND() * 86400) SECOND) AS created_at -- 최근 10년 내의 임의의 날짜와 시간 생성
FROM cte;
참고
위 SQL문은 MySQL 8.0 이상부터 사용 가능하다.
8. Redis 적용 전,후 성능을 또 비교해보자
데이터베이스 성능 수치
Redis 적용 전, 조회 성능의 평균적인 수치는 500ms 정도로 확인되었다.
Redis 성능 수치
Redis 적용 후, 조회 성능의 평균적인 수치는 30ms 정도로 확인되었다.
따라서, 배포 환경에서도 데이터베이스보다 Redis가 16배 정도 성능이 뛰어난 것을 확인할 수 있었다!!!! 대박!
Reference.
'Redis' 카테고리의 다른 글
[Redis] Docker Compose로 Redis + Spring Boot 띄우기 (로컬) (0) | 2024.10.26 |
---|---|
[Redis] Redis 적용 전,후 부하 테스트도 진행해볼까? (2) | 2024.10.25 |
[Redis] AWS EC2에서 Redis를 활용해보자! (1) (0) | 2024.10.25 |
[Redis] 로컬에서 Spring Boot + Redis 사용해보자! (2) (0) | 2024.10.25 |
[Redis] 로컬에서 Spring Boot + Redis 사용해보자! (1) (0) | 2024.10.25 |