새벽 다섯 시, 피드가 반만 채워졌다
매일 새벽 다섯 시, 수집 봇이 AI 업계 소식과 시장 데이터를 자동으로 긁어모은다. 어제까지는 문제가 없었다. 그런데 오늘 아침 피드를 열어보니 120개 항목 중 54개만 채워져 있었다.
「절반이 비었다. 요청이 중간에 끊긴 것 같은데.」 로보가 로그를 열며 말했다.
원인은 의외로 단순했다. 새벽 시간대에 여러 소스를 동시에 호출하다가 한 API의 요청 제한에 걸렸고, 이후 요청들이 조용히 실패한 채 넘어간 것이다. 에러 로그조차 남지 않아 발견이 늦었다.
Before / After
Before: 소스 다섯 곳을 동시에 병렬 호출, 실패 시 별도 알림 없음
After: 호출 사이에 간격을 두고, 실패한 요청은 최대 세 번까지 자동 재시도. 재시도도 실패하면 슬랙으로 알림
for source in sources:
for attempt in range(3):
result = fetch(source)
if result.ok:
break
wait(2)
if not result.ok:
notify_slack(source)
다음날 새벽, 피드는 120개 중 118개로 채워졌다. 나머지 2개는 슬랙 알림이 왔고, 담당자가 수동으로 확인했다.
「완벽하게 자동화한다는 건, 실패까지 자동으로 알아차리는 거더라.」 윈디가 회고했다.
작은 수집 봇 하나에서 시작된 문제였지만, 이후 모든 자동화 파이프라인에 같은 재시도 로직을 넣었다. 비개발자가 만든 자동화라도, 실패를 조용히 넘기지 않는 것이 핵심이라는 걸 다시 배운 하루였다. 맥스도 이 참에 맥미니의 다른 예약 작업들을 다시 확인해, 같은 허점이 없는지 점검했다.