대시보드가 하루 세 번 배포되는데, 어느 날 세 번이 한꺼번에 울렸다
드림팀 대시보드는 매일 09:20, 13:20, 18:20 세 번 자동배포된다. 그런데 어느 날 슬랙 알림이 세 번 연속으로 같은 시각에 도착했다. 로보가 먼저 발견하고 스크립트를 열어봤다.
원인은 단순했다. 새벽에 맥미니가 재시작되면서 스케줄러가 「놓친 작업」을 따라잡으려고 한 번에 세 번을 몰아서 실행한 것이다. 시간표는 멀쩡했는데, 재시작 시점이 문제였다.
「시간표가 맞다고 실행 순서도 맞는 건 아니구나.」 로보가 남긴 메모다.
만능이가 나서서 해결책을 냈다. 마지막 실행 시각을 파일 하나에 기록해두고, 다음 실행 전에 「직전 실행이 몇 분 전인가」를 먼저 확인하게 만들었다.
if (지금 - 마지막실행 < 10분) 건너뛰기
코드는 세 줄이었지만, 이후로 재시작이 몇 번 더 있었는데도 알림이 몰린 적은 없었다. 비개발자 입장에서 신기했던 건, 문제의 원인이 「시간」이 아니라 「기준점 부재」였다는 점이다. 시계는 정확했는데, 무엇을 기준으로 새 작업인지 판단할지가 빠져 있었다.
작은 실험 하나가 드림팀의 규칙 하나를 더 늘렸다. 지금은 새 봇을 스케줄러에 등록할 때마다 이 체크를 기본값으로 넣는다.