팀원 : PM(1) / Design(1) / Frontend(2) / Backend(3)
기간 : 2024.03 ~ 2025.03
링크 : https://github.com/M-ung/MoodBuddy_Server
서비스 내용 : 사용자가 작성한 일기를 바탕으로 감정 분석하는 웹 서비스
소통 : GitHub, Slack, Notion, Discord
일기 조회 기능을 성능 테스트하려고 한다.
📌 무드버디 v1 시스템 구성
📌 무드버디 v2 시스템 구성
무드버디 v1은 QueryDSL을 활용해 DB에서 일기들을 조회하는 방식으로 구현했다.
무드버디 v2는 QueryDSL로 DB에서 조회하는 것은 똑같지만 몇 가지 추가를 했다.1️⃣ Redis 캐싱을 적용했다.
2️⃣ 페이징 조회를 할 때, 쿼리 수를 단축하고자 Count 조회를 하는 걸 첫 페이지에서 하도록 했다.
3️⃣ ResponseDTO에서 불필요한 응답 데이터는 제거했다.
📌 부하 증가 단계
📌 테스트 요청
📌 테스트 통과 기준
📍 무드버디 v1 테스트 결과
📍 무드버디 v2 테스트 결과
📍 주요 성능 지표 비교
지표 | 1차 테스트 | 2차 테스트 | 변화 |
---|---|---|---|
총 요청 수 (http_reqs ) | 366,040 | 474,188 | +29.5% 증가 |
응답 시간 평균 (http_req_duration avg ) | 238.6ms | 12.33ms | 94.8% 감소 🔥 |
응답 시간 90퍼센트 (p(90) ) | 577.36ms | 23.89ms | 95.9% 감소 🔥 |
응답 시간 95퍼센트 (p(95) ) | 734.42ms | 33.22ms | 95.5% 감소 🔥 |
대기 시간 평균 (http_req_waiting avg ) | 238.45ms | 12.26ms | 94.9% 감소 |
최대 응답 시간 (http_req_duration max ) | 5.27s | 979.22ms | 81.4% 감소 |
🔥 응답 시간 대폭 개선
🔥 서버 처리량 증가
🔥 대기 시간 최적화
[[🔥TroubleShooting - MoodBuddy🔥] 조회 속도를 높이기 위한 캐싱, 과연 정답일까?]
https://velog.io/@_mung/TroubleShooting-MoodBuddy-%EA%B0%9C%EC%9D%B8-%EA%B3%B5%EA%B0%84%EC%97%90%EC%84%9C%EC%9D%98-%EC%A1%B0%ED%9A%8C-%EC%96%B4%EB%96%BB%EA%B2%8C-%ED%95%B4%EC%95%BC-%ED%95%A0%EA%B9%8C
[[🔥TroubleShooting - MoodBuddy🔥] 쿼리 수를 2번 -> 1번, 얼마나 달라진다고?!]
https://velog.io/@_mung/TroubleShooting-MoodBuddy-%EA%B0%9C%EC%9D%B8-%EA%B3%B5%EA%B0%84%EC%97%90%EC%84%9C%EC%9D%98-%EC%A1%B0%ED%9A%8C-%EC%96%B4%EB%96%BB%EA%B2%8C-%ED%95%B4%EC%95%BC-%ED%95%A0%EA%B9%8C-shken3hr