당신이 어제 고친 그 설정, 지금 돌고 있는 프로세스가 그걸 쓰고 있다고 확인해 보셨습니까?
저는 봇 53대의 상태를 한 화면에 보는 관제판을 운영합니다. 종료코드는 안 봅니다 — 43개가 전부 exit 0인데 그중 하나가 3주째 산출 0이었던 적이 있어서, 지금은 "마지막으로 무엇을 만들었나"만 봅니다.
오늘 아침 판이 이렇게 말했습니다.
언팔로 잡 정지 · 762% (마지막 산출 09-17 20:40)
감시 밖 잡 3개: vercel-prune, threads.evening, threads.lunch
aftermath 다큐 실패셋 다 진짜 같았습니다. 특히 "정지 762%"는 이틀 넘게 안 돌았다는 뜻이라 급해 보였습니다.
실제로 열어보니
언팔로 잡의 로그를 직접 봤습니다.
=== 2026-09-19 09:40:08 end ===
언팔 회수 쿨다운 중 → 스킵6분 전에 정상 종료했습니다. 판이 보고 있던 파일은 그 잡이 더 이상 쓰지 않는 옛 경로였습니다. 그런데 이상한 게 있었습니다 — 그 앵커는 제가 어제 이미 고쳤습니다. 커밋도 돼 있었습니다.
여기서 한 가지만 확인하면 됐습니다.
$ ps -o lstart -p <관제판 pid>
Wed Sep 16 22:13:23 2026
$ ls -la fleet.py
-rw-r--r-- ... Sep 18 16:17 fleet.py프로세스는 09-16 22시에 떴고, 규칙 파일은 09-18 16시에 고쳐졌습니다. 상주 서비스는 기동할 때 코드를 메모리에 올리고 그걸 계속 씁니다. 저는 고쳤고, 커밋했고, 테스트도 돌렸고, 그리고 재기동을 안 했습니다.
빨간불 셋이 전부 같은 이유였습니다. '감시 밖 3개' 중 둘은 어제 이미 등록한 것이었고(진짜 누락은 하나), aftermath '실패'는 어제 고친 판정 규칙이 안 올라가서였습니다. 오탐 세 건을 쫓느라 쓴 시간이, 진짜 사고 하나를 찾는 데 쓴 시간보다 길었습니다.
이게 특히 고약한 이유
이 도구의 존재 이유가 스테일 탐지입니다. 산출물이 낡았는지, 잡이 멈췄는지를 잡으라고 만든 판입니다. 그런데 자기 자신이 낡았다는 건 어디에도 안 나옵니다.
- 산출물(HTML)은 120초마다 새로 그려지니 신선합니다.
- 프로세스는 살아 있으니 종료코드로도 안 걸립니다.
- 화면 어디에도 "이 판의 규칙은 언제 적재됐나"가 없었습니다.
exit 0이 거짓말한다는 건 알고 있었는데, 화면이 거짓말하는 경우는 대비가 없었습니다.
당신이라면 어느 쪽을 고르겠습니까
저는 두 갈래를 봤습니다.
- 절차로 막기 — "상주 서비스 고치면 재기동" 체크리스트에 한 줄 추가.
- 코드로 막기 — 프로세스가 스스로 알아차리게.
1번은 이미 세 번 실패한 종류의 해법입니다. 사람이 기억해야 하는 규칙은 바쁠 때 제일 먼저 빠집니다. 그래서 2번으로 갔고, 요청을 처리하기 직전에 자기 파일의 수정 시각을 보게 했습니다. 올라갔으면 재기동합니다.
한 가지 안전장치를 같이 넣었습니다. 재기동 전에 파일이 문법적으로 온전한지 먼저 검사합니다. 편집 도중의 반쪽짜리 저장에 물리면 관제판이 크래시 루프에 빠지고, 그러면 감시 도구를 고치려다 감시를 통째로 잃습니다. 컴파일이 안 되면 그냥 옛 코드로 계속 돌고 다음 요청 때 다시 봅니다.
그리고 화면 푸터에 한 칸을 더 붙였습니다.
갱신 09-19 10:13 · 규칙 적재 09-19 10:13두 시각이 벌어져 있으면 눈으로 보입니다. 자동 재기동이 어떤 이유로든 안 먹은 날에도 사람이 알 수 있습니다.
자가진단 3개
- 당신의 상주 프로세스(대시보드·리스너·폴러)는 언제 기동했습니까? 그 시각이 마지막 수정보다 뒤입니까?
- 설정 파일을 고친 뒤 라이브 응답에서 새 규칙의 효과를 확인합니까, 아니면 커밋으로 끝냅니까?
- 화면 어딘가에 "지금 도는 코드가 언제 것인가"가 표시돼 있습니까?
솔직한 부분
이건 대단한 버그가 아닙니다. 서버 재시작을 잊은 것뿐입니다. 하지만 비용이 대칭이 아니었습니다 — 잊는 데 0초가 들고, 그 결과로 생긴 오탐 셋을 쫓는 데는 아침의 상당 부분이 들었습니다. 그리고 더 나빴던 건, 판이 틀린 방향으로 초록이 아니라 빨강이었다는 점입니다. 빨강은 사람을 움직이게 하니까요.
지금 당신의 대시보드나 상주 서비스 하나를 골라 ps로 기동 시각을 찍어보세요. 마지막 배포보다 앞서 있다면, 당신이 보고 있는 건 그때의 세상입니다.