GET ProblemDetail

문제 상세 정보 가져오기 API 최적화

📗 문제 상세 정보 가져오기 API

GET /problems/{problem_id}

  • 캐싱 적용: 자주 조회되는 상세 정보를 Redis에 캐싱하여, 캐싱된 데이터를 빠르게 가져올 수 있습니다.

가설:

  • Redis 캐시 적용 시 API의 응답 속도가 빨라질 것 입니다.

  • 자주 조회되는 문제 상세 정보를 Redis에 key로 저장하고 조회하면, DB 접근 빈도가 줄어들 것입니다.

실험/과정:

  1. 캐싱 전략 수립:

    • 문제 상세 정보를 Redis에 저장

    • 요청 시 캐시에 데이터가 있으면 바로 반환, 없으면 DB 조회 후 캐시에 저장

  2. 성능 측정

    • 캐싱 적용 전/후로 API 응답 시간 측정

    • 동일한 문제를 반복 요청하여 응답 시간 측정

    • 응답 시간 측정 후 개선율 확인

  3. 테스트 환경

    • 로컬 개발 환경에서 레디스 캐시와 연동

결과
  • 캐싱 적용 결과, 문제 상세 정보 조회 API의 응답 속도가 50% 이상 개선되었습니다.

  • 캐시 히트가 100%라면 자주 조회되는 문제에 대해서는 DB 접근 빈도가 줄어 서버 부하가 감소함을 예상할 수 있습니다.

평가:

🟩 장점:

  • API 응답 속도 개선: 실험 결과, API 응답 속도가 50% 이상 향상되었습니다.

  • DB 부하 감소: 캐시 히트율이 100%라면, 자주 조회되는 문제에 대한 데이터베이스 접근 빈도가 크게 줄어듭니다.

  • 서버 자원 효율성 증대: 불필요한 DB I/O를 줄이고 캐시 서버(Redis)를 활용함으로써, 시스템의 전반적인 자원 활용 효율성을 높일 수 있습니다.

🟥 단점:

  • 캐시 무효화 및 일관성 관리 필요: 데이터가 업데이트될 경우 캐시를 최신 상태로 유지하기 위한 캐시 무효화(Cache Invalidation) 전략이 필요합니다. 이를 잘못 관리하면 stale data(오래된 데이터)를 사용자에게 보여줄 위험이 있습니다.

  • 캐시 서버 관리 오버헤드: Redis와 같은 별도의 캐시 서버를 운영해야 하므로, 배포, 모니터링, 유지보수 등 추가적인 관리 오버헤드가 발생합니다.

결론:

  • 문제 상세 정보 가져오기 API에 대한 캐싱 적용은 매우 효과적이며, 전반적으로 강력히 권장되는 개선 사항입니다.

  • 특히, 문제라는 서비스 특성상 데이터가 거의 변경될 가능성이 낮아 캐시 효율을 극대화할 수 있다는 점은 캐싱 도입의 핵심 근거로 내세울 수 있습니다.

Last updated