| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
- Route53
- 체크인미팅
- Redis
- spring ai
- 오블완
- 42서울
- EC2
- 캡스톤디자인프로젝트
- 프리티어
- NAT gateway
- 전국대학생게임개발동아리연합회
- 스프링부트
- UNIDEV
- 프롬프트엔지니어링
- 티스토리챌린지
- UNICON
- openAI API
- bastion host
- 라피신
- 생활코딩
- 도커
- Spring boot
- 인프라
- 개발공부
- CICD
- 게임개발동아리
- 백엔드개발자
- 프로그래밍
- UNICON2023
- AWS
- Today
- Total
Hyun's Wonderwall
[BookDuck] 프로젝트 리팩토링 - (2) Grafana k6 세팅, Redis 캐시 사용 구현 및 Key Prefix 설계 리팩토링 본문
[BookDuck] 프로젝트 리팩토링 - (2) Grafana k6 세팅, Redis 캐시 사용 구현 및 Key Prefix 설계 리팩토링
Hyun_! 2025. 7. 9. 18:09이전 글: https://hereishyun.tistory.com/206
[BookDuck] 프로젝트 리팩토링 - (1) 부하 테스트 도구 선택(JMeter, k6), 외부 API Rate Limit 문제 해결 방
2024년 9~12월 동안 EFUB 4기에서 학기 중 프로젝트로 BookDuck 프로젝트를 진행했었다. 나는 백엔드이고, 백엔드는 3명이 맡아 개발했다. 프로젝트 목표가 실사용자가 존재하는 서비스였는데, 목표가
hereishyun.tistory.com
7/9 회의에서 한 일
- 부하 테스트 도구 Grafana k6 세팅
- Redis Cache 사용 위한 세팅 및 개발
부하 테스트 도구 Grafana k6 세팅
세팅 과정은 아래 글에 정리했다! https://hereishyun.tistory.com/207
부하 테스트 도구 k6 설치 & Grafana k6으로 시각화
이전 글: https://hereishyun.tistory.com/206 [BookDuck] 프로젝트 리팩토링 - (1) 부하 테스트 도구 선택(JMeter, k6), 외부 API Rate Limit 문제 해결 방2024년 9~12월 동안 EFUB 4기에서 학기 중 프로젝트로 BookDuck 프로
hereishyun.tistory.com
Redis Cache 사용 위한 세팅 및 개발
1. 목표 수립
- 문제: Google Books API Rate Limit으로 인한 요청 실패 대응방안 수립
- 목표: Google Books API 결과 캐싱 추가 + Lazy Update 적용
- 기존에 Redis를 어떻게 사용하고 있었는지 분석 후 새 기능 추가 필요
2. 기존의 Redis 사용 방식 (리프레시토큰 저장/조회/삭제)
- RedisConfig: RedisTemplate<String, Object>를 Bean으로 등록, JSON 직렬화 방식으로 Redis를 사용
- RedisService: setValuesWithTimeout, getValues, deleteValues 등 기본적인 CRUD를 제공
- 리프레시 토큰 저장: JwtUtil.generateRefreshToken()에서 리프레시 토큰 생성, redisService.setValuesWithTimeout(email, refreshToken, 7일)로 Redis에 저장
- 리프레시 토큰 조회: redisService.getValues(email)로 Redis에서 리프레시 토큰을 조회
- 리프레시 토큰 삭제: 로그아웃, 회원탈퇴, 토큰 재발급 시 redisService.deleteValues(email)로 Redis에서 해당 키 삭제
3. 개선 방향 수립
- RedisService의 메서드를 재활용, Google Books API 결과 캐싱 추가
- GoogleBooksApiService에 캐시 조회 → 없으면 API 호출 및 캐시 저장
- Redis를 다용도로 사용 -> 캐시 key의 prefix 포맷 설계: [서비스명 또는 도메인]:[기능명]:[식별자] 구조
- 리프레시 토큰: auth:refresh_token:{이메일}
- Google Books API 검색 결과: googlebooks:search_cache:{키워드}
- 검색의 Google Books API 응답 결과를 Redis에 TTL=12시간으로 캐싱. (캐시 만료 전에는 API 호출 x, Redis에서 바로 반환)
- Google Books API 호출 실패 시 커스텀 에러 메시지 제공 (fallback으로 이전 검색 결과나 캐싱된 데이터 반환하지 x)
4. PR
https://github.com/MoneyMakersClub/mmc-backend/pull/236
[Feat] Google Books API 호출에 대한 Redis 캐싱 추가, Key Prefix 전략 추가 by seohyun-lee · Pull Request #236 · Mo
구현 기능 feat: Google Books API 검색 결과 캐시 활용 개발 글 정리: https://hereishyun.tistory.com/208 fix: Java Compiler args에 -parameters 추가 Spring 3.2 arg0, arg1 에러 해결 (컴파일러가 자동으로 바이트코드를 파싱
github.com
다음 목표는 이전 계획대로 튜플이 1개만 있어야 하는 경우 점검, 필요한 부분에 락 적용하기!
'활동 > 프로젝트' 카테고리의 다른 글
| [U-KATHON 해커톤] RealMuse 프로젝트 백엔드 개발 회고 & 이번에 배운 것들 (4) | 2025.08.07 |
|---|---|
| [BookDuck] 프로젝트 리팩토링 - (1) 부하 테스트 도구 선택(JMeter, k6), 외부 API Rate Limit 문제 해결 방법 고민, 동시성과 멱등성 보장에 대한 고민 (3) | 2025.07.09 |
| [졸업프로젝트] 백엔드 개발 회고 - ERD, Spring AI 라이브러리로 OpenAI 사용, 똑똑소비봇 기능을 위한 GPT 프롬프트 엔지니어링 (1) | 2025.05.19 |
| [Mooney] 졸업프로젝트 스타트 - 백엔드 ERD 설계 (4) | 2024.11.26 |
| [EFUB] Songpin 7월 1주차 개발기록 (0) | 2024.07.01 |