그룹 수집 요청 과다로 인한 API 오류 차단
목차
외부 서비스와 연동하는 자동화 봇을 운영하다 보면 정기적으로 데이터를 수집해야 하는데, 이때 가장 자주 마주치는 문제가 API 레이트 제한이다. 이번엔 그룹 데이터를 수집하는 seed_groups 자동화에서 발생하던 429 에러(Too Many Requests)를 해결하기 위해 요청 throttle을 상향하고, 동시에 불필요한 데이터를 조기에 필터링했다.
문제 상황
외부 API는 대부분 초당 또는 분당 요청 수 제한을 두고 있다. 이는 서비스 안정성을 위한 당연한 방어 메커니즘인데, 이 제한을 초과하면 429 응답을 받게 된다. 초기 설정에서는 throttle이 충분하지 않아, 자동화 봇이 그룹을 빠르게 수집하려다 보니 API 제한에 걸리고 있었다.
모니터링 로그를 보면:
- 주기적으로 429 에러가 반복 발생 중
- 수집 작업이 불완전하게 종료되거나 지연됨
- 재시도 메커니즘에 따른 처리 시간 증가
- 전체 자동화 파이프라인의 신뢰성 저하
초기 접근은 "재시도 로직을 강화하면 되지 않을까"였지만, 근본 원인은 요청 속도 자체였다. 무한정 빠르게 요청하다가 실패하고 다시 시도하는 것은 외부 API에 더 큰 부담을 주는 악순환이다.
해결 방법
Throttle 상향 (2.5s / 0.5s)
요청 사이 대기 시간을 명시적으로 설정했다:
- 개별 요청 간 간격: 2.5초
- 배치 또는 폴링 간격: 0.5초
이를 통해:
- 외부 API의 rate limit을 충분히 준수
- 짧은 시간 내 과도한 요청 방지
- 안정적이고 일관된 데이터 수집 보장
throttle을 설정할 때는 단순히 "충분히 길게"가 아니라, 외부 API의 구체적인 제한값을 파악하고 그보다 여유 있게 설정하는 게 중요하다. 예를 들어 API가 분당 24개 요청을 허용한다면, 2.5초 간격은 충분히 안전한 수준이다.
추출 후 비한국 그룹 Skip
수집한 데이터 중 국내 대상이 아닌 그룹들을 필터링했다. 이건 단순히 "불필요한 데이터를 버리는 것"이 아니라, 파이프라인 효율성의 관점에서 중요한 최적화다:
| 항목 | 이전 | 이후 |
|---|---|---|
| 처리되는 그룹 수 | 전체 (국내+국외) | 국내만 |
| API 호출 또는 DB 조회 | 모든 그룹에 대해 | 필터링 후만 |
| 처리 시간 | 상대적 길음 | 단축 |
| 불필요한 리소스 소비 | 있음 | 제거됨 |
이런 조기 필터링(early filtering) 패턴은 데이터 파이프라인에서 자주 쓰이는 최적화 기법이다. "우리가 쓸 데이터만 처리한다"는 원칙을 적용하면 불필요한 I/O와 메모리 사용을 크게 줄 수 있다. 특히 자동화 봇은 야간이나 정해진 시간에 주기적으로 실행되기 때문에, 리소스 효율성이 누적되면 비용 절감으로도 이어진다.
배운 점과 일반화
외부 API 통합의 필수 체크리스트
- Rate limit 파악: API 문서에서 초당/분당 요청 제한 확인
- Throttle/Backoff 설계: 제한값을 기반으로 요청 간격 설정
- 429 응답 처리: 단순 재시도보다는 대기 시간 증가 + exponential backoff 고려
- 모니터링 + 알림: 429 에러가 반복되면 설정 검토 신호로 봐야 함
데이터 파이프라인 설계 원칙
- 조기에 불필요한 데이터 버려서 downstream 부하 줄이기
- 필터링 기준을 코드에 명확하게 기록 ("왜 이 데이터를 버리는가?")
- 필터링된 개수를 로깅하여 나중에 추적/검증 가능하도록
팀 관점의 의사결정
외부 API 문제로 자동화가 실패하면 팀 전체의 업무 흐름에 영향을 준다. 따라서:
- 429 같은 반복 에러는 "재시도로 견디는" 게 아니라 근본 원인(throttle 부족)을 수정해야 함
- 자동화 봇의 신뢰성이 낮으면 팀원들이 "혹시 모르니 수동으로 다시 확인"하게 되고, 이는 수작업 증가로 귀결됨
- 설정 변경 후엔 충분한 기간 모니터링해서 안정성 확인 필수
초기에 어떤 설정이 옳은 답인지 불확실할 때는 보수적으로 여유 있게(느리게) 설정하고, 모니터링하면서 점진적으로 조정하는 게 현명하다. 반대로 "빠르면 좋지 않을까"라고 욕심내다가 429 에러를 계속 만나는 것보다는, 안정성을 우선으로 두고 나중에 문제가 생기면 그때 최적화하는 게 훨씬 건강한 접근이다.
🛒 이 글과 어울리는 추천 상품
*위 링크는 쿠팡파트너스 활동의 일환이며, 일정액의 수수료를 제공받을 수 있습니다.
댓글 0
첫 댓글 달아줘.