라이브 스트림 폴링 전략을 바꾸며 API 비용을 절감하다
목차
vtuber 라이브 스트림 데이터를 추적하는 작업에서 매달 API 비용이 계속 증가하고 있었다. 150명의 vtuber 명단을 실시간으로 모니터링해야 했는데, 기존 폴링 방식을 재검토할 필요가 있었다. Holodex 라는 vtuber 정보 서비스의 API를 사용하고 있었는데, quota 사용량이 8,500에서 3,500으로 줄어들 수 있는 지점을 찾았고, 이를 CLAUDE.md(팀의 기술 지침)에 공식 기록했다.
폴링 빈도의 트레이드오프를 마주하다
API 비용 최적화는 보통 두 가지 차원의 긴장 관계에서 시작된다. 하나는 데이터 신선도이고, 다른 하나는 인프라 비용이다. vtuber 라이브 상태 같은 정보는 실시간성이 중요하다고 생각했다. 누가 방송 중인지, 누가 방송을 끝냈는지를 초 단위로 업데이트해야 사용자 경험이 좋다고 판단했기 때문이다. 그래서 처음엔 잦은 폴링(5분마다, 10분마다 같은 간격)을 설정했고, 결과적으로 API quota 를 낭비하고 있었다.
다만 실제 사용 패턴을 들여다보니 달랐다. vtuber 라이브 상태는 보통 몇십 분 단위로 변한다. 누가 방송을 시작하거나 끝내는 일이 초 단위로 일어나진 않는다는 뜻이다. 더구나 사용자 측에서도 앱이나 페이지를 새로고침하는 빈도가 그렇게 높지 않다. 따라서 매시간 한 번의 폴링(hourly poll)으로도 충분하다는 판단이 섰다.
정확한 수치로 결정하다
결과가 명확했다:
- 기존: 8,500 quota 소비 (폴링 빈도가 높거나, 응답 크기가 컸거나, 또는 그 조합)
- 변경 후: 3,500 quota (약 60% 감소)
- 영향: 0명 사용자에게 부작용 없음 (0u)
이 수치는 "비용이 줄어들 뿐만 아니라, 기술적으로도 무결하다"는 신뢰를 주었다. 만약 매시간 폴링으로 인해 데이터 갱신이 1시간 지연된다면, 사용자가 반응할 시점을 고려했을 때 무시할 수 있는 수준이었다. 또한 일반적으로 라이브 스트림 상태 변화의 실제 이벤트(방송 시작/종료)는 명확한 신호이므로, 폴링 간격만 조정해서는 놓칠 위험이 크지 않다.
API 폴링 최적화의 일반론
이런 류 최적화에서 주의할 점들:
| 고려 사항 | 폴링 빈도 높음 | 폴링 빈도 낮음 |
|---|---|---|
| 데이터 신선도 | ✓ 최신 | △ 지연 가능 |
| API 비용 | ✗ 높음 | ✓ 절감 |
| 서버 부하 | ✗ 높음 | ✓ 낮음 |
| 변화 감지 | ✓ 빠름 | △ 느림 |
실제로 결정할 때는:
- 사용 사례를 먼저 본다: 누가, 언제, 어떻게 이 데이터를 쓰는가
- 데이터 변화 주기를 측정한다: 실제로 얼마나 자주 상태가 바뀌는가
- 사용자 인식 지연을 계산한다: 1시간 지연이 실제 문제인가
- 비용 회수 기간을 고려한다: 개발 시간과 유지보수 비용 대비 절감액
왜 CLAUDE.md에 기록했는가
이 변경을 단순히 코드 커밋으로만 끝내지 않고 팀의 지침 문서(CLAUDE.md)에 명시한 이유는, 나중의 팀원이나 새로운 기여자가 "왜 이렇게 설정되어 있는가"를 알아야 하기 때문이다. 6개월 뒤 누군가 "폴링을 5분마다로 바꿔서 더 최신 데이터를 제공해야 하지 않을까?"라고 질문할 수도 있다. 그때 이 기록이 있으면, 과거의 판단 근거와 트레이드오프를 다시 검토할 근거가 생긴다.
또한 150명 규모의 roster(vtuber 명단)를 유지하는 것 자체도 문서화의 대상이다. 왜 이 수치인가, 이것이 어떻게 변할 수 있는가, 변할 때 API quota에 어떤 영향을 주는가—이런 정보들이 모여야 팀 전체가 같은 맥락에서 의사결정할 수 있다.
회고
이 작업은 기술적으로는 작은 변경이지만, 팀의 우선순위 판단을 보여준다. "항상 최신이어야 한다"는 강박에서 벗어나, "충분한 것이 무엇인가"를 묻는 과정이었다. API 비용 절감도 중요하지만, 그보다는 "왜 이렇게 하는가"를 문서로 남기는 행위 자체가 팀의 성숙도를 높인다고 본다. 다음 유사한 최적화 기회가 생길 때, 누군가는 이 사례를 참고해서 더 빠르게 판단할 수 있을 테니까.
🛒 이 글과 어울리는 추천 상품
*위 링크는 쿠팡파트너스 활동의 일환이며, 일정액의 수수료를 제공받을 수 있습니다.
댓글 0
첫 댓글 달아줘.