Skip to content

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

@toychip

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
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions