강다원
Redis와 Spring Boot를 활용한 애플리케이션 성능 최적화
https://www.canva.com/design/DAGTpXVkg1w/anu7yG68V_cVkKl9PI5vcA/edit
Overview
Redis 기본 개념
03
Redis 주요 사용 사례
05
Redis 캐싱 전략
06
Spring Boot + Redis로 구현하기
1 1
AWS EC2에서 Redis 활용하기
15
성능 테스트 및 부하 테스트
18
결론
22
Redis란?
레디스(Redis)는 Remote Dictionary Server의 약자로서, “키-값” 구조의 비정형 데이터를 저장하고 관리하기 위한 오픈 소스 기반의 비관계형 데이터베이스 관리 시스템(DBMS)이다.
쉽게 말해서 데이터 처리 속도가 빠른 NoSQL 데이터베이스이다.
Redis 기본 개념
Redis 특징 및 장점
Redis 기본 개념
1. 성능 : Redis는 데이터를 메모리에 저장해 평균 1ms의 빠른 읽기/쓰기 속도를 제공, 디스크 기반 DB보다 성능이 뛰어나다.
2. 유연한 데이터 구조 : 다양한 데이터 타입(String, List, Set 등)을 지원해 애플리케이션 요구에 맞는 유연한 데이터 처리가 가능하다.
3. 개발 용이성 : 복잡한 쿼리문 없이 간단한 명령으로 데이터 저장/조회가 가능하며, 다양한 언어(Java, Python 등)를 지원한다.
4. 영속성 : 데이터는 디스크에 저장 가능해 서버 문제 발생 시에도 복구할 수 있다.
Redis 주요 사용 사례
Redis 캐싱 전략
캐시(Cache)는 자주 사용하는 데이터나 값을 미리 복사해 놓는 임시 저장소이다.
캐시(Cache)? 캐싱(Caching)?
캐싱(Caching)이란 캐시(Cache, 임시 데이터 저장소)에 접근해서 데이터를 빠르게 가져오는 방식이다.
Redis 캐싱 전략
Cache Aside 전략
Cache Hit : 캐시에 데이터가 있을 경우
Cache miss : 캐시에 데이터가 없을 경우
캐시(Cache)에서 데이터를 확인하고, 없다면 DB를 통해 조회해오는 방식
Redis 캐싱 전략
Write Around 전략
데이터를 어떻게 사용할지(저장, 수정, 삭제)에 대한 전략이다.
Redis 캐싱 전략
Cache Aside, Write Around 전략의 한계점
Cache Aside 전략 (Cache Hit)
Write Around 전략
캐시된 데이터와 DB 데이터가 일치하지 않을 수 있다.
Redis 캐싱 전략
TTL (Time to Live) : 만료 시간 설정 기능
Spring Boot + Redis로 구현하기
1. Redis 의존성 추가
Spring Boot + Redis로 구현하기
2. application.yml
Redis 설정을 추가하고, 캐시 관련 로그를 조회할 수 있도록 설정
Spring Boot + Redis로 구현하기
3. Redis 연결 및 캐싱 설정 (RedisConfig, RedisCacheConfig)
Redis 연결 및 캐싱 설정을 위한 클래스를 작성
Spring Boot + Redis로 구현하기
4. BoardService에 캐싱 로직 추가
@Cacheable 어노테이션을 사용하여 캐싱을 적용
AWS EC2에서 Redis 활용하기
아키텍처
AWS EC2에서 Redis 활용하기
EC2, RDS, Spring Boot, Redis 셋팅 요약
EC2 - t3.small
RDS - t3.micro
성능 테스트 및 부하 테스트
redis 미적용
1000000건 중
최신 등록 순 10개 조회
(대략) 평균 730ms
성능 테스트 및 부하 테스트
redis 적용
1000000건 중
최신 등록 순 10개 조회
(대략) 평균 200ms
성능 테스트 및 부하 테스트
redis 미적용된 Board 조회 API의 Througput
성능 테스트 및 부하 테스트
redis 적용된 Board 조회 API의 Througput
결론
Redis보다는 ElastiCache가 편하다.
감사합니다.