본문 바로가기
개발로그/Python

Preload + On-demand + Fallback 구조 (캐싱전략에 관하여, 용어설명) 메모

by 그리너리디밸로퍼 2025. 3. 12.

Preload + On-demand + Fallback 구조란?

 

이 세 가지는 캐시(다운로드) 전략을 단계적으로 설명하는 개념. 각각 하나하나씩만 사용해도 괜찮다.  필요시 중복으로 도입해서 조립하시라. 

 

도입배경: 프로젝트마다 다르겠지만, mp3를 다운로드 받아 실행하는 프로그램을 만들고 있는데, mp3파일을 구글드라이브에서 다운로드 받는것이 매번 대기시간처럼 불편하게 느껴짐. 단, 캐싱구조 없이 즉지 다운로드 방식으로 먼저 전체 구조를 검토한 뒤에 캐싱전략을 도입할 단계가 되어서 고민하게 됨. 

 본인은 전체 구조를 완성 한 뒤에 세부구조나 확장을 하는 스타일이라서 그렇게 된 듯. 

 

캐싱구조는 익숙하지가 않아서 보통 나는 위 세가지중 단일 전략만을 주로 사용해왔었는데, 이유는 내가 프로그램을 실행하고 관리하는 주체라서 얼마든지 라이브중에 발생하는 예외들을 처리할 수 있었으므로 초기 개발시간을 단축하려는 목적을 우선시 할 수 있었다. 

 하지만 현재는 외부에 내 프로그램을 배포하고 관리하기가 어려운 물리적 위치상에 놓이니, 예외상황에 좀 더 신경을 쓰게 되었다. 

 TMI는 여기까지 하고. 용어부터 생소하니 정리해보았다. 


1. 용어 정리

1️⃣ Preload (미리 받아두기, 선로드)

  • 프로그램 시작 시 모든 다운로드 대상(ex: mp3) 파일을 미리 백그라운드에서 다운로드 시작하는 전략입니다.
  • 로그램이 시작되기 전이나 진행 중에 미리 준비해두는 것.
  • 장점: 이미 다운로드된 파일 → 프로그램 중간에 다운로드 하는 것 보다 대기시간 없이 빠르게 중요한 작업 가능
  • 비유: ✈️ "비행 전에 기내식 싣기"

예: 프로그램 시작 후 1~2분 동안 필요한 파일들을 계속 다운로드하는 구조


2️⃣ On-demand (요청 시 즉시 다운로드)

  • 재생하려는 '순'간' 해당 파일, 없다면 그때 다운로드 시도하는 전략입니다.
  • 장점: 방송은 안 멈춤. 당장 필요한 파일만 받아도 작동
  • 비유: ☕ "손님이 커피 주문하면 그때서야 내리는 것"

예: 재생 순번 도달 → mp3 캐시에 없음 → 바로 다운로드 → 재생


3️⃣ Fallback (대체 처리, 예비방식)

  • Preload도 안 됐고, On-demand 다운로드도 실패했다면 → 다른 방식으로 처리하는 전략입니다.
  • 예: mp3 재생 실패 시 → TTS만 재생하거나 → 건너뛰고 다음 buffer 처리
  • 비유: 📻 "라디오 음악파일이 없으면 DJ가 직접 멘트로 넘어가는 것"

✅ 세 가지는 서로 보완관계

 
Preload → 성공시 빠르고 안정 ↓ 실패 or 진행 중 → On-demand → 실패시 → Fallback

전략언제 쓰이는가결과

Preload 시작 시 전체 다운로드 캐시 확보 ↑
On-demand 캐시에 없음 즉시 다운로드
Fallback 다운로드도 실패 대체 콘텐츠 처리

 

 


2. 추가로 고려한 사항들 

 

 

  • fail_set 도입: 다운로드 실패한 파일을 추적하여 반복적인 다운로드 시도를 방지함으로써 시스템 부하를 줄이고, 재생 타이밍 충돌을 예방하는 로직
  • 즉시 다운로드 시도 수 제한: 각 파일에 대한 다운로드 시도 횟수를 제한하여 시스템 리소스의 과도한 사용을 방지하고, 안정적인 재생 환경을 유지
  • Preload 완료 수 기준 프로그램 진행 딜레이(또는 대기): 방송 시작 전에 일정 수의 파일이 다운로드될 때까지 대기함으로써 초기 재생 타이밍 충돌을 방지 

두번째꺼는 솔직히 동시에 다운로드하는 파일이 최대 3개도 안될 것 같아 나에게는 해당이 되지 않지만, 걍 넣었다... 번외로 구글 드라이브 API에서는 사용량 제한이 당연히 존재하는데 100초당 2000건의 요청이라고 한다. mp3하나 다운로드 하는 것은 1개의 요청으로 간주됨 . 

사용자 계정 또는 프로젝트 별로 제한사항이 존재하니 아래 링크에서 확인해보자 

https://developers.google.com/drive/api/guides/limits?hl=ko

 

사용량 한도  |  Google Drive  |  Google for Developers

가격, 할당량 증가 요청 방법 등 Google Drive 할당량 및 한도에 대해 알아보세요.

developers.google.com

 

 

 

 

728x90

댓글