[SoundLink] YouTube API 호출 최적화를 위한 캐싱 구조 설계

강수영·2025년 3월 22일
0
post-thumbnail

🚨 문제 상황

노래를 재생할 때마다 YouTube API 검색 요청(100토큰)이 발생해 101개의 토큰이 소모되기 때문에, 로컬 테스트만으로도 하루 토큰 한도(10,000개)를 모두 소진했습니다.

이 구조가 유지될 경우, 실제 사용자 환경에서도 검색 몇 번만으로 동일한 불편을 겪을 가능성이 높습니다.

📌 현재 구조

  • 글 작성 시: Spotify API를 통해 노래 제목, 가수, Spotify ID를 받아와 서버에 저장
  • 노래 재생 시: 키워드(노래 제목과 가수)로 YouTube API에서 videoId 검색(100토큰) → 노래 재생(1토큰)

❗ 문제의 원인

YouTube API의 토큰 정책은 다음과 같습니다:

  • 검색 요청 1회당 100토큰
  • 영상 로드 1회당 1토큰
  • 하루 한도: 10,000토큰

즉, 현재 구조에서는 음악을 재생할 때마다 검색 요청이 반복되어 100토큰이 소비되며, 이로 인해 API 사용량이 급격히 증가하는 문제가 발생합니다.

🛠️ 문제 해결

YouTube API 토큰 과소비 문제를 해결하기 위해 YouTube API 결과을 캐싱하는 구조로 변경하였습니다.

📌 개선된 구조

  • 글 작성 시: Spotify API를 통해 노래 제목, 가수, Spotify ID를 받아오고, 백엔드에 Spotify ID에 대한 videoID 확인 요청
    videoID가 존재하지 않을 경우, 프론트에서 직접 YouTube API로 videoID를 검색한 뒤 저장
  • 노래 재생 시: 저장된 videoID를 활용해 바로 YouTube 영상 재생
    → 불필요한 검색 요청 없이, 최소한의 토큰으로 노래 재생 가능

✅ 결과

기존에는 노래 재생 시마다 YouTube 검색 요청이 발생해 100토큰이 소모되었지만, 개선 이후에는 videoID를 사전 저장하여 1토큰만으로 재생 가능한 구조로 최적화되었습니다.

그 결과, Youtube API의 토큰 소진 문제를 해결하고, API 호출 횟수와 비용을 효과적으로 줄일 수 있었습니다.

출처 :

profile
프론트엔드 개발자

0개의 댓글