DB

SpringBoot + redis 프로젝트 생성 후 JMeter 성능 테스트 해보기

joje* 2024. 11. 20. 23:42

redis란?

redis는 메모리 기반의 데이터베이스를 의미한다.

기존 RDBMS의 경우 디스크 기반의 데이터베이스로 Disk I/O를 이용해 데이터에 대한 요청을 처리한다.

RDBMS에서도 캐싱처리를 이용해서 메모리에 데이터를 올려 디스크에 직접 접근하지 않아도 메모리 기반 데이터를 이용할 수 있지만, 메모리 기반의 데이터베이스인 redis에 비해 메모리 용량이 제한적이고, Disk I/O에 의한 병목현상등이 발생할 수 있다는 점에서 한계를 지닌다.

 

기존에 SpringBoot 프로젝트에서 redis를 이용해 본 경험이 없어, 프로젝트를 생성 후 redis를 적용하고 기본적인 CRUD 작업을 하는 코드를 작성하고 이를 바탕으로 테스트 코드를 작성해 결과를 확인해보았다. 또한 JMeter를 이용해 부하테스트를 시행해보았다.

 

계획은 아래와 같이 세웠다.

1. Redis 설치
2. SpringBoot 프로젝트 생성
3. Redis 접속 정보 설정
4. 데이터 CRUD 관련된 코드 및 테스트 코드 작성
5. JMeter 설치
6. JMeter를 이용해 테스트 계획 실행하기
7. JMeter 결과 확인

 

1. redis 설치

- 아래 사이트에 접속해 설치파일을 받아준다.

(.msi 확장자로 된 파일을 받으면 된다.)

https://github.com/microsoftarchive/redis/releases

 

Releases · microsoftarchive/redis

Redis is an in-memory database that persists on disk. The data model is key-value, but many different kind of values are supported: Strings, Lists, Sets, Sorted Sets, Hashes - microsoftarchive/redis

github.com

 

- 설치파일을 실행시키고 redis에서 이용할 포트 정보 메모리 용량정보를 설정 후 install 해준다.

 

- 정상적으로 설치가 되었다면 cmd 창에서 ' netstat -ano | find "redis 설치 시 설정한 포트번호" ' 명령어를 이용해 redis가 정상적으로 실행되는지 확인해준다.

 

2. SpringBoot 프로젝트 생성

- openJDK, springBoot, gradle 기반에 라이브러리는 아래와 같이 추가해 프로젝트를 생성하였다.

'org.springframework.boot:spring-boot-starter-data-redis'
'org.springframework.boot:spring-boot-starter-web'
'org.projectlombok:lombok'

 

3. Redis 접속 정보 설정

- redis를 springBoot 프로젝트에서 사용하기 위해서는 yml  redis 연결정보를 작성해주고 이를 springBoot 프로젝트에서 이용하기 위해  redisConfig 클래스 파일을 생성하고 작성해줘야 한다.아래와 같이 작성을 해준다.

application.yml

 

redisConfig 클래스

 

4. 데이터 CRUD 관련된 코드 및 테스트 코드 작성

데이터의 CRUD 테스트를 위해 서비스 클래스를 만들어 내부에 관련된 코드를 작성해준다.

 

- 테스트 클래스를 만들고 관련된 테스트 코드들을 작성해준다.

 

5. jmeter 설치

- jmeter 사용을 위해 jmeter를 아래 사이트에서 설치파일을 받아준 후 원하는 디렉토리에 설치해준다.

좌측 Download Releases 클릭 > Binary > zip 파일 다운로드

https://jmeter.apache.org/ 

 

Apache JMeter - Apache JMeter™

Apache JMeter™ The Apache JMeter™ application is open source software, a 100% pure Java application designed to load test functional behavior and measure performance. It was originally designed for testing Web Applications but has since expanded to oth

jmeter.apache.org

 

6. jmeter를 이용해 테스트 계획 실행하기

- jmeter 폴더 > bin > jmeter.bat 파일을 클릭해 jmeter를 실행해준다.

- springBoot 프로젝트에서 임의의 RestController 클래스를 만들고 jmeter 요청을 받아 읽기/쓰기 작업을 할 api를 생성해준다.

 

- jmeter에서 테스트 실행계획을 세워준다.

(jmeter의 기본적인 사용법은 링크를 참고하면 된다.)

https://dev-uu.tistory.com/88

 

Apache JMeter 기본 사용법

Apache JMeter란?서버가 제공하는 성능 및 부하를 측정할 수 있는 테스트 도구로써 오픈소스 Java 애플리케이션이다.(Apache JMeter를 사용하기 위해서는 사전에 java가 설치되어 있어야 한다.) 1. 설치법-

dev-uu.tistory.com

** 위 글에서 설명한 내용 외에 요청에 따른 number를 붙이고 싶어 jmeter의 Counter 기능을 추가해 쓰레드 별로 요청 number가 parameter로 함께 넘어가도록 하였다. Counter 기능의 경우 아래와 같이 작성하면 된다.

 

7. jmeter 결과 확인

- 데이터 쓰기 요청에 대한 결과

: 1000개의 쓰레드가 5번의 반복요청을 하였을 때, 0~4ms 이내에서 요청에 대한 응답이 모두 처리되었다. 요청별로 응답시간의 편차가 크지 않다는 점을 알 수 있다.

 

- 데이터 읽기 요청에 관한 결과

:  1000개의 쓰레드가 5번의 반복요청을 하였을 때, 0~100ms  이내에서 요청에 대한 응답이 모두 처리되었다. 요청별로 응답시간의 편차가 크지 않지만 쓰기에 대한 요청보다는 응답 시간의 편차가 증가했음을 확인할 수 있었다. 

 

 

- SummaryReport의 각 항목은 다음과 같은 의미를 지닌다.

Summary Report
- Label : Sampler 명
- Samples : 샘플 실행 수 (Number of Threads X Ramp-up period)
- Average : 평균 걸린 시간 (ms)
- Min : 최소
- Max : 최대
- Std. Dev. : 표준편차
- Error % : 에러율
- Throughput : 초당 처리량
- Received KB/sec : 초당 받은 데이터량 
- Sent KB/sec : 초당 보낸 데이터량
- Avg. Bytes : 서버로부터 받은 데이터 평균

 

 

- 참고한 사이트

https://green-bin.tistory.com/69

 

Spring - Redis를 사용해보자

배경 진행 중인 프로젝트의 Security 작업을 담당하면서 JWT Refresh Token을 Redis에 저장하여 관리하기로 했다. 왜 Redis? Redis는 메모리 기반의 Key-Value 저장소이다. 메모리에 데이터를 저장하기 때문에

green-bin.tistory.com

 

'DB' 카테고리의 다른 글

PostgreSQL DB에서 테이블 Vacuum 처리  (8) 2024.11.11
[DB]DDL,DML,DCL,TCL  (0) 2022.10.18
[DB]데이터베이스 용어 시스템 카탈로그란??  (0) 2022.09.01