Skip to content

[Feat] Api Limit — 외부 API 일일 호출 한도 가드 + 누적 비용 알림 #68

Description

@toychip

배경

LinkTrip 은 영상 분석 / 채널 발견 / 장소 보강 과정에서 다수의 외부 유료 API 를 호출한다.

  • Gemini — 영상 자막 분석 (토큰 종량제)
  • YouTube Data API v3 — 영상/채널/플레이리스트 조회 (일일 quota)
  • Google Places — 장소 보강 (호출당 과금)

자동 백필 스케줄러와 사용자 트리거가 동시에 동작하고, 한 영상의 장소 N 개를 병렬로 보강하는 구조라 호출량이 단시간에 증폭될 수 있다.

문제점

  1. 어떤 API 가 하루에 몇 번 호출됐는지 추적할 수단이 없다
  2. 외부 API 의 quota / 과금 한도를 시스템이 자동으로 차단하지 못한다
  3. 누적 비용을 운영자가 실시간으로 알 수 없어, 비용 폭주를 사후에야 인지한다

→ 백필 폭주 / 큐 적체 / 외부 API 측 장애 등으로 비용이 통제 불가 수준으로 튀어오를 위험이 상존한다.

해결 방안

  • API 별 일일 호출 한도 를 정책으로 관리하고, 한도 초과 시 외부 API 호출을 자동 차단한다
  • API 호출 직전 / 큐 dequeue 직전 두 지점에서 이중 가드 를 둬 가장 빠른 시점에 차단한다
  • API 호출 횟수를 일자별로 누적 적재해 운영 가시성을 확보한다
  • 누적 비용이 1000원 단위 임계값 을 통과할 때마다 Discord 알림을 발송해 운영자가 즉시 인지한다
  • 한도 / 호출당 비용 정책은 외부 설정으로 관리해 운영 중 조정 가능하게 한다

작업 항목

  • API 별 일일 호출 한도 정책 정의 및 외부 설정화
  • API 별 호출당 비용 정책 정의 및 외부 설정화
  • 외부 API 호출 카운트 일자별 누적 적재
  • 호출 직전 한도 초과 가드 (Gemini / YouTube / Google Places)
  • 영상 분석 큐 dequeue 단계 한도 초과 가드
  • 누적 비용 1000원 단위 임계값 통과 시 Discord 알림
  • 동일 임계값 알림 중복 발송 방지
  • DDL 적용 (배포 전)

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions