Skip to content

[BE] Redis를 도입하게 된 계기

박진명 edited this page Dec 3, 2024 · 1 revision

Redis 도입 배경

MySQL의 한계

  • 랭킹 조회 혹은 최근 검색 기록 조회 시 매번 ORDER BY 연산이 필요하며 이로 인한 자원 낭비가 발생한다.
  • 동시 접속자 증가에 따른 DB 부하가 증가한다.
  • 최근 검색어의 경우 빈번한 I/O 가 필요하다.

Redis 도입

  • Sorted Set 을 이용해 효율적으로 랭킹 관리
  • 인메모리 데이터 처리로 빠른 응답 속도
  • 사용자 증가에 따른 빈번한 DB 이용에 따른 부하를 줄일 수 있음

MySQL vs Redis 부하테스트

  • 테스트 목적: MySQL과 Redis의 성능 비교 분석
  • 테스트 도구 : Locust
  • 테스트 엔드 포인트 : /api/rankings

User가 15000명이 될 떄까지 지속적으로 /api/rankings 를 호출하는 Locust 스크립트를 이용하여 테스트를 진행해보았다.

MySQL의 경우 중간에 응답 시간이 6000ms가 넘어가는 피크도 발견되었으며 인원이 10000명을 넘어감에 따라 점점 RPS가 급격히 떨어지고 time out에 의해 응답을 받지 못하는 경우가 늘어났다.

이에 반해 Redis의 경우 15000명까지 RPS가 비교적 유지되었고 응답에 실패한 요청이 없고 동시에 Response time 또한 MySQL보다 낮게 측정되었다.

  • MySQL

image

  • Redis

image

참고 자료

[[우아한테크세미나] 191121 우아한레디스 by 강대명님](https://www.youtube.com/watch?v=mPB2CZiAkKM)

📜 개발 일지

⚠️ 트러블 슈팅

❗ 규칙

🗒️ 기록

기획
회의록
데일리스크럼
그룹 멘토링
그룹 회고

😲 개별 멘토링

고동우
김진
서산
이시은
박진명
Clone this wiki locally