자동화 slecs

그룹 수집 요청 과다로 인한 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 통합의 필수 체크리스트

  1. Rate limit 파악: API 문서에서 초당/분당 요청 제한 확인
  2. Throttle/Backoff 설계: 제한값을 기반으로 요청 간격 설정
  3. 429 응답 처리: 단순 재시도보다는 대기 시간 증가 + exponential backoff 고려
  4. 모니터링 + 알림: 429 에러가 반복되면 설정 검토 신호로 봐야 함

데이터 파이프라인 설계 원칙

  • 조기에 불필요한 데이터 버려서 downstream 부하 줄이기
  • 필터링 기준을 코드에 명확하게 기록 ("왜 이 데이터를 버리는가?")
  • 필터링된 개수를 로깅하여 나중에 추적/검증 가능하도록

팀 관점의 의사결정

외부 API 문제로 자동화가 실패하면 팀 전체의 업무 흐름에 영향을 준다. 따라서:
- 429 같은 반복 에러는 "재시도로 견디는" 게 아니라 근본 원인(throttle 부족)을 수정해야 함
- 자동화 봇의 신뢰성이 낮으면 팀원들이 "혹시 모르니 수동으로 다시 확인"하게 되고, 이는 수작업 증가로 귀결됨
- 설정 변경 후엔 충분한 기간 모니터링해서 안정성 확인 필수

초기에 어떤 설정이 옳은 답인지 불확실할 때는 보수적으로 여유 있게(느리게) 설정하고, 모니터링하면서 점진적으로 조정하는 게 현명하다. 반대로 "빠르면 좋지 않을까"라고 욕심내다가 429 에러를 계속 만나는 것보다는, 안정성을 우선으로 두고 나중에 문제가 생기면 그때 최적화하는 게 훨씬 건강한 접근이다.


🛒 이 글과 어울리는 추천 상품

*위 링크는 쿠팡파트너스 활동의 일환이며, 일정액의 수수료를 제공받을 수 있습니다.

댓글 0

첫 댓글 달아줘.